<?php

use App\Libs\Facades\Localization;

if (!function_exists('translation')) {
    function translation($id, $default = null, $parameters = array(), $domain = 'messages', $locale = null)
    {
        $translator = app('translator');
        if (!$translator->has($id, $locale) && !empty($default)) {
            return $default;
        } else {
            return trans($id, $parameters, $domain, $locale);
        }
    }
}

if (!function_exists('generateLangRules')) {
    function generateLangRules($rules, $langs, $subField = null)
    {
        $langRules = array();
        foreach ($rules as $field => $rule) {
            foreach ($langs as $lang) {
                if ($subField) {
                    $langRules[$field.'.'.$lang->id.'.'.$subField] = $rule;
                } else {
                    $langRules[$field.'.'.$lang->id] = $rule;
                }
            }
        }
        return $langRules;
    }
}

if (!function_exists('generateLangLabels')) {
    function generateLangLabels($field, $label, $langs, $subField = null)
    {
        $labels = array();
        foreach ($langs as $lang) {
            if ($subField) {
                $labels[$field.'.'.$lang->id.'.'.$subField] = $label;
            } else {
                $labels[$field.'.'.$lang->id] = $label;
            }
        }

        return $labels;
    }
}

if (!function_exists('getLangField')) {
    function getLangField($model, $field, $lang)
    {
        if (!$model || !$model->languages) {
            return '';
        }
        $modelLanguages = $model->languages;
        foreach ($modelLanguages as $modelLanguage) {
            if ($modelLanguage->language_id == $lang) {
                return $modelLanguage->$field;
            }
        }
        return '';
    }
}

if (!function_exists('lang_url')) {
    function lang_url($url = null, $locale = null)
    {
        return Localization::getLocalizedURL($locale, $url);
    }
}

if (!function_exists('get_frontend_translations')) {
    function get_frontend_translations()
    {
        $keys = config('translations.frontend_keys');
        $translations = [];

        foreach ($keys as $key) {
            $translations[$key] = trans("frontend.$key");
        }

        return $translations;
    }
}
