'Volaille', 'OEUF' => 'Oeuf', 'LAPIN' => 'Lapin']; public function index($type) { $b = Breeders::where('type', strtoupper($type))->get(); return view('bo.breeders.index') ->with('b', $b) ->with('type', $type) ; } public function create() { return view('bo.breeders.create')->with('types', $this->types); } public function store(Request $request) { // Partie éleveur $display = $request->display === null ? 0 : 1; $breederCode = $request->breeder_code; $firstName = $request->first_name; $lastName = $request->last_name; $picture = $request->picture; $postalCode = $request->postal_code; $town = $request->town; $testimony = $request->testimony; $type = $request->type; $status = 0; $request->validate([ 'breeder_code' => 'required', 'first_name' => 'required|max:150', 'last_name' => 'required|max:150', 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048', 'postal_code' => 'required|max:20', 'testimony' => 'required|max:1000', ]); $imageName = Str::slug($lastName) . '-' . Str::slug($firstName) .'-le-gaulois.' . $picture->extension(); $picture->move(public_path('images/eleveurs/' . date('Y') . '/' . date('m')), $imageName); // Partie site de l'éleveur $latitude = $request->latitude; $longitude = $request->longitude; $geoType = $request->geo_type; $audit = $request->audit; $validBreeder = $request->valid_breeder; $validMarketingDate = $request->valid_marketing_date; $presentationType = $request->presentation_type; $videoLink = $request->video_link; $picture1 = $request->picture1; $picture2 = $request->picture2; $picture3 = $request->picture3; $request->validate([ 'latitude' => 'required|max:150', 'longitude' => 'required|max:150', ]); if ($presentationType === "1") { $request->validate([ 'videoLink' => 'required|max:255' ]); } elseif ($presentationType === "2") { $request->validate([ 'picture1' => 'image|mimes:jpeg,png,jpg|max:2048', 'picture2' => 'image|mimes:jpeg,png,jpg|max:2048', 'picture3' => 'image|mimes:jpeg,png,jpg|max:2048', ]); if ($picture1 !== null) { $imageNameSite1 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site1-elevage-le-gaulois.' . $picture1->extension(); $picture1->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite1); } if ($picture2 !== null) { $imageNameSite2 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site2-elevage-le-gaulois.' . $picture2->extension(); $picture2->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite2); } if ($picture3 !== null) { $imageNameSite3 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site3-elevage-le-gaulois.' . $picture3->extension(); $picture3->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite3); } } // Partie code INUAV $inuavs = $request->inuavs; // Ajout des différents objets en base // Eleveur $b = new Breeders(); $b->display = $display; $b->breeder_code = $breederCode; $b->first_name = $firstName; $b->last_name = $lastName; $b->picture = date('Y') . '/' . date('m') . '/' . $imageName; $b->postal_code = $postalCode; $b->town = $town; $b->testimony = $testimony; $b->type = $type; $b->status = $status; // Site d'élevage $s = new BreedersSites(); $s->latitude = $latitude; $s->longitude = $longitude; $s->geo_type = $geoType; $s->audit = $audit; $s->valid_breeder = $validBreeder; $s->valid_marketing_date = $validMarketingDate; $s->presentation_type = $presentationType; if ($presentationType === "1") { $s->video_link = $videoLink; } elseif ($presentationType === "2") { if ($picture1 !== null) $s->picture1 = date('Y') . '/' . date('m') . '/' . $imageNameSite1; if ($picture2 !== null) $s->picture2 = date('Y') . '/' . date('m') . '/' . $imageNameSite2; if ($picture3 !== null) $s->picture3 = date('Y') . '/' . date('m') . '/' . $imageNameSite3; } // Ajout en BDD $b->save(); $s->breeder_id = $b->id; $s->save(); if ($inuavs !== null) { array_filter($inuavs); foreach($inuavs as $inuav) { $i = new BreedersInuav(); $i->inuav = $inuav; $i->breeder_id = $b->id; $i->save(); } } return redirect()->route('bo.breeders.content', $type); } public function edit($id) { $b = Breeders::findOrFail($id); return view('bo.breeders.edit') ->with('b', $b) ->with('types', $this->types) ; } public function update(Request $request, $id) { // Partie éleveur $display = $request->display === null ? 0 : 1; $breederCode = $request->breeder_code; $firstName = $request->first_name; $lastName = $request->last_name; $picture = $request->picture; $postalCode = $request->postal_code; $town = $request->town; $testimony = $request->testimony; $type = $request->type; $status = $request->status === null ? 0 : 1; $request->validate([ 'breeder_code' => 'required', 'first_name' => 'required|max:150', 'last_name' => 'required|max:150', 'postal_code' => 'required|max:20', 'testimony' => 'required|max:1000', ]); if ($picture !== null) { $request->validate([ 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048', ]); } // Partie site de l'éleveur $latitude = $request->latitude; $longitude = $request->longitude; $geoType = $request->geo_type; $audit = $request->audit; $validBreeder = $request->valid_breeder; $validMarketingDate = $request->valid_marketing_date; $presentationType = $request->presentation_type; $videoLink = $request->video_link; $picture1 = $request->picture1; $picture2 = $request->picture2; $picture3 = $request->picture3; $request->validate([ 'latitude' => 'required|max:150', 'longitude' => 'required|max:150', ]); if ($type === 1) { $request->validate([ 'videoLink' => 'required|max:255' ]); } elseif ($type === 2) { $request->validate([ 'picture1' => 'image|mimes:jpeg,png,jpg|max:2048', 'picture2' => 'image|mimes:jpeg,png,jpg|max:2048', 'picture3' => 'image|mimes:jpeg,png,jpg|max:2048', ]); } // Partie code INUAV $inuavs = $request->inuavs; $b = Breeders::findOrFail($id); // Gestion des images if ($picture !== null) { if ($b->picture !== null && file_exists(public_path('images/eleveurs/') . $b->picture)) unlink(public_path('images/eleveurs/') . $b->picture); $imageName = Str::slug($lastName) . '-' . Str::slug($firstName) .'-le-gaulois.' . $picture->extension(); $picture->move(public_path('images/eleveurs/' . date('Y') . '/' . date('m')), $imageName); } if ($presentationType === "2") { // Ajout des images seulement si le type de présentation est "Photos" if ($picture1 !== null) { if ($b->sites[0]->picture1 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture1)) unlink(public_path('images/elevages/') . $b->sites[0]->picture1); $imageNameSite1 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site1-elevage-le-gaulois.' . $picture1->extension(); $picture1->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite1); } if ($picture2 !== null) { if ($b->sites[0]->picture2 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture2)) unlink(public_path('images/elevages/') . $b->sites[0]->picture2); $imageNameSite2 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site2-elevage-le-gaulois.' . $picture2->extension(); $picture2->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite2); } if ($picture3 !== null) { if ($b->sites[0]->picture3 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture3)) unlink(public_path('images/elevages/') . $b->sites[0]->picture3); $imageNameSite3 = Str::slug($lastName) . '-' . Str::slug($firstName) .'-site3-elevage-le-gaulois.' . $picture3->extension(); $picture3->move(public_path('images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite3); } } else { // Sinon, suppression des photos puisqu'elles ne seront plus utilisées if ($b->sites[0]->picture1 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture1)) unlink(public_path('images/elevages/') . $b->sites[0]->picture1); if ($b->sites[0]->picture2 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture2)) unlink(public_path('images/elevages/') . $b->sites[0]->picture2); if ($b->sites[0]->picture3 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture3)) unlink(public_path('images/elevages/') . $b->sites[0]->picture3); } // Ajout des différents objets en base // Eleveur $b->display = $display; $b->breeder_code = $breederCode; $b->first_name = $firstName; $b->last_name = $lastName; if ($picture !== null) $b->picture = date('Y') . '/' . date('m') . '/' . $imageName; $b->postal_code = $postalCode; $b->town = $town; $b->testimony = $testimony; $b->type = $type; $b->status = $status; // Site d'élevage $s = $b->sites[0]; $s->latitude = $latitude; $s->longitude = $longitude; $s->geo_type = $geoType; $s->audit = $audit; $s->valid_breeder = $validBreeder; $s->valid_marketing_date = $validMarketingDate; $s->presentation_type = $presentationType; if ($presentationType === "1") { $s->video_link = $videoLink; $s->picture1 = null; $s->picture2 = null; $s->picture3 = null; } elseif ($presentationType === "2") { $s->video_link = null; if ($picture1 !== null) $s->picture1 = date('Y') . '/' . date('m') . '/' . $imageNameSite1; if ($picture2 !== null) $s->picture2 = date('Y') . '/' . date('m') . '/' . $imageNameSite2; if ($picture3 !== null) $s->picture3 = date('Y') . '/' . date('m') . '/' . $imageNameSite3; } // Ajout en BDD $b->inuavs()->delete(); array_filter($inuavs); foreach ($inuavs as $inuav) { $b->inuavs()->create([ 'inuav' => $inuav, ]); } $b->sites()->save($s); $b->save(); return redirect()->route('bo.breeders.edit', $b->id)->with('success', 'Enregistré !'); } public function destroy($id) { $b = Breeders::findOrFail($id); if (file_exists(public_path('images/eleveurs/') . $b->picture)) unlink(public_path('images/eleveurs/') . $b->picture); if ($b->sites[0]->picture1 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture1)) unlink(public_path('images/elevages/') . $b->sites[0]->picture1); if ($b->sites[0]->picture2 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture2)) unlink(public_path('images/elevages/') . $b->sites[0]->picture2); if ($b->sites[0]->picture3 !== null && file_exists(public_path('images/elevages/') . $b->sites[0]->picture3)) unlink(public_path('images/elevages/') . $b->sites[0]->picture3); $b->delete(); return redirect()->route('bo.breeders.content', 'volaille'); } }