Add network_agent_id in wallet infos
This commit is contained in:
parent
556a94c705
commit
9f48eef0f3
|
@ -80,9 +80,9 @@ class Handler extends ExceptionHandler
|
|||
if ($exception instanceof ValidationException) {
|
||||
$errors = $exception->validator->errors()->getMessages();
|
||||
$message = '';
|
||||
foreach ($errors as $key => $val) {
|
||||
foreach ($errors as $val) {
|
||||
foreach ($val as $validation) {
|
||||
$message .= trans('errors.validation_error', ['field' => $key, 'validation' => $validation]);
|
||||
$message .= $validation . "\n";
|
||||
}
|
||||
$message .= "\n";
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ class WalletController extends Controller
|
|||
public function activated($id_agent)
|
||||
{
|
||||
$networks = DB::select('SELECT ne.name as network , cc.name AS country, cc.code_country, cc.currency_code, w.id, w.balance_princ , w.balance_com, w.created_date, cw.type,
|
||||
na.id AS id_networkAgent , cw.taux_com_client_depot , na.id AS id_networkAgent , cg.category , cw.has_nano_credit FROM agents ag
|
||||
cw.taux_com_client_depot , na.id AS network_agent_id , cg.category , cw.has_nano_credit FROM agents ag
|
||||
INNER JOIN networks_agents na ON ag.id=na.agent_id INNER JOIN codeGenerer cg ON cg.id=na.codeGenerer_id INNER JOIN networks ne ON ne.id=na.network_id INNER JOIN configWallet cw ON ne.id = cw.id_network
|
||||
INNER JOIN countries_currencies cc ON ne.country_id=cc.id LEFT JOIN wallets w ON na.id = w.id_networkAgent WHERE ag.id= :id AND network_id IN (
|
||||
SELECT networks.id FROM networks LEFT JOIN configWallet ON configWallet.id_network = networks.id WHERE status = 1 AND id_network IS NOT NULL)', ['id' => $id_agent]);
|
||||
|
@ -49,7 +49,7 @@ class WalletController extends Controller
|
|||
// Create wallet if is not exist
|
||||
if (!$network->id) {
|
||||
$datetime = $this->getCurrentTimeByCountryCode($network->code_country);
|
||||
DB::insert('INSERT INTO wallets (id_networkAgent , created_date) VALUES (? , ?);', [$network->id_networkAgent, $datetime]);
|
||||
DB::insert('INSERT INTO wallets (id_networkAgent , created_date) VALUES (? , ?);', [$network->network_agent_id, $datetime]);
|
||||
$reload = true;
|
||||
}
|
||||
}
|
||||
|
@ -61,11 +61,11 @@ class WalletController extends Controller
|
|||
// Return only single wallet if it is hypervisor or supervisor
|
||||
if (in_array($category, ['hyper', 'super'])) {
|
||||
// Remove unnecessary fields
|
||||
$networks = $this->array_except($networks, ['id_networkAgent', 'category']);
|
||||
$networks = $this->array_except($networks, ['category']);
|
||||
return $this->successResponse(collect($networks)->first());
|
||||
} else {
|
||||
// Remove unnecessary fields
|
||||
$networks = $this->array_except($networks, ['id_networkAgent', 'category', 'balance_princ', 'balance_com', 'created_date', 'taux_com_client_depot']);
|
||||
$networks = $this->array_except($networks, ['category', 'balance_princ', 'balance_com', 'created_date', 'taux_com_client_depot']);
|
||||
return $this->successResponse($networks);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||
|
||||
/**
|
||||
* Class AgentPlus
|
||||
*
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $uid
|
||||
* @property string $firstname
|
||||
|
@ -36,6 +36,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||
* @property int $network_id
|
||||
* @property string $code_dial
|
||||
* @property string $transactionNumber
|
||||
* @property int $network_agent_id
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
|
@ -46,15 +47,16 @@ class AgentPlus extends Model
|
|||
public $timestamps = false;
|
||||
|
||||
protected $casts = [
|
||||
'id' => 'int',
|
||||
'longitude' => 'float',
|
||||
'latitude' => 'float',
|
||||
'active' => 'int',
|
||||
'solde' => 'float',
|
||||
'etat' => 'int',
|
||||
'number_geoBysuper' => 'int',
|
||||
'network_id' => 'int'
|
||||
];
|
||||
'id' => 'int',
|
||||
'longitude' => 'float',
|
||||
'latitude' => 'float',
|
||||
'active' => 'int',
|
||||
'solde' => 'float',
|
||||
'etat' => 'int',
|
||||
'number_geoBysuper' => 'int',
|
||||
'network_id' => 'int',
|
||||
'network_agent_id' => 'int'
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'created',
|
||||
|
@ -76,16 +78,17 @@ class AgentPlus extends Model
|
|||
'created',
|
||||
'openHours',
|
||||
'closeHours',
|
||||
'solde',
|
||||
'etat',
|
||||
'network',
|
||||
'country',
|
||||
'code_parrain',
|
||||
'category',
|
||||
'code_membre',
|
||||
'number_geoBysuper',
|
||||
'network_id',
|
||||
'code_dial',
|
||||
'transactionNumber'
|
||||
];
|
||||
'solde',
|
||||
'etat',
|
||||
'network',
|
||||
'country',
|
||||
'code_parrain',
|
||||
'category',
|
||||
'code_membre',
|
||||
'number_geoBysuper',
|
||||
'network_id',
|
||||
'code_dial',
|
||||
'transactionNumber',
|
||||
'network_agent_id'
|
||||
];
|
||||
}
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_equals' => 'The :attribute must be a date equal to :date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'dimensions' => 'The :attribute has invalid image dimensions.',
|
||||
'distinct' => 'The :attribute field has a duplicate value.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'ends_with' => 'The :attribute must end with one of the following: :values',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'file' => 'The :attribute must be a file.',
|
||||
'filled' => 'The :attribute field must have a value.',
|
||||
'gt' => [
|
||||
'numeric' => 'The :attribute must be greater than :value.',
|
||||
'file' => 'The :attribute must be greater than :value kilobytes.',
|
||||
'string' => 'The :attribute must be greater than :value characters.',
|
||||
'array' => 'The :attribute must have more than :value items.',
|
||||
],
|
||||
'gte' => [
|
||||
'numeric' => 'The :attribute must be greater than or equal :value.',
|
||||
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
|
||||
'string' => 'The :attribute must be greater than or equal :value characters.',
|
||||
'array' => 'The :attribute must have :value items or more.',
|
||||
],
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'in_array' => 'The :attribute field does not exist in :other.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'ipv4' => 'The :attribute must be a valid IPv4 address.',
|
||||
'ipv6' => 'The :attribute must be a valid IPv6 address.',
|
||||
'json' => 'The :attribute must be a valid JSON string.',
|
||||
'lt' => [
|
||||
'numeric' => 'The :attribute must be less than :value.',
|
||||
'file' => 'The :attribute must be less than :value kilobytes.',
|
||||
'string' => 'The :attribute must be less than :value characters.',
|
||||
'array' => 'The :attribute must have less than :value items.',
|
||||
],
|
||||
'lte' => [
|
||||
'numeric' => 'The :attribute must be less than or equal :value.',
|
||||
'file' => 'The :attribute must be less than or equal :value kilobytes.',
|
||||
'string' => 'The :attribute must be less than or equal :value characters.',
|
||||
'array' => 'The :attribute must not have more than :value items.',
|
||||
],
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'mimetypes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'not_regex' => 'The :attribute format is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'password' => 'The password is incorrect.',
|
||||
'present' => 'The :attribute field must be present.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_unless' => 'The :attribute field is required unless :other is in :values.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values are present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
'starts_with' => 'The :attribute must start with one of the following: :values',
|
||||
'string' => 'The :attribute must be a string.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'uploaded' => 'The :attribute failed to upload.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'uuid' => 'The :attribute must be a valid UUID.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap our attribute placeholder
|
||||
| with something more reader friendly such as "E-Mail Address" instead
|
||||
| of "email". This simply helps us make our message more expressive.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
|
@ -0,0 +1,168 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
return [
|
||||
'accepted' => 'Le champ :attribute doit être accepté.',
|
||||
'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.',
|
||||
'active_url' => 'Le champ :attribute n\'est pas une URL valide.',
|
||||
'after' => 'Le champ :attribute doit être une date postérieure au :date.',
|
||||
'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.',
|
||||
'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.',
|
||||
'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.',
|
||||
'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.',
|
||||
'array' => 'Le champ :attribute doit être un tableau.',
|
||||
'attached' => ':attribute est déjà attaché(e).',
|
||||
'before' => 'Le champ :attribute doit être une date antérieure au :date.',
|
||||
'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.',
|
||||
'between' => [
|
||||
'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.',
|
||||
'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.',
|
||||
],
|
||||
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
|
||||
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
|
||||
'current_password' => 'Le mot de passe est incorrect.',
|
||||
'date' => 'Le champ :attribute n\'est pas une date valide.',
|
||||
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
|
||||
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
|
||||
'declined' => 'Le champ :attribute doit être décliné.',
|
||||
'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.',
|
||||
'different' => 'Les champs :attribute et :other doivent être différents.',
|
||||
'digits' => 'Le champ :attribute doit contenir :digits chiffres.',
|
||||
'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.',
|
||||
'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.',
|
||||
'distinct' => 'Le champ :attribute a une valeur en double.',
|
||||
'email' => 'Le champ :attribute doit être une adresse e-mail valide.',
|
||||
'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values',
|
||||
'exists' => 'Le champ :attribute sélectionné est invalide.',
|
||||
'file' => 'Le champ :attribute doit être un fichier.',
|
||||
'filled' => 'Le champ :attribute doit avoir une valeur.',
|
||||
'gt' => [
|
||||
'array' => 'Le tableau :attribute doit contenir plus de :value éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être supérieure à :value.',
|
||||
'string' => 'Le texte :attribute doit contenir plus de :value caractères.',
|
||||
],
|
||||
'gte' => [
|
||||
'array' => 'Le tableau :attribute doit contenir au moins :value éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.',
|
||||
'string' => 'Le texte :attribute doit contenir au moins :value caractères.',
|
||||
],
|
||||
'image' => 'Le champ :attribute doit être une image.',
|
||||
'in' => 'Le champ :attribute est invalide.',
|
||||
'in_array' => 'Le champ :attribute n\'existe pas dans :other.',
|
||||
'integer' => 'Le champ :attribute doit être un entier.',
|
||||
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
|
||||
'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.',
|
||||
'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.',
|
||||
'json' => 'Le champ :attribute doit être un document JSON valide.',
|
||||
'lt' => [
|
||||
'array' => 'Le tableau :attribute doit contenir moins de :value éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être inférieure à :value.',
|
||||
'string' => 'Le texte :attribute doit contenir moins de :value caractères.',
|
||||
],
|
||||
'lte' => [
|
||||
'array' => 'Le tableau :attribute doit contenir au plus :value éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.',
|
||||
'string' => 'Le texte :attribute doit contenir au plus :value caractères.',
|
||||
],
|
||||
'max' => [
|
||||
'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.',
|
||||
'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.',
|
||||
'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.',
|
||||
],
|
||||
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
|
||||
'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.',
|
||||
'min' => [
|
||||
'array' => 'Le tableau :attribute doit contenir au moins :min éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.',
|
||||
'string' => 'Le texte :attribute doit contenir au moins :min caractères.',
|
||||
],
|
||||
'multiple_of' => 'La valeur de :attribute doit être un multiple de :value',
|
||||
'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.',
|
||||
'not_regex' => 'Le format du champ :attribute n\'est pas valide.',
|
||||
'numeric' => 'Le champ :attribute doit contenir un nombre.',
|
||||
'password' => 'Le mot de passe est incorrect',
|
||||
'present' => 'Le champ :attribute doit être présent.',
|
||||
'prohibited' => 'Le champ :attribute est interdit.',
|
||||
'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.',
|
||||
'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :values.',
|
||||
'prohibits' => 'Le champ :attribute interdit :other d\'être présent.',
|
||||
'regex' => 'Le format du champ :attribute est invalide.',
|
||||
'relatable' => ':attribute n\'est sans doute pas associé(e) avec cette donnée.',
|
||||
'required' => 'Le champ :attribute est obligatoire.',
|
||||
'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.',
|
||||
'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.',
|
||||
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
|
||||
'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.',
|
||||
'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.',
|
||||
'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.',
|
||||
'same' => 'Les champs :attribute et :other doivent être identiques.',
|
||||
'size' => [
|
||||
'array' => 'Le tableau :attribute doit contenir :size éléments.',
|
||||
'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.',
|
||||
'numeric' => 'La valeur de :attribute doit être :size.',
|
||||
'string' => 'Le texte de :attribute doit contenir :size caractères.',
|
||||
],
|
||||
'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values',
|
||||
'string' => 'Le champ :attribute doit être une chaîne de caractères.',
|
||||
'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.',
|
||||
'unique' => 'La valeur du champ :attribute est déjà utilisée.',
|
||||
'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.',
|
||||
'url' => 'Le format de l\'URL de :attribute n\'est pas valide.',
|
||||
'uuid' => 'Le champ :attribute doit être un UUID valide',
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
'attributes' => [
|
||||
'address' => 'adresse',
|
||||
'age' => 'âge',
|
||||
'available' => 'disponible',
|
||||
'city' => 'ville',
|
||||
'content' => 'contenu',
|
||||
'country' => 'pays',
|
||||
'current_password' => 'mot de passe actuel',
|
||||
'date' => 'date',
|
||||
'day' => 'jour',
|
||||
'description' => 'description',
|
||||
'email' => 'adresse e-mail',
|
||||
'excerpt' => 'extrait',
|
||||
'first_name' => 'prénom',
|
||||
'gender' => 'genre',
|
||||
'hour' => 'heure',
|
||||
'last_name' => 'nom',
|
||||
'minute' => 'minute',
|
||||
'mobile' => 'portable',
|
||||
'month' => 'mois',
|
||||
'name' => 'nom',
|
||||
'password' => 'mot de passe',
|
||||
'password_confirmation' => 'confirmation du mot de passe',
|
||||
'phone' => 'téléphone',
|
||||
'second' => 'seconde',
|
||||
'sex' => 'sexe',
|
||||
'size' => 'taille',
|
||||
'time' => 'heure',
|
||||
'title' => 'titre',
|
||||
'username' => 'nom d\'utilisateur',
|
||||
'year' => 'année',
|
||||
],
|
||||
];
|
Loading…
Reference in New Issue