ldc-bogt/app/Lib/CafelApi/Models/CafelEggBreeder.php
Jérémy Munsch cb6778adb3
Validate Ede_Code as unique on Egg breeder Cafel
Add unique on Egg breeders code ede
2022-10-27 16:15:10 +02:00

97 lines
3.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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'
];
}