diff --git a/app/Enums/Department.php b/app/Enums/Department.php new file mode 100644 index 0000000..281a944 --- /dev/null +++ b/app/Enums/Department.php @@ -0,0 +1,354 @@ + + */ + protected static function values(): array + { + return [ + 'ain' => 1, + 'aisne' => 2, + 'allier' => 3, + 'alpesDeHauteProvence' => 4, + 'hautesAlpes' => 5, + 'alpesMaritimes' => 6, + 'ardeche' => 7, + 'ardennes' => 8, + 'ariege' => 9, + 'aube' => 10, + 'aude' => 11, + 'aveyron' => 12, + 'bouchesDuRhone' => 13, + 'calvados' => 14, + 'cantal' => 15, + 'charenteeme' => 16, + 'charenteMaritime' => 17, + 'cher' => 18, + 'correze' => 19, + 'corseDuSud' => '2A', + 'hauteCorse' => '2B', + 'coteDor' => 21, + 'cotesDarmor' => 22, + 'creuse' => 23, + 'dordogne' => 24, + 'doubs' => 25, + 'drome' => 26, + 'eure' => 27, + 'eureEtLoir' => 28, + 'finistere' => 29, + 'gard' => 30, + 'hauteGaronne' => 31, + 'gers' => 32, + 'gironde' => 33, + 'herault' => 34, + 'illeEtVilaine' => 35, + 'indre' => 36, + 'indreEtLoire' => 37, + 'isere' => 38, + 'jura' => 39, + 'landes' => 40, + 'loirEtCher' => 41, + 'loire' => 42, + 'hauteLoire' => 43, + 'loireAtlantique' => 44, + 'loiret' => 45, + 'lot' => 46, + 'lotEtGaronne' => 47, + 'lozere' => 48, + 'maineEtLoire' => 49, + 'manche' => 50, + 'marne' => 51, + 'hauteMarne' => 52, + 'mayenne' => 53, + 'meurtheEtMoselle' => 54, + 'meuse' => 55, + 'morbihan' => 56, + 'moselle' => 57, + 'nievre' => 58, + 'nord' => 59, + 'oise' => 60, + 'orne' => 61, + 'pasDeCalais' => 62, + 'puyDeDome' => 63, + 'pyreneesAtlantiques' => 64, + 'hautesPyrenees' => 65, + 'pyreneesOrientales' => 66, + 'basRhin' => 67, + 'hautRhin' => 68, + 'rhone' => 69, + 'hauteSaone' => 70, + 'saoneEtLoire' => 71, + 'sarthe' => 72, + 'savoie' => 73, + 'hauteSavoie' => 74, + 'paris' => 75, + 'seineMaritime' => 76, + 'seineEtMarne' => 77, + 'yvelines' => 78, + 'deuxSevres' => 79, + 'somme' => 80, + 'tarn' => 81, + 'tarnEtGaronne' => 82, + 'var' => 83, + 'vaucluse' => 84, + 'vendee' => 85, + 'vienne' => 86, + 'hauteVienne' => 87, + 'vosges' => 88, + 'yonne' => 89, + 'territoireDeBelfort' => 90, + 'essonne' => 91, + 'hautsDeSeine' => 92, + 'seineSaintDenis' => 93, + 'valDeMarne' => 94, + 'valDoise' => 95, + 'guadeloupe' => 971, + 'martinique' => 972, + 'guyane' => 973, + 'laReunion' => 974, + 'saintPierreEtMiquelon' => 975, + 'mayotte' => 976, + 'saintBarthelemy' => 977, + 'saintMartin' => 978, + 'wallisEtFutuna' => 986, + 'polynesieFrancaise' => 987, + 'nouvelleCaledonie' => 988 + ]; + } + + /** + * Enum labels + * + * @return array + */ + protected static function labels(): array + { + return [ + 'ain' => 'Ain', + 'aisne' => 'Aisne', + 'allier' => 'Allier', + 'alpesDeHauteProvence' => 'Alpes-de-Haute-Provence', + 'hautesAlpes' => 'Hautes-alpes', + 'alpesMaritimes' => 'Alpes-maritimes', + 'ardeche' => 'Ardèche', + 'ardennes' => 'Ardennes', + 'ariege' => 'Ariège', + 'aube' => 'Aube', + 'aude' => 'Aude', + 'aveyron' => 'Aveyron', + 'bouchesDuRhone' => 'Bouches-du-Rhône', + 'calvados' => 'Calvados', + 'cantal' => 'Cantal', + 'charenteeme' => 'Charenteême', + 'charenteMaritime' => 'Charente-maritime', + 'cher' => 'Cher', + 'correze' => 'Corrèze', + 'corseDuSud' => 'Corse-du-sud', + 'hauteCorse' => 'Haute-Corse', + 'coteDor' => 'Côte-d\'Or', + 'cotesDarmor' => 'Côtes-d\'Armor', + 'creuse' => 'Creuse', + 'dordogne' => 'Dordogne', + 'doubs' => 'Doubs', + 'drome' => 'Drôme', + 'eure' => 'Eure', + 'eureEtLoir' => 'Eure-et-loir', + 'finistere' => 'Finistère', + 'gard' => 'Gard', + 'hauteGaronne' => 'Haute-garonne', + 'gers' => 'Gers', + 'gironde' => 'Gironde', + 'herault' => 'Hérault', + 'illeEtVilaine' => 'Ille-et-vilaine', + 'indre' => 'Indre', + 'indreEtLoire' => 'Indre-et-loire', + 'isere' => 'Isère', + 'jura' => 'Jura', + 'landes' => 'Landes', + 'loirEtCher' => 'Loir-et-cher', + 'loire' => 'Loire', + 'hauteLoire' => 'Haute-loire', + 'loireAtlantique' => 'Loire-atlantique', + 'loiret' => 'Loiret', + 'lot' => 'Lot', + 'lotEtGaronne' => 'Lot-et-garonne', + 'lozere' => 'Lozère', + 'maineEtLoire' => 'Maine-et-loire', + 'manche' => 'Manche', + 'marne' => 'Marne', + 'hauteMarne' => 'Haute-marne', + 'mayenne' => 'Mayenne', + 'meurtheEtMoselle' => 'Meurthe-et-moselle', + 'meuse' => 'Meuse', + 'morbihan' => 'Morbihan', + 'moselle' => 'Moselle', + 'nievre' => 'Nièvre', + 'nord' => 'Nord', + 'oise' => 'Oise', + 'orne' => 'Orne', + 'pasDeCalais' => 'Pas-de-calais', + 'puyDeDome' => 'Puy-de-dôme', + 'pyreneesAtlantiques' => 'Pyrénées-atlantiques', + 'hautesPyrenees' => 'Hautes-Pyrénées', + 'pyreneesOrientales' => 'Pyrénées-orientales', + 'basRhin' => 'Bas-rhin', + 'hautRhin' => 'Haut-rhin', + 'rhone' => 'Rhône', + 'hauteSaone' => 'Haute-saône', + 'saoneEtLoire' => 'Saône-et-loire', + 'sarthe' => 'Sarthe', + 'savoie' => 'Savoie', + 'hauteSavoie' => 'Haute-savoie', + 'paris' => 'Paris', + 'seineMaritime' => 'Seine-maritime', + 'seineEtMarne' => 'Seine-et-marne', + 'yvelines' => 'Yvelines', + 'deuxSevres' => 'Deux-sèvres', + 'somme' => 'Somme', + 'tarn' => 'Tarn', + 'tarnEtGaronne' => 'Tarn-et-Garonne', + 'var' => 'Var', + 'vaucluse' => 'Vaucluse', + 'vendee' => 'Vendée', + 'vienne' => 'Vienne', + 'hauteVienne' => 'Haute-vienne', + 'vosges' => 'Vosges', + 'yonne' => 'Yonne', + 'territoireDeBelfort' => 'Territoire de belfort', + 'essonne' => 'Essonne', + 'hautsDeSeine' => 'Hauts-de-seine', + 'seineSaintDenis' => 'Seine-Saint-Denis', + 'valDeMarne' => 'Val-de-marne', + 'valDoise' => 'Val-d\'Oise', + 'guadeloupe' => 'Guadeloupe', + 'martinique' => 'Martinique', + 'guyane' => 'Guyane', + 'laReunion' => 'La réunion', + 'saintPierreEtMiquelon' => 'Saint-Pierre-et-Miquelon', + 'mayotte' => 'Mayotte', + 'saintBarthelemy' => 'Saint-Barthélemy', + 'saintMartin' => 'Saint-Martin', + 'wallisEtFutuna' => 'Wallis-et-Futuna', + 'polynesieFrancaise' => 'Polynésie-française', + 'nouvelleCaledonie' => 'Nouvelle-Calédonie', + ]; + } +} diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index 6f26c25..1a7c18a 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers; +use App\Enums\Country; +use App\Enums\Department; use App\Http\Requests\ContactFormRequest; use App\Mail\SendContactMail; use Illuminate\Support\Facades\Mail; @@ -26,7 +28,14 @@ class ContactController extends Controller */ public function contactSubmit(ContactFormRequest $request) { - Mail::to(config('mail.contactsList.contactform'))->send(new SendContactMail($request->validated())); + + $data = \collect($request->validated()); + $data->put('country', Country::make(intval($request->post('country')))->label); + if ($request->post('department')) { + $data->put('departement', Department::make(intval($request->post('departement')))->label); + } + + Mail::to(config('mail.contactsList.contactform'))->send(new SendContactMail($data->all())); $lang = session()->get('lang', config('app.locale')); return redirect()->route(session()->get('lang', config('app.locale')) === 'fr' ? 'contact' : $lang . ".contact") diff --git a/app/Http/Requests/ContactFormRequest.php b/app/Http/Requests/ContactFormRequest.php index affa6c5..6217fcd 100644 --- a/app/Http/Requests/ContactFormRequest.php +++ b/app/Http/Requests/ContactFormRequest.php @@ -2,8 +2,11 @@ namespace App\Http\Requests; +use App\Enums\Country; +use App\Enums\Department; use App\Lib\Helpers\ToolboxHelper; use Illuminate\Foundation\Http\FormRequest; +use Kwaadpepper\Enum\Rules\EnumIsValidRule; class ContactFormRequest extends FormRequest { @@ -35,8 +38,15 @@ class ContactFormRequest extends FormRequest 'city' => 'required|string|max:255', 'phone' => 'required|numeric|min:1|max:9999999999', 'email' => 'required|email:rfc,dns,spoof|max:255', - 'country' => 'required|string|max:255', - 'departement' => 'required_if:country,France|max:255', + 'country' => [ + 'required', + new EnumIsValidRule(Country::class) + ], + 'departement' => [ + 'required_if:country,' . Country::france()->label, + 'nullable', + new EnumIsValidRule(Department::class) + ], 'topic' => 'required', 'product_name' => 'required_if:topic,Réclamation|max:255', 'barcode' => 'required_if:topic,Réclamation|max:128', diff --git a/resources/lang/en.json b/resources/lang/en.json index ad14877..b064f77 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -65,19 +65,6 @@ "Doux, La référence française de la volaille": "", "Sélectionnez un pays": "", "Sélectionnez un département": "", - "Guadeloupe": "", - "Martinique": "", - "Guyane": "", - "La Réunion": "", - "Mayotte": "", - "Saint-Pierre-et-Miquelon": "", - "Saint-Barthélémy": "", - "Saint-Martin": "", - "Polynésie française": "", - "Île de Clipperton": "", - "Wallis-et-Futuna": "", - "Nouvelle-Calédonie": "", - "Terres australes et antarctiques françaises": "", "Doux Food Services": "", "Tous les produits Doux": "", "Les actualités Doux": "", @@ -85,4 +72,4 @@ "les questions<\/span>
utiles<\/span>": "Usefull<\/span>
questions<\/span>", "Nos nouveautés": "", "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "" -} \ No newline at end of file +} diff --git a/resources/lang/es.json b/resources/lang/es.json index 0196286..84576ab 100644 --- a/resources/lang/es.json +++ b/resources/lang/es.json @@ -65,19 +65,6 @@ "Doux, La référence française de la volaille": "Doux, La referencia francesa de la carne de ave", "Sélectionnez un pays": "Seleccione un país", "Sélectionnez un département": "Seleccione una provincia", - "Guadeloupe": "Guadalupe", - "Martinique": "Martinica", - "Guyane": "Guayana", - "La Réunion": "Reunión", - "Mayotte": "Mayotte", - "Saint-Pierre-et-Miquelon": "San Pedro y Miquelón", - "Saint-Barthélémy": "San Bartolomé", - "Saint-Martin": "San Martín", - "Polynésie française": "Polinesia francesa", - "Île de Clipperton": "Isla Clipperton", - "Wallis-et-Futuna": "Wallis y Futuna", - "Nouvelle-Calédonie": "Nueva Caledonia", - "Terres australes et antarctiques françaises": "Territorios australes y antárticos franceses", "Doux Food Services": "Doux Food Services", "Tous les produits Doux": "Todos los productos Doux", "Les actualités Doux": "Las últimas noticias de Doux", @@ -85,4 +72,4 @@ "les questions<\/span>
utiles<\/span>": "Preguntas<\/span>
útiles<\/span>", "Nos nouveautés": "nuestras novedades", "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "Seguimos trabajando para mejorar nuestras recetas y proponer productos de mejor calidad" -} \ No newline at end of file +} diff --git a/resources/lang/fr.json b/resources/lang/fr.json index 860073e..1fb9b6c 100644 --- a/resources/lang/fr.json +++ b/resources/lang/fr.json @@ -65,19 +65,6 @@ "Doux, La référence française de la volaille": "Doux, La référence française de la volaille", "Sélectionnez un pays": "", "Sélectionnez un département": "", - "Guadeloupe": "", - "Martinique": "", - "Guyane": "", - "La Réunion": "", - "Mayotte": "", - "Saint-Pierre-et-Miquelon": "", - "Saint-Barthélémy": "", - "Saint-Martin": "", - "Polynésie française": "", - "Île de Clipperton": "", - "Wallis-et-Futuna": "", - "Nouvelle-Calédonie": "", - "Terres australes et antarctiques françaises": "", "Doux Food Services": "", "Tous les produits Doux": "", "Les actualités Doux": "", @@ -85,4 +72,4 @@ "les questions<\/span>
utiles<\/span>": "les questions<\/span>
utiles<\/span>", "Nos nouveautés": "Produits à la une", "Nous travaillons toujours pour améliorer nos recettes et proposer des produits de meilleure qualité": "Ne ratez aucune de nos nouveautés" -} \ No newline at end of file +} diff --git a/resources/views/front/contact.blade.php b/resources/views/front/contact.blade.php index 3cb2217..2702922 100644 --- a/resources/views/front/contact.blade.php +++ b/resources/views/front/contact.blade.php @@ -113,26 +113,16 @@
@@ -228,31 +218,25 @@ document.getElementById('file').required = false; } - function showDromField(sel) { - if (document.getElementById('country').options[sel.selectedIndex].text=='France') { - var dromList = document.getElementById('departement'); - dromList.style.display = 'initial'; - dromList.required = true; + function showDromField() { + const countryList = document.getElementById('country'); + const departmentList = document.getElementById('departement'); + if (countryList.value=='{{ \App\Enums\Country::france()->value }}') { + departmentList.style.display = 'initial'; + departmentList.required = true; } else { - hideDromField(); + departmentList.style.display = 'none'; + departmentList.required = false; } } - function hideDromField() { - var dromList = document.getElementById('departement'); - dromList.style.display = 'none'; - dromList.required = false; - } - document.addEventListener('DOMContentLoaded', function () { hideReclaFields(); - hideDromField(); + showDromField(); @if (old('topic')=="Réclamation") showReclaFields(); @endif - @if (old('country')=="France") - showDromField(); - @endif + document.getElementById('country').addEventListener('change', showDromField) });