97 lines
3.5 KiB
PHP
97 lines
3.5 KiB
PHP
<?php
|
||
|
||
namespace App\Lib\CafelApi\Models;
|
||
|
||
use App\Enums\BreederCivilty;
|
||
use Kwaadpepper\Enum\Rules\EnumIsValidRule;
|
||
|
||
/**
|
||
*
|
||
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
|
||
*/
|
||
abstract class CafelEggBreeder extends CafelClientModel
|
||
{
|
||
/**
|
||
* Unique columns key
|
||
*
|
||
* @var array
|
||
*/
|
||
public const UNIQUE_COLUMN_KEYS = [
|
||
'cafel_code', 'ede_code'
|
||
];
|
||
|
||
/**
|
||
* Validation rules from cafel Api
|
||
*
|
||
* @var array
|
||
*/
|
||
protected static $validationRules = [
|
||
'cafel_code' => 'required|numeric|min:0',
|
||
/**
|
||
* Un numéro d’identification attribué à l’exploitation
|
||
* Un ou des codes œuf qui sont composés de la façon suivante :
|
||
* Un chiffre compris entre 0 et 3 qui désigne le mode d’élevage
|
||
* (
|
||
* 0 pour la production biologique,
|
||
* 1 pour la production en plein air,
|
||
* 2 pour la production au sol,
|
||
* 3 pour la production en cages
|
||
* )
|
||
* 2 lettres qui représentent le code iso du pays de production (FR pour la France)
|
||
* 3 lettres qui désignent le site d’élevage.
|
||
* Tous les ateliers d’une même exploitation possèdent la même combinaison de lettres
|
||
* 2 chiffres qui représentent le numéro d’ordre de chaque atelier dans une même exploitation
|
||
* eg : 1FRZFC01
|
||
*/
|
||
'ede_code' => 'required|regex:/^[0-3][A-Z]{5}\d\d$/',
|
||
// Valeurs possibles pour civility : 1 M, 2 MME, 3 EUX, 4 ELLES .
|
||
'civility' => ['required', [EnumIsValidRule::class, BreederCivilty::class]],
|
||
'lastname' => 'required|string|min:1|max:255',
|
||
'firstname' => 'required|string|min:1|max:255',
|
||
'birth_date' => 'required|date_format:Y-m-d',
|
||
'postcode' => 'required|numeric',
|
||
'city' => 'required|string|min:1|max:255',
|
||
'date_start_operation' => 'required|date_format:Y-m-d',
|
||
'inuavs' => 'required|array',
|
||
// Eg V072FXT (un seul par ligne).
|
||
'inuavs.*' => 'required|string|regex:/^[A-Z]\d{3}[A-Z]{3}$/',
|
||
'exploitation' => 'nullable|string',
|
||
'aboutyou' => 'nullable|string',
|
||
'vocation' => 'nullable|string',
|
||
'likeinjob' => 'nullable|string',
|
||
'loue_means' => 'nullable|string',
|
||
'path_picture_1' => 'nullable|string|regex:/^https:\/\/base\.loue\.fr\/api\/ldc\/photoEleveur\?idPhoto=\d+$/',
|
||
'path_picture_2' => 'nullable|string|regex:/^https:\/\/base\.loue\.fr\/api\/ldc\/photoEleveur\?idPhoto=\d+$/',
|
||
'marking_egg' => 'required|string|min:1|max:12',
|
||
'marking_b1' => 'required|string|min:1|max:14',
|
||
'marking_b2' => 'required|string|min:1|max:14'
|
||
];
|
||
|
||
/**
|
||
* Column translations
|
||
*
|
||
* @var array
|
||
*/
|
||
protected static $columnsTranslations = [
|
||
'Cafel_code' => 'cafel_code',
|
||
'Ede_code' => 'ede_code',
|
||
'Civility' => 'civility',
|
||
'Lastname' => 'lastname',
|
||
'Firstname' => 'firstname',
|
||
'Birthday' => 'birth_date',
|
||
'Postcode' => 'postcode',
|
||
'City' => 'city',
|
||
'Date_start_operation' => 'date_start_operation',
|
||
'Inuav_code' => 'inuavs',
|
||
'Issue_1' => 'exploitation',
|
||
'Issue_2' => 'aboutyou',
|
||
'Issue_3' => 'vocation',
|
||
'Issue_4' => 'likeinjob',
|
||
'Issue_5' => 'loue_means',
|
||
'Picture_1_url' => 'path_picture_1',
|
||
'Picture_2_url' => 'path_picture_2',
|
||
'Egg_marking' => 'marking_egg',
|
||
'Box_marking_1' => 'marking_b1',
|
||
'Box_marking_2' => 'marking_b2'
|
||
];
|
||
}
|