OCB Breeders BO
This commit is contained in:
parent
df1de25e2b
commit
3d2c5d2e28
22 changed files with 659 additions and 850 deletions
|
|
@ -1,353 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Enums\OCBType;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Models\Breeders;
|
||||
use App\Models\BreedersSites;
|
||||
use App\Models\BreedersInuav;
|
||||
|
||||
class BreedersController extends Controller
|
||||
{
|
||||
public function index(OCBType $type)
|
||||
{
|
||||
$b = Breeders::whereHas('site', function ($q) use ($type) {
|
||||
$q->where('ocbType', $type->value);
|
||||
})->paginate();
|
||||
return view('bo.breeders.index', compact('b', '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;
|
||||
$slug = strtolower($lastName . '-' . $firstName . '-' . time());
|
||||
$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('uploads/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;
|
||||
$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([
|
||||
'video_link' => '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('uploads/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('uploads/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('uploads/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->slug = $slug;
|
||||
$b->picture = 'uploads/images/eleveurs/' . 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_marketing_date = $validMarketingDate;
|
||||
$s->presentation_type = $presentationType;
|
||||
if ($presentationType === "1") {
|
||||
$s->video_link = $videoLink;
|
||||
} elseif ($presentationType === "2") {
|
||||
if ($picture1 !== null) {
|
||||
$s->picture1 = 'uploads/images/elevages/' . date('Y') . '/' . date('m') . '/' . $imageNameSite1;
|
||||
}
|
||||
if ($picture2 !== null) {
|
||||
$s->picture2 = 'uploads/images/elevages/' . date('Y') . '/' . date('m') . '/' . $imageNameSite2;
|
||||
}
|
||||
if ($picture3 !== null) {
|
||||
$s->picture3 = 'uploads/images/elevages/' . 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(OCBType $type, Breeders $breeder)
|
||||
{
|
||||
return view('bo.breeders.edit', compact('breeder', 'type'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Breeders $breeder)
|
||||
{
|
||||
// Partie éleveur
|
||||
$display = $request->display === null ? 0 : 1;
|
||||
$breederCode = $request->breeder_code;
|
||||
$firstName = $request->first_name;
|
||||
$lastName = $request->last_name;
|
||||
$slug = strtolower($lastName . '-' . $firstName . '-' . time());
|
||||
$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;
|
||||
$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 = $breeder;
|
||||
|
||||
// Gestion des images
|
||||
if ($picture !== null) {
|
||||
if ($b->picture !== null && file_exists(public_path() . '/' . $b->picture)) {
|
||||
unlink(public_path() . '/' . $b->picture);
|
||||
}
|
||||
$imageName = Str::slug($lastName) . '-' . Str::slug($firstName) . '-le-gaulois.' . $picture->extension();
|
||||
$picture->move(public_path('uploads/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->site->picture1 !== null && file_exists(public_path() . '/' . $b->site->picture1)) {
|
||||
unlink(public_path() . '/' . $b->site->picture1);
|
||||
}
|
||||
$imageNameSite1 = Str::slug($lastName) . '-' . Str::slug($firstName) . '-site1-elevage-le-gaulois.' . $picture1->extension();
|
||||
$picture1->move(public_path('uploads/images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite1);
|
||||
}
|
||||
if ($picture2 !== null) {
|
||||
if ($b->site->picture2 !== null && file_exists(public_path() . '/' . $b->site->picture2)) {
|
||||
unlink(public_path() . '/' . $b->site->picture2);
|
||||
}
|
||||
$imageNameSite2 = Str::slug($lastName) . '-' . Str::slug($firstName) . '-site2-elevage-le-gaulois.' . $picture2->extension();
|
||||
$picture2->move(public_path('uploads/images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite2);
|
||||
}
|
||||
if ($picture3 !== null) {
|
||||
if ($b->site->picture3 !== null && file_exists(public_path() . '/' . $b->site->picture3)) {
|
||||
unlink(public_path() . '/' . $b->site->picture3);
|
||||
}
|
||||
$imageNameSite3 = Str::slug($lastName) . '-' . Str::slug($firstName) . '-site3-elevage-le-gaulois.' . $picture3->extension();
|
||||
$picture3->move(public_path('uploads/images/elevages/' . date('Y') . '/' . date('m')), $imageNameSite3);
|
||||
}
|
||||
} else {
|
||||
// Sinon, suppression des photos puisqu'elles ne seront plus utilisées
|
||||
if ($b->site->picture1 !== null && file_exists(public_path() . '/' . $b->site->picture1)) {
|
||||
unlink(public_path() . '/' . $b->site->picture1);
|
||||
}
|
||||
if ($b->site->picture2 !== null && file_exists(public_path() . '/' . $b->site->picture2)) {
|
||||
unlink(public_path() . '/' . $b->site->picture2);
|
||||
}
|
||||
if ($b->site->picture3 !== null && file_exists(public_path() . '/' . $b->site->picture3)) {
|
||||
unlink(public_path() . '/' . $b->site->picture3);
|
||||
}
|
||||
}
|
||||
|
||||
// Ajout des différents objets en base
|
||||
// Eleveur
|
||||
$b->display = $display;
|
||||
$b->breeder_code = $breederCode;
|
||||
$b->first_name = $firstName;
|
||||
$b->last_name = $lastName;
|
||||
$b->slug = $slug;
|
||||
if ($picture !== null) {
|
||||
$b->picture = 'uploads/images/eleveurs/' . 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->site;
|
||||
$s->latitude = $latitude;
|
||||
$s->longitude = $longitude;
|
||||
$s->geo_type = $geoType;
|
||||
$s->audit = $audit;
|
||||
$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 = 'uploads/images/elevages/' . date('Y') . '/' . date('m') . '/' . $imageNameSite1;
|
||||
}
|
||||
if ($picture2 !== null) {
|
||||
$s->picture2 = 'uploads/images/elevages/' . date('Y') . '/' . date('m') . '/' . $imageNameSite2;
|
||||
}
|
||||
if ($picture3 !== null) {
|
||||
$s->picture3 = 'uploads/images/elevages/' . date('Y') . '/' . date('m') . '/' . $imageNameSite3;
|
||||
}
|
||||
}
|
||||
|
||||
// Ajout en BDD
|
||||
$b->inuavs()->delete();
|
||||
|
||||
if ($inuavs !== null) {
|
||||
array_filter($inuavs);
|
||||
foreach ($inuavs as $inuav) {
|
||||
$b->inuavs()->create([
|
||||
'inuav' => $inuav,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$s->save();
|
||||
$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() . '/' . $b->picture)) {
|
||||
unlink(public_path() . '/' . $b->picture);
|
||||
}
|
||||
if ($b->site->picture1 !== null && file_exists(public_path() . '/' . $b->site->picture1)) {
|
||||
unlink(public_path() . '/' . $b->site->picture1);
|
||||
}
|
||||
if ($b->site->picture2 !== null && file_exists(public_path() . '/' . $b->site->picture2)) {
|
||||
unlink(public_path() . '/' . $b->site->picture2);
|
||||
}
|
||||
if ($b->site->picture3 !== null && file_exists(public_path() . '/' . $b->site->picture3)) {
|
||||
unlink(public_path() . '/' . $b->site->picture3);
|
||||
}
|
||||
|
||||
$i = BreedersInuav::where('breeder_id', $id);
|
||||
$i->delete();
|
||||
$s = BreedersSites::where('breeder_id', $id);
|
||||
$s->delete();
|
||||
|
||||
$b->delete();
|
||||
|
||||
return redirect()->route('bo.breeders.content', 'volaille');
|
||||
}
|
||||
}
|
||||
129
app/Http/Controllers/Bo/OCBBreedersController.php
Normal file
129
app/Http/Controllers/Bo/OCBBreedersController.php
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Enums\OCBType;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\StoreOcbBreeder;
|
||||
use App\Http\Requests\UpdateOcbBreeder;
|
||||
use App\Models\OCBBreeder;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class OCBBreedersController extends Controller
|
||||
{
|
||||
public function index(OCBType $type)
|
||||
{
|
||||
$b = OCBBreeder::where('ocbType', $type->value)->paginate();
|
||||
return view('bo.ocbbreeders.index', compact('b', 'type'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('bo.ocbbreeders.create');
|
||||
}
|
||||
|
||||
public function store(StoreOcbBreeder $request)
|
||||
{
|
||||
$b = new OCBBreeder();
|
||||
$b->fill($request->validated());
|
||||
|
||||
if (!strlen($b->valid_marketing_date)) {
|
||||
$b->valid_marketing_date = null;
|
||||
}
|
||||
|
||||
$file = $request->file('picture');
|
||||
$fileName = sprintf(
|
||||
'%s-%s-le-gaulois.%s',
|
||||
Str::slug($b->first_name),
|
||||
Str::slug($b->last_name),
|
||||
$file->extension()
|
||||
);
|
||||
$b->picture = $file->storeAs('images/elevages', $fileName, 'public');
|
||||
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
if ($request->has('picture' . $i)) {
|
||||
$file = $request->file('picture' . $i);
|
||||
$fileName = sprintf(
|
||||
'%s-%s-site%d-elevage-le-gaulois.%s',
|
||||
Str::slug($b->first_name),
|
||||
Str::slug($b->last_name),
|
||||
$i,
|
||||
$file->extension()
|
||||
);
|
||||
$b->{'picture' . $i} = $request->file('UploadIMG')->storeAs('images/elevages', $fileName, 'public');
|
||||
}
|
||||
}
|
||||
|
||||
$b->saveOrFail();
|
||||
|
||||
return redirect()->route('bo.ocbbreeders.edit', ['type' => $b->ocbType, 'breeder' => $b])
|
||||
->with('success', trans('Enregistré !'));
|
||||
}
|
||||
|
||||
public function edit(OCBType $type, OCBBreeder $breeder)
|
||||
{
|
||||
return view('bo.ocbbreeders.edit', [
|
||||
'type' => $type,
|
||||
'breeder' => $breeder
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(UpdateOcbBreeder $request, OCBBreeder $breeder)
|
||||
{
|
||||
$breeder->fill($request->validated());
|
||||
|
||||
if (!strlen($breeder->valid_marketing_date)) {
|
||||
$breeder->valid_marketing_date = null;
|
||||
}
|
||||
|
||||
if ($request->has('picture')) {
|
||||
$file = $request->file('picture');
|
||||
$fileName = sprintf(
|
||||
'%s-%s-le-gaulois.%s',
|
||||
Str::slug($breeder->first_name),
|
||||
Str::slug($breeder->last_name),
|
||||
$file->extension()
|
||||
);
|
||||
$breeder->picture = $file->storeAs('images/elevages', $fileName, 'public');
|
||||
}
|
||||
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
if ($request->has('picture' . $i)) {
|
||||
$file = $request->file('picture' . $i);
|
||||
$fileName = sprintf(
|
||||
'%s-%s-site%d-elevage-le-gaulois.%s',
|
||||
Str::slug($breeder->first_name),
|
||||
Str::slug($breeder->last_name),
|
||||
$i,
|
||||
$file->extension()
|
||||
);
|
||||
$breeder->{'picture' . $i} = $request->file('UploadIMG')
|
||||
->storeAs('images/elevages', $fileName, 'public');
|
||||
}
|
||||
}
|
||||
|
||||
$breeder->saveOrFail();
|
||||
|
||||
return redirect()->route('bo.ocbbreeders.edit', ['type' => $breeder->ocbType, 'breeder' => $breeder])
|
||||
->with('success', trans('Enregistré !'));
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$b = OCBBreeder::findOrFail($id);
|
||||
if ($b->picture) {
|
||||
Storage::disk('public')->delete($b->resolveOriginalUrl($b->picture));
|
||||
}
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
if ($b->{'picture' . $i}) {
|
||||
Storage::disk('public')->delete($b->resolveOriginalUrl($b->{'picture' . $i}));
|
||||
}
|
||||
}
|
||||
|
||||
$b->delete();
|
||||
|
||||
return redirect()->route('bo.ocbbreeders.index', $b->ocbType);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,14 +3,13 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Ads;
|
||||
use App\Models\Breeders;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\OCBBreeder;
|
||||
|
||||
class BrandController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$breeder = Breeders::where('status', true)
|
||||
$breeder = OCBBreeder::where('status', true)
|
||||
->where('picture', '!=', '')->inRandomOrder()->first();
|
||||
return view('front.brand.index', compact('breeder'));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,9 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Enums\Days;
|
||||
use App\Enums\EleveurOcbStatus;
|
||||
use App\Models\Breeders;
|
||||
use App\Models\HomeSliderPictures;
|
||||
use App\Models\NewsSliderPictures;
|
||||
use App\Models\OCBBreeder;
|
||||
use App\Models\Products;
|
||||
use App\Models\Reductions;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -25,7 +24,7 @@ class HomeController extends Controller
|
|||
$newsSlides = NewsSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get();
|
||||
|
||||
// Images d'éleveur
|
||||
$breeder = Breeders::ocbValidated()->select('picture', 'first_name', 'last_name')
|
||||
$breeder = OCBBreeder::ocbValidated()->select('picture', 'first_name', 'last_name')
|
||||
->inRandomOrder()->first();
|
||||
|
||||
// Les produits star
|
||||
|
|
|
|||
|
|
@ -3,32 +3,27 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Enums\EleveurOcbStatus;
|
||||
use App\Enums\OCBType;
|
||||
use App\Http\Requests\GetMapBreeders;
|
||||
use App\Http\Resources\BreederMapCollection;
|
||||
use App\Models\Breeders;
|
||||
use App\Models\BreedersSites;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\OCBBreeder;
|
||||
use App\Models\XmlBreeder;
|
||||
|
||||
class MapController extends Controller
|
||||
{
|
||||
public function breeders(GetMapBreeders $request)
|
||||
{
|
||||
$sites = BreedersSites::query();
|
||||
if ($request->isocb) {
|
||||
$sites = $sites
|
||||
->whereHas('breeder', function ($q) {
|
||||
$q->where('display', true)->where('show_on_non_ocb', false);
|
||||
})->with('breeder')
|
||||
$breeders = OCBBreeder::where('display', true)
|
||||
->where('ocbStatus', EleveurOcbStatus::yes()->value)
|
||||
->where('ocbType', $request->ocbtype)->get();
|
||||
} else {
|
||||
$sites = $sites
|
||||
->whereHas('breeder', function ($q) {
|
||||
$q->where('display', true)->where('show_on_non_ocb', true);
|
||||
})->with('breeder')
|
||||
->where('ocbType', EleveurOcbStatus::no()->value)->get();
|
||||
// TODO: Regular BREEDER
|
||||
// $sites = XmlBreeder
|
||||
// ->whereHas('breeder', function ($q) {
|
||||
// $q->where('display', true)->where('show_on_non_ocb', true);
|
||||
// })->with('breeder')
|
||||
// ->where('ocbType', EleveurOcbStatus::no()->value)->get();
|
||||
}
|
||||
return new BreederMapCollection($sites);
|
||||
return new BreederMapCollection($breeders);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,20 +3,19 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Enums\OCBType;
|
||||
use App\Models\Breeders;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\OCBBreeder;
|
||||
|
||||
class OCBController extends Controller
|
||||
{
|
||||
public function testimonials()
|
||||
{
|
||||
$breeders = Breeders::ocbValidated()->select('slug', 'picture', 'first_name', 'last_name')
|
||||
$breeders = OCBBreeder::ocbValidated()->select('slug', 'picture', 'first_name', 'last_name')
|
||||
->inRandomOrder()->limit(8)->get();
|
||||
|
||||
return view('front.ocb.testimonials', compact('breeders'));
|
||||
}
|
||||
|
||||
public function breeder(Breeders $breeder)
|
||||
public function breeder(OCBBreeder $breeder)
|
||||
{
|
||||
// Contient les images de l'exploitation de l'éleveur
|
||||
$pictures = [];
|
||||
|
|
@ -37,7 +36,7 @@ class OCBController extends Controller
|
|||
|
||||
public function poultry()
|
||||
{
|
||||
$breeder = Breeders::inRandomOrder()->first();
|
||||
$breeder = OCBBreeder::inRandomOrder()->first();
|
||||
$ocbType = OCBType::poultry();
|
||||
return view('front.ocb.poultry', compact('breeder', 'ocbType'));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Breeders;
|
||||
use App\Models\OCBBreeder;
|
||||
use App\Models\XmlBreeder;
|
||||
use App\Models\Traceability;
|
||||
use App\Models\XmlTraceability;
|
||||
|
|
@ -31,7 +31,7 @@ class TraceabilityController extends Controller
|
|||
}
|
||||
|
||||
// Si éleveur trouvé, alors c'est un éleveur OCB publié
|
||||
$breeder = Breeders::where([
|
||||
$breeder = OCBBreeder::where([
|
||||
['status', 1], [
|
||||
'breeder_code', 'LIKE', '%' . $tracaDatas->opa_code . $tracaDatas->inuav_code
|
||||
]
|
||||
|
|
|
|||
108
app/Http/Requests/StoreOcbBreeder.php
Normal file
108
app/Http/Requests/StoreOcbBreeder.php
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Enums\EleveurOcbStatus;
|
||||
use App\Enums\GeoType;
|
||||
use App\Enums\OCBType;
|
||||
use App\Enums\PresentationType;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class StoreOcbBreeder extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return auth()->check();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'breeder_code' => 'required|string|min:2|max:50',
|
||||
'first_name' => 'required|string|min:2|max:150',
|
||||
'last_name' => 'required|string|min:2|max:150',
|
||||
|
||||
'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048',
|
||||
|
||||
'postal_code' => 'required|string|min:5|max:20',
|
||||
'place' => 'required|string|min:2|max:255',
|
||||
'testimony' => 'required|string',
|
||||
'latitude' => 'required|numeric|between:-99.99,99.99',
|
||||
'longitude' => 'required|numeric|between:-99.99,99.99',
|
||||
'geo_type' => [
|
||||
'required',
|
||||
// @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||||
function ($attribute, $value, $fail) {
|
||||
if (!in_array($value, GeoType::toValues())) {
|
||||
$fail(__('Veuillez choisir entre :values', [
|
||||
'value' => implode(',', GeoType::toLabels())
|
||||
]));
|
||||
}
|
||||
}
|
||||
],
|
||||
'ocbStatus' => [
|
||||
'required',
|
||||
// @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||||
function ($attribute, $value, $fail) {
|
||||
if (!in_array($value, EleveurOcbStatus::toValues())) {
|
||||
$fail(__('Veuillez choisir entre :values', [
|
||||
'value' => implode(',', EleveurOcbStatus::toLabels())
|
||||
]));
|
||||
}
|
||||
}
|
||||
],
|
||||
'ocbType' => [
|
||||
'required',
|
||||
// @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||||
function ($attribute, $value, $fail) {
|
||||
if (!in_array($value, OCBType::toValues())) {
|
||||
$fail(__('Veuillez choisir entre :values', [
|
||||
'value' => implode(',', OCBType::toLabels())
|
||||
]));
|
||||
}
|
||||
}
|
||||
],
|
||||
'presentation_type' => [
|
||||
'required',
|
||||
// @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||||
function ($attribute, $value, $fail) {
|
||||
if (!in_array($value, PresentationType::toValues())) {
|
||||
$fail(__('Veuillez choisir entre :values', [
|
||||
'value' => implode(',', PresentationType::toLabels())
|
||||
]));
|
||||
}
|
||||
}
|
||||
],
|
||||
'audit' => 'boolean',
|
||||
'valid_marketing_date' => 'nullable|date',
|
||||
'video_link' => 'string|max:255',
|
||||
'picture1' => 'image|mimes:jpeg,png,jpg|max:2048',
|
||||
'picture2' => 'image|mimes:jpeg,png,jpg|max:2048',
|
||||
'picture3' => 'image|mimes:jpeg,png,jpg|max:2048',
|
||||
'status' => 'boolean',
|
||||
'display_random' => 'boolean',
|
||||
'inuavs' => 'array',
|
||||
'inuavs.*' => [
|
||||
// @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
||||
function ($attribute, $value, $fail) {
|
||||
if (strpos(trim($value), ' ') !== false) {
|
||||
$fail(trans('Les espaces ne sont pas autorisés dans les codes INUAV'));
|
||||
}
|
||||
if (count($this->inuavs) > count(array_unique($this->inuavs))) {
|
||||
$fail(trans('Les codes INUAVS doinvent être uniques'));
|
||||
}
|
||||
}
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
23
app/Http/Requests/UpdateOcbBreeder.php
Normal file
23
app/Http/Requests/UpdateOcbBreeder.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class UpdateOcbBreeder extends StoreOcbBreeder
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return array_merge_recursive(parent::rules(), [
|
||||
'picture' => [
|
||||
Rule::requiredIf(!$this->breeder->picture),
|
||||
'image', 'mimes:jpeg,png,jpg', 'max:2048'
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,8 @@ use App\Enums\GeoType;
|
|||
use App\Enums\OCBType;
|
||||
use App\Enums\PresentationType;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
use Kwaadpepper\Enum\Traits\CastsEnums;
|
||||
|
||||
// old Breeders
|
||||
|
|
@ -15,7 +17,8 @@ class OCBBreeder extends Model
|
|||
use CastsEnums;
|
||||
|
||||
protected $casts = [
|
||||
'display' => 'boolean'
|
||||
'display' => 'boolean',
|
||||
'inuavs' => 'array'
|
||||
];
|
||||
|
||||
protected $enumCasts = [
|
||||
|
|
@ -27,6 +30,53 @@ class OCBBreeder extends Model
|
|||
|
||||
protected $table = 'ocb_breeders';
|
||||
|
||||
protected $fillable = [
|
||||
'breeder_code',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'postal_code',
|
||||
'place',
|
||||
'testimony',
|
||||
'latitude',
|
||||
'longitude',
|
||||
'geo_type',
|
||||
'ocbStatus',
|
||||
'ocbType',
|
||||
'presentation_type',
|
||||
'audit',
|
||||
'valid_marketing_date',
|
||||
'video_link',
|
||||
'status',
|
||||
'display_random',
|
||||
'inuavs',
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::creating(function ($breeder) {
|
||||
$breeder->slug = Str::slug(sprintf(
|
||||
'%s %s %s',
|
||||
$breeder->id,
|
||||
$breeder->last_name,
|
||||
$breeder->id
|
||||
));
|
||||
});
|
||||
static::updating(function ($breeder) {
|
||||
$breeder->slug = Str::slug(sprintf(
|
||||
'%s %s %s',
|
||||
$breeder->id,
|
||||
$breeder->last_name,
|
||||
$breeder->id
|
||||
));
|
||||
});
|
||||
static::retrieved(function ($breeder) {
|
||||
$breeder->picture = $breeder->resolveImageUrl($breeder->picture);
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
$breeder->{'picture' . $i} = $breeder->resolveImageUrl($breeder->{'picture' . $i});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function getRouteKeyName()
|
||||
{
|
||||
return "slug";
|
||||
|
|
@ -43,4 +93,22 @@ class OCBBreeder extends Model
|
|||
$q->where('type', EleveurOcbStatus::yes()->value);
|
||||
});
|
||||
}
|
||||
|
||||
private function resolveImageUrl($imageUrl)
|
||||
{
|
||||
// For migrated urls from 2016
|
||||
if (strpos($imageUrl, '/uploads') === 0) {
|
||||
return $imageUrl;
|
||||
}
|
||||
return Storage::url($imageUrl);
|
||||
}
|
||||
|
||||
public function resolveOriginalUrl($imageUrl)
|
||||
{
|
||||
// For migrated urls from 2016
|
||||
if (strpos($imageUrl, '/storage') === 0) {
|
||||
return str_replace('/storage', '', $imageUrl);
|
||||
}
|
||||
return $imageUrl;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ class CreateOcbBreedersTable extends Migration
|
|||
$table->id();
|
||||
|
||||
$table->string('breeder_code', 50);
|
||||
$table->string('slug');
|
||||
$table->string('slug')->unique();
|
||||
|
||||
$table->string('inuavs')->nullable();
|
||||
|
||||
|
|
|
|||
|
|
@ -16,25 +16,6 @@ use Symfony\Component\Console\Terminal;
|
|||
* @author Jérémy Munsch <jeremy.munsch@ldc.fr>
|
||||
* Examples
|
||||
*[
|
||||
* 'eleveur' => [
|
||||
* 'model' => Breeders::class,
|
||||
* 'bind' => [
|
||||
* 'id' => 'elev_id',
|
||||
* 'display' => [
|
||||
* 'apply' => function ($values) {
|
||||
* $values = explode('_', $values);
|
||||
* return
|
||||
* intval($this->oldDB->table('eleveur_site')
|
||||
* ->where('eleveur_site.code_eleveur', '=', $values[0])
|
||||
* ->where('eleveur_site.nom_eleveur', '=', $values[1])
|
||||
* ->first('eleveur_site.eleveur_is_displayed')
|
||||
* ->eleveur_is_displayed ?? null);
|
||||
* },
|
||||
* 'name' => ['elev_code', 'elev_nom'], //* clé étrangère
|
||||
* 'default' => ''
|
||||
* ],
|
||||
* ]
|
||||
* ],
|
||||
* 'content_ocb' => [
|
||||
* 'model' => OCBContent::class,
|
||||
* 'bind' => [
|
||||
|
|
@ -113,12 +94,16 @@ abstract class LeGaulois2016Migration extends Migration
|
|||
|
||||
/** @var ConsoleOutput */
|
||||
private $output = null;
|
||||
|
||||
/** @var ConsoleSectionOutput */
|
||||
private $outputSection = null;
|
||||
|
||||
/** @var \Illuminate\Database\ConnectionInterface */
|
||||
private $oldDB = null;
|
||||
|
||||
/** @var \Illuminate\Database\ConnectionInterface */
|
||||
private $newDB = null;
|
||||
|
||||
/** @var array */
|
||||
private $instructions = null;
|
||||
|
||||
|
|
@ -233,6 +218,7 @@ abstract class LeGaulois2016Migration extends Migration
|
|||
}
|
||||
$model->save();
|
||||
} catch (AbortRowImportException $e) {
|
||||
// DO nothing
|
||||
} finally {
|
||||
++$rowInserted;
|
||||
if (rand(0, 15) == 10) { // prevent screen ficklering
|
||||
|
|
|
|||
2
resources/js/app.js
vendored
2
resources/js/app.js
vendored
|
|
@ -3,7 +3,7 @@
|
|||
* includes Vue and other libraries. It is a great starting point when
|
||||
* building robust, powerful web applications using Vue and Laravel.
|
||||
*/
|
||||
|
||||
window.$ = window.jQuery = require('jquery');
|
||||
require('@fortawesome/fontawesome-free/js/all');
|
||||
require('./bootstrap');
|
||||
require('vue-select-image/dist/vue-select-image.css');
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div>
|
||||
<ckeditor :editor="editor" v-model="dbtext"></ckeditor>
|
||||
<input type="hidden" :name="name" :value="dbtext">
|
||||
<input :id="id" type="hidden" :name="name" :value="dbtext" :required="required ? true : false">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -9,23 +9,16 @@
|
|||
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
|
||||
|
||||
export default {
|
||||
mounted() {
|
||||
console.log('CKEditorComponent Component mounted.');
|
||||
},
|
||||
props: [
|
||||
'id',
|
||||
'name',
|
||||
'dbtext',
|
||||
'required',
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
editor: ClassicEditor
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,159 +0,0 @@
|
|||
@extends('layouts.bo')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Ajout d'un éleveur
|
||||
<a href="{{route('bo.breeders.content', 'volaille')}}" class="btn btn-sm btn-primary float-right">Retour</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{route('bo.breeders.store')}}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-8 offset-md-2">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label class="col-form-label">
|
||||
<input type="checkbox" name="display" @if (old('display') !== null)checked @endif>
|
||||
Afficher l'éleveur sur le site
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="breeder_code" placeholder="Code éleveur *" value="{{ old('breeder_code') }}" required>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<a class="btn btn-primary text-white" onclick="addInput()" id="addInuav" role="button">Ajouter un code INUAV</a>
|
||||
</div>
|
||||
<div class="form-group row" id="inuavs"></div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="last_name" placeholder="Nom de l'éleveur *" value="{{ old('last_name') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="first_name" placeholder="Prénom de l'éleveur *" value="{{ old('first_name') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Photo de l'éleveur * de type JPEG/PNG - 2Mo max.</label></br>
|
||||
<input type="file" name="picture" accept="image/png, image/jpeg" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="postal_code" placeholder="Code postal de l'éleveur *" value="{{ old('postal_code') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="town" placeholder="Commune de l'éleveur *" value="{{ old('town') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="testimony" placeholder="Témoignage de l'éleveur *" value="{{ old('testimony') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="latitude" placeholder="Latitude *" value="{{ old('latitude') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="longitude" placeholder="Longitude *" value="{{ old('longitude') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="geo_type" placeholder="Type de géolocalisation" value="{{ old('geo_type') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="audit" placeholder="Audit de l'éleveur" value="{{ old('audit') }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control" type="text" name="valid_breeder" placeholder="Éleveur validé" value="{{ old('valid_breeder') }}">
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-form-label col-md-6">Date de validation marketing</label>
|
||||
<input class="form-control col-md-6" type="date" name="valid_marketing_date" value="{{ old('valid_marketing_date') }}">
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-form-label col-md-6">Type de présentation de l'élevage</label>
|
||||
<select class="custom-select col-md-6" name="presentation_type" onchange="changeType(this)">
|
||||
<option value="1">Vidéo</option>
|
||||
<option value="2">Photos</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group" id="div_video_link">
|
||||
<input class="form-control" type="text" name="video_link" placeholder="Lien de la vidéo *">
|
||||
</div>
|
||||
<div class="form-group" id="div_picture_site">
|
||||
<label>Photo de l'élevage n°1 de type JPEG/PNG - 2Mo max. - 1000 x 667px</label></br>
|
||||
<input type="file" name="picture1" accept="image/png, image/jpeg">
|
||||
<label>Photo de l'élevage n°2 de type JPEG/PNG - 2Mo max. - 1000 x 667px</label></br>
|
||||
<input type="file" name="picture2" accept="image/png, image/jpeg">
|
||||
<label>Photo de l'élevage n°3 de type JPEG/PNG - 2Mo max. - 1000 x 667px</label></br>
|
||||
<input type="file" name="picture3" accept="image/png, image/jpeg">
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-form-label col-md-6">Type *</label>
|
||||
<select class="custom-select col-md-6" name="type">
|
||||
@foreach ($types as $idType => $nomType)
|
||||
<option value="{{$idType}}" @if (old('type') == $idType)selected @endif>{{$nomType}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<input type="submit" class="btn btn-secondary" value="Ajouter">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script type="text/javascript">
|
||||
var addId = 0;
|
||||
|
||||
function addInput() {
|
||||
addId++;
|
||||
|
||||
var inuavDiv = document.getElementById('inuavs');
|
||||
|
||||
var input = document.createElement('input');
|
||||
input.id = "inuav_" + addId;
|
||||
input.className = "form-control col-md-3";
|
||||
input.name = "inuavs[]";
|
||||
input.placeholder = "Code INUAV";
|
||||
|
||||
var a = document.createElement('a');
|
||||
a.href = "#";
|
||||
a.id = "inuav_" + addId + "_a";
|
||||
a.setAttribute("onclick", "deleteInuav('inuav_" + addId + "')");
|
||||
a.className = "col-form-label col-md-3";
|
||||
a.innerHTML = "Supprimer"
|
||||
inuavDiv.appendChild(input);
|
||||
inuavDiv.appendChild(a);
|
||||
}
|
||||
|
||||
// Supprime un input INUAV avec son bouton supprimer, affiche le bouton ajouter un INUAV si il y a moins de 10 champs présents sur la page
|
||||
function deleteInuav(elementId) {
|
||||
var input = document.getElementById(elementId);
|
||||
input.parentNode.removeChild(input);
|
||||
var a = document.getElementById(elementId + "_a");
|
||||
a.parentNode.removeChild(a);
|
||||
}
|
||||
|
||||
var videoDiv = document.getElementById('div_video_link');
|
||||
var pictureSiteDiv = document.getElementById('div_picture_site');
|
||||
pictureSiteDiv.style.display = "none";
|
||||
|
||||
function changeType(select) {
|
||||
if (select.value === "1") {
|
||||
videoDiv.style.display = "inline";
|
||||
pictureSiteDiv.style.display = "none";
|
||||
} else if (select.value === "2") {
|
||||
videoDiv.style.display = "none";
|
||||
pictureSiteDiv.style.display = "inline";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,265 +0,0 @@
|
|||
@extends('layouts.bo')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{{__('Modification d\'un éleveur') }} - <b>{{ $type->label }}</b>
|
||||
<a href="{{route('bo.breeders.index', $type)}}" class="btn btn-sm btn-primary float-right ml-2">{{__('Retour') }}</a>
|
||||
<form action="{{route('bo.breeders.destroy', $breeder)}}" method="POST" class="d-inline">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<input type="submit" class="btn btn-sm btn-danger float-right" value="Supprimer" onclick="return confirm('Êtes-vous sûr(e) ?')">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{route('bo.breeders.update', $breeder)}}" method="POST" enctype="multipart/form-data">
|
||||
@method('PUT')
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-8 offset-md-2">
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-group">
|
||||
<label class="col-form-label">
|
||||
@if ($breeder->display === 1)
|
||||
<input type="checkbox" name="display" checked>
|
||||
@else
|
||||
<input type="checkbox" name="display">
|
||||
@endif
|
||||
{{__('Afficher l\'éleveur sur le site') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="breeder_code"><small>{{__('Code éleveur *') }}</small></label>
|
||||
<input id="breeder_code" class="form-control" type="text" name="breeder_code" placeholder="Code éleveur *" value="{{$breeder->breeder_code}}" required>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<a class="btn btn-primary text-white" onclick="addInput()" id="addInuav" role="button">{{ __('Ajouter un code INUAV') }}</a>
|
||||
</div>
|
||||
<div class="form-group row" id="inuavs">
|
||||
@for($i = 0; $i < count($breeder->inuavs); $i++)
|
||||
<input id="inuav_{{$i}}" class="form-control col-md-3" name="inuavs[]" placeholder="Code INUAV" value="{{$breeder->inuavs[$i]->inuav}}">
|
||||
<a href="#" id="inuav_{{$i}}_a" onclick="deleteInuav('inuav_{{$i}}')" class="col-form-label col-md-3">{{ __('Supprimer') }}</a>
|
||||
@endfor
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="last_name"><small>{{ __('Nom de l\'éleveur *') }}</small></label>
|
||||
<input id="last_name" class="form-control" type="text" name="last_name" placeholder="{{ __('Nom de l\'éleveur *') }}" value="{{$breeder->last_name}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="first_name"><small>{{ __('Prénom de l\'éleveur *') }}</small></label>
|
||||
<input id="first_name" class="form-control" type="text" name="first_name" placeholder="{{ __('Prénom de l\'éleveur *') }}" value="{{$breeder->first_name}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Photo de l'éleveur * de type JPEG/PNG - 2Mo max.</label></br>
|
||||
<input type="file" name="picture" accept="image/png, image/jpeg">
|
||||
</br>
|
||||
</br>
|
||||
<img src="{{ asset($breeder->picture) }}" style="max-height: 200px;">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="postal_code"><small>{{ __('Code postal de l\'éleveur *') }}</small></label>
|
||||
<input id="postal_code" class="form-control" type="text" name="postal_code" placeholder="{{ __('Code postal de l\'éleveur *') }}" value="{{$breeder->postal_code}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="town"><small>{{ __('Commune de l\'éleveur *') }}</small></label>
|
||||
<input id="town" class="form-control" type="text" name="town" placeholder="{{ __('Commune de l\'éleveur *') }}" value="{{$breeder->town}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="testimony"><small>{{ __('Témoignage de l\'éleveur *') }}</small></label>
|
||||
<input id="testimony" class="form-control" type="text" name="testimony" placeholder="{{ __('Témoignage de l\'éleveur *') }}" value="{{$breeder->testimony}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="latitude"><small>{{ __('Latitude *') }}</small></label>
|
||||
<input id="latitude" class="form-control" type="text" name="latitude" placeholder="{{ __('Latitude *') }}" value="{{$breeder->site->latitude}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="longitude"><small>{{ __('Longitude *') }}</small></label>
|
||||
<input id="longitude" class="form-control" type="text" name="longitude" placeholder="{{ __('Longitude *') }}" value="{{$breeder->site->longitude}}" required>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="geo_type" class="col-form-label col-md-6">{{ __('Type de géolocalisation') }}</label>
|
||||
<select id="geo_type" class="custom-select col-md-6" name="geo_type">
|
||||
@foreach(GeoType::toArray() as $geoType)
|
||||
<option value="{{ $geoType->value }}" @if($breeder->site->geo_type->equals($geoType)) selected @endif>{{ $geoType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="audit" class="col-form-label col-md-6">{{ __('Audit de l\'éleveur') }}</label>
|
||||
<select id="audit" class="custom-select col-md-6" name="audit">
|
||||
<option value="0" @if(!$breeder->site->audit) selected @endif>{{ __('Non réalisé') }}</option>
|
||||
<option value="1" @if($breeder->site->audit) selected @endif>{{ __('Validé') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ocbStatus" class="col-form-label col-md-6">{{ __('Éleveur validé OCB') }}</label>
|
||||
<select id="ocbStatus" class="custom-select col-md-6" name="ocbStatus">
|
||||
@foreach(EleveurOcbStatus::toArray() as $ocbStatus)
|
||||
<option value="{{ $ocbStatus->value }}" @if($breeder->site->ocbStatus->equals($ocbStatus)) selected @endif>{{ $ocbStatus->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="valid_marketing_date" class="col-form-label col-md-6">{{__('Date de validation marketing') }}</label>
|
||||
<input id="valid_marketing_date" class="form-control col-md-6" type="date" name="valid_marketing_date" value="{{$breeder->site->valid_marketing_date}}" >
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="presentation_type" class="col-form-label col-md-6">{{__('Type de présentation de l\'élevage') }}</label>
|
||||
<select id="presentation_type" class="custom-select col-md-6" name="presentation_type" onchange="changeType(this)">
|
||||
@foreach(PresentationType::toArray() as $presType)
|
||||
<option value="{{ $presType->value }}" @if($breeder->site->presentation_type->equals($presType)) selected @endif>{{ $presType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group" id="div_video_link">
|
||||
<input class="form-control" type="text" name="video_link" placeholder="Lien de la vidéo" value="{{$breeder->site->video_link}}">
|
||||
</div>
|
||||
<div class="form-group" id="div_picture_site">
|
||||
<label>Photo(s) de l'élevage de type JPEG/PNG - 2Mo max. - 1000 x 667px</label></br>
|
||||
<table class="table text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Photo n°1</th>
|
||||
<th scope="col">Photo n°2</th>
|
||||
<th scope="col">Photo n°3</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
@if ($breeder->site->picture1 !== null)
|
||||
<img src="{{ asset($breeder->site->picture1) }}" style="max-height: 100px;">
|
||||
@else
|
||||
<label>Aucune photo.</label>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if ($breeder->site->picture2 !== null)
|
||||
<img src="{{ asset($breeder->site->picture2) }}" style="max-height: 100px;">
|
||||
@else
|
||||
<label>Aucune photo.</label>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@if ($breeder->site->picture3 !== null)
|
||||
<img src="{{ asset($breeder->site->picture3) }}" style="max-height: 100px;">
|
||||
@else
|
||||
<label>Aucune photo.</label>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<input class="form-control-file" type="file" name="picture1" accept="image/png, image/jpeg">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input class="form-control-file" type="file" name="picture2" accept="image/png, image/jpeg">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input class="form-control-file" type="file" name="picture3" accept="image/png, image/jpeg">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-form-label col-md-6">Type *</label>
|
||||
<select class="custom-select col-md-6" name="type">
|
||||
@foreach (OCBType::toArray() as $ocbType)
|
||||
<option value="{{ $ocbType->value }}" @if ($type->equals($ocbType))selected @endif>{{ $ocbType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input id="status" class="form-check-input" type="checkbox" name="status" @if($breeder->status) checked @endif>
|
||||
<label for="status" class="form-check-label">{{ __('Publié ?') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<input type="submit" class="btn btn-secondary" value="Modifier">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script type="text/javascript" defer>
|
||||
var addId = 1;
|
||||
|
||||
var videoDiv = $("#div_video_link");
|
||||
var pictureSiteDiv = $("#div_picture_site");
|
||||
|
||||
$(document).ready(function() {
|
||||
videoDiv = $("#div_video_link");
|
||||
pictureSiteDiv = $("#div_picture_site");
|
||||
|
||||
if ($("#presentation_type").val() === "{{ PresentationType::picture()->value }}") {
|
||||
videoDiv.hide();
|
||||
pictureSiteDiv.show();
|
||||
} else if ($("#presentation_type").val() === "{{ PresentationType::video()->value }}") {
|
||||
videoDiv.show();
|
||||
pictureSiteDiv.hide();
|
||||
}
|
||||
|
||||
addId = $('[name*= "inuavs"]').length;
|
||||
})
|
||||
|
||||
|
||||
function addInput() {
|
||||
var inuavDiv = $("#inuavs");
|
||||
|
||||
var input = document.createElement('input');
|
||||
input.id = "inuav_" + addId;
|
||||
input.className = "form-control col-md-3";
|
||||
input.name = "inuavs[]";
|
||||
input.placeholder = "Code INUAV";
|
||||
|
||||
var a = document.createElement('a');
|
||||
a.href = "javascript:void(0)";
|
||||
a.id = "inuav_" + addId + "_a";
|
||||
a.setAttribute("onclick", "deleteInuav('inuav_" + addId + "')");
|
||||
a.className = "col-form-label col-md-3";
|
||||
a.innerHTML = "Supprimer"
|
||||
inuavDiv.append(input);
|
||||
inuavDiv.append(a);
|
||||
|
||||
addId++;
|
||||
}
|
||||
|
||||
// Supprime un input INUAV avec son bouton supprimer, affiche le bouton ajouter un INUAV si il y a moins de 10 champs présents sur la page
|
||||
function deleteInuav(elementId) {
|
||||
var input = $("#" + elementId);
|
||||
input.remove();
|
||||
var a = $("#" + elementId + "_a");
|
||||
a.remove();
|
||||
}
|
||||
|
||||
function changeType(select) {
|
||||
if (select.value === "{{ PresentationType::picture()->value }}") {
|
||||
videoDiv.hide();
|
||||
pictureSiteDiv.show();
|
||||
} else if (select.value === "{{ PresentationType::video()->value }}") {
|
||||
videoDiv.show();
|
||||
pictureSiteDiv.hide();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
32
resources/views/bo/ocbbreeders/create.blade.php
Normal file
32
resources/views/bo/ocbbreeders/create.blade.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
@extends('layouts.bo')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{{ __('Ajout d\'un éleveur OCB') }}
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{route('bo.ocbbreeders.store')}}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-8 offset-md-2">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
@include('bo.ocbbreeders.formInputs')
|
||||
<div class="form-group text-center">
|
||||
<input type="submit" class="btn btn-secondary" value="Ajouter">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
46
resources/views/bo/ocbbreeders/edit.blade.php
Normal file
46
resources/views/bo/ocbbreeders/edit.blade.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
@extends('layouts.bo')
|
||||
|
||||
@section('content')
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{{__('Modification d\'un éleveur') }} - <b>{{ $type->label }}</b>
|
||||
<a href="{{route('bo.ocbbreeders.index', $type)}}" class="btn btn-sm btn-primary float-right ml-2">{{__('Retour') }}</a>
|
||||
<form action="{{route('bo.ocbbreeders.destroy', $breeder->id)}}" method="POST" class="d-inline">
|
||||
@method('DELETE')
|
||||
@csrf
|
||||
<input type="submit" class="btn btn-sm btn-danger float-right" value="Supprimer" onclick="return confirm('Êtes-vous sûr(e) ?')">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<form action="{{route('bo.ocbbreeders.update', $breeder)}}" method="POST" enctype="multipart/form-data">
|
||||
@method('PUT')
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-8 offset-md-2">
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
@include('bo.ocbbreeders.formInputs')
|
||||
<div class="form-group text-center">
|
||||
<input type="submit" class="btn btn-secondary" value="Modifier">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
206
resources/views/bo/ocbbreeders/formInputs.blade.php
Normal file
206
resources/views/bo/ocbbreeders/formInputs.blade.php
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
<div class="form-group">
|
||||
<label class="col-form-label">
|
||||
<input type="checkbox" name="display_random" @if($breeder->display_random ?? false)checked @endif>
|
||||
{{__('Afficher l\'éleveur sur le site en aléatoire') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="breeder_code"><small>{{__('Code éleveur *') }}</small></label>
|
||||
<input id="breeder_code" class="form-control" type="text" name="breeder_code" placeholder="{{__('Code éleveur *') }}" value="{{ old('breeder_code') ?? $breeder->breeder_code ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group text-center">
|
||||
<a class="btn btn-primary text-white" onclick="addInput()" id="addInuav" role="button">{{ __('Ajouter un code INUAV') }}</a>
|
||||
</div>
|
||||
<div class="form-group row" id="inuavs">
|
||||
@if(isset($breeder) and $breeder->inuavs)
|
||||
@foreach($breeder->inuavs as $inuav)
|
||||
<input id="inuav_{{ $loop->index }}" class="form-control col-md-3" name="inuavs[]" placeholder="Code INUAV" value="{{ $inuav }}">
|
||||
<a href="#" id="inuav_{{ $loop->index }}_a" onclick="deleteInuav('inuav_{{ $loop->index }}')" class="col-form-label col-md-3">{{ __('Supprimer') }}</a>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="last_name"><small>{{ __('Nom de l\'éleveur *') }}</small></label>
|
||||
<input id="last_name" class="form-control" type="text" name="last_name" placeholder="{{ __('Nom de l\'éleveur *') }}" value="{{ old('last_name') ?? $breeder->last_name ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="first_name"><small>{{ __('Prénom de l\'éleveur *') }}</small></label>
|
||||
<input id="first_name" class="form-control" type="text" name="first_name" placeholder="{{ __('Prénom de l\'éleveur *') }}" value="{{ old('first_name') ?? $breeder->first_name ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{__('Photo de l\'éleveur * de type') }} JPEG/PNG - 2Mo max.</label></br>
|
||||
<input type="file" name="picture" accept="image/png, image/jpeg">
|
||||
</br>
|
||||
</br>
|
||||
@if(isset($breeder->picture))
|
||||
<img src="{{ asset($breeder->picture ?? '') }}" style="max-height: 200px;">
|
||||
@endif
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="postal_code"><small>{{ __('Code postal de l\'éleveur *') }}</small></label>
|
||||
<input id="postal_code" class="form-control" type="text" name="postal_code" placeholder="{{ __('Code postal de l\'éleveur *') }}" value="{{ old('postal_code') ?? $breeder->postal_code ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="place"><small>{{ __('Commune de l\'éleveur *') }}</small></label>
|
||||
<input id="place" class="form-control" type="text" name="place" placeholder="{{ __('Commune de l\'éleveur *') }}" value="{{ old('place') ?? $breeder->place ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="testimony"><small>{{ __('Témoignage de l\'éleveur *') }}</small></label>
|
||||
<custom-ckeditor id="testimony" name="testimony" dbtext="{{ old('testimony') ?? $breeder->testimony ?? '' }}"></custom-ckeditor>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="latitude"><small>{{ __('Latitude *') }}</small></label>
|
||||
<input id="latitude" class="form-control" type="text" name="latitude" placeholder="{{ __('Latitude *') }}" value="{{ old('latitude') ?? $breeder->latitude ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="longitude"><small>{{ __('Longitude *') }}</small></label>
|
||||
<input id="longitude" class="form-control" type="text" name="longitude" placeholder="{{ __('Longitude *') }}" value="{{ old('longitude') ?? $breeder->longitude ?? ''}}" required>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="geo_type" class="col-form-label col-md-6">{{ __('Type de géolocalisation') }}</label>
|
||||
<select id="geo_type" class="custom-select col-md-6" name="geo_type">
|
||||
@foreach(GeoType::toArray() as $geoType)
|
||||
<option value="{{ $geoType->value }}" @if(isset($breeder) and $breeder->geo_type->equals($geoType)) selected @endif>{{ old('geo_type') ?? $geoType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="audit" class="col-form-label col-md-6">{{ __('Audit de l\'éleveur') }}</label>
|
||||
<select id="audit" class="custom-select col-md-6" name="audit">
|
||||
<option value="0" @if( isset($breeder) and !$breeder->audit) selected @endif>{{ __('Non réalisé') }}</option>
|
||||
<option value="1" @if( isset($breeder) and $breeder->audit) selected @endif>{{ __('Validé') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="ocbStatus" class="col-form-label col-md-6">{{ __('Éleveur validé OCB') }}</label>
|
||||
<select id="ocbStatus" class="custom-select col-md-6" name="ocbStatus">
|
||||
@foreach(EleveurOcbStatus::toArray() as $ocbStatus)
|
||||
<option value="{{ $ocbStatus->value }}" @if(isset($breeder) and $breeder->ocbStatus->equals($ocbStatus)) selected @endif>{{ $ocbStatus->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="valid_marketing_date" class="col-form-label col-md-6">{{__('Date de validation marketing') }}</label>
|
||||
<input id="valid_marketing_date" class="form-control col-md-6" type="date" name="valid_marketing_date" value="{{ old('valid_marketing_date') or $breeder->valid_marketing_date ?? '' }}" >
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label for="presentation_type" class="col-form-label col-md-6">{{__('Type de présentation de l\'élevage') }}</label>
|
||||
<select id="presentation_type" class="custom-select col-md-6" name="presentation_type" onchange="changeType(this)">
|
||||
@foreach(PresentationType::toArray() as $presType)
|
||||
<option value="{{ $presType->value }}" @if(isset($breeder) and $breeder->presentation_type->equals($presType)) selected @endif>{{ $presType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group" id="div_video_link">
|
||||
<label for="video_link" class="col-form-label col-md-6">{{ __('Lien de la vidéo') }}</label>
|
||||
<input id="video_link" class="form-control" type="text" name="video_link" placeholder="{{ __('Lien de la vidéo') }}" value="{{ old('video_link') or $breeder->video_link ?? ''}}">
|
||||
</div>
|
||||
<div class="form-group" id="div_picture_site">
|
||||
<label>{{ __('Photo(s) de l\'élevage de type') }} JPEG/PNG - 2Mo max. - 1000 x 667px</label></br>
|
||||
<table class="table text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" colspan="2">{{ __('Photos') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@for($i = 1; $i <= 3; $i++)
|
||||
<tr>
|
||||
<td>{{__('Photo n°:number', ['number' => $i]) }}</td>
|
||||
<td class="text-center">
|
||||
<input class="form-control-file" type="file" name="picture{{$i}}" accept="image/png, image/jpeg">
|
||||
</td>
|
||||
</tr>
|
||||
@if($breeder ?? false)
|
||||
<tr colspan="2">
|
||||
<td class="text-center">
|
||||
@if ($breeder->{'picture' . $i})
|
||||
<img src="{{ asset($breeder->{'picture' . $i}) }}" style="max-height: 100px;">
|
||||
@else
|
||||
<label>{{__('Aucune photo') }}.</label>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-form-label col-md-6">{{ __('Type *') }}</label>
|
||||
<select class="custom-select col-md-6" name="ocbType">
|
||||
@foreach (OCBType::toArray() as $ocbType)
|
||||
<option value="{{ $ocbType->value }}" @if (isset($type) and $type->equals($ocbType))selected @endif>{{ $ocbType->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input id="status" class="form-check-input" type="checkbox" name="status" @if( old('status') or $breeder->status ?? false) checked @endif value="1">
|
||||
<label for="status" class="form-check-label">{{ __('Publié ?') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('scripts')
|
||||
<script type="text/javascript" defer>
|
||||
var addId = 1;
|
||||
|
||||
var videoDiv = $("#div_video_link");
|
||||
var pictureSiteDiv = $("#div_picture_site");
|
||||
|
||||
$(document).ready(function() {
|
||||
videoDiv = $("#div_video_link");
|
||||
pictureSiteDiv = $("#div_picture_site");
|
||||
|
||||
if ($("#presentation_type").val() === "{{ PresentationType::picture()->value }}") {
|
||||
videoDiv.hide();
|
||||
pictureSiteDiv.show();
|
||||
} else if ($("#presentation_type").val() === "{{ PresentationType::video()->value }}") {
|
||||
videoDiv.show();
|
||||
pictureSiteDiv.hide();
|
||||
}
|
||||
|
||||
addId = $('[name*= "inuavs"]').length;
|
||||
})
|
||||
|
||||
|
||||
function addInput() {
|
||||
var inuavDiv = $("#inuavs");
|
||||
|
||||
var input = document.createElement('input');
|
||||
input.id = "inuav_" + addId;
|
||||
input.className = "form-control col-md-3";
|
||||
input.name = "inuavs[]";
|
||||
input.placeholder = "Code INUAV";
|
||||
|
||||
var a = document.createElement('a');
|
||||
a.href = "javascript:void(0)";
|
||||
a.id = "inuav_" + addId + "_a";
|
||||
a.setAttribute("onclick", "deleteInuav('inuav_" + addId + "')");
|
||||
a.className = "col-form-label col-md-3";
|
||||
a.innerHTML = "Supprimer"
|
||||
inuavDiv.append(input);
|
||||
inuavDiv.append(a);
|
||||
|
||||
addId++;
|
||||
}
|
||||
|
||||
// Supprime un input INUAV avec son bouton supprimer, affiche le bouton ajouter un INUAV si il y a moins de 10 champs présents sur la page
|
||||
function deleteInuav(elementId) {
|
||||
var input = $("#" + elementId);
|
||||
input.remove();
|
||||
var a = $("#" + elementId + "_a");
|
||||
a.remove();
|
||||
}
|
||||
|
||||
function changeType(select) {
|
||||
if (select.value === "{{ PresentationType::picture()->value }}") {
|
||||
videoDiv.hide();
|
||||
pictureSiteDiv.show();
|
||||
} else if (select.value === "{{ PresentationType::video()->value }}") {
|
||||
videoDiv.show();
|
||||
pictureSiteDiv.hide();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
<div class="card">
|
||||
<div class="card-header">
|
||||
{{ __('Liste des éleveurs') }} - {{ $type->label }}
|
||||
<a href="{{route('bo.breeders.create')}}" class="btn btn-sm btn-primary float-right">Ajouter</a>
|
||||
<a href="{{route('bo.ocbbreeders.create')}}" class="btn btn-sm btn-primary float-right">Ajouter</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<i class="fas fa-check check-green"></i>
|
||||
@endif
|
||||
</td>
|
||||
<td><a href="{{route('bo.breeders.edit', compact('breeder', 'type'))}}" class="btn btn-sm btn-primary">{{ __('Éditer') }}</a></td>
|
||||
<td><a href="{{route('bo.ocbbreeders.edit', compact('breeder', 'type'))}}" class="btn btn-sm btn-primary">{{ __('Éditer') }}</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
|
|
@ -10,11 +10,13 @@
|
|||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
<title>{{ config('app.name', 'Laravel') }}@hasSection('title') - @yield('title')@endif</title>
|
||||
|
||||
<!-- Scripts -->
|
||||
{{-- TODO : Ajouter jQuery dans app.js --}}
|
||||
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('assets/images/favicon.png') }}" type="image/png">
|
||||
<link rel="icon" sizes="16x16" href="{{ asset('assets/images/LG-favicons_16x16.png') }}" type="image/png">
|
||||
<link rel="icon" sizes="32x32" href="{{ asset('assets/images/LG-favicons_32x32.png') }}" type="image/png">
|
||||
<link rel="icon" sizes="48x48" href="{{ asset('assets/images/LG-favicons_48x48.png') }}" type="image/png">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
|
|
@ -108,11 +110,11 @@
|
|||
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button">Les éleveurs OCB</a>
|
||||
<div class="dropdown-menu">
|
||||
@foreach(OCBType::toArray() as $ocbType)
|
||||
<a class="dropdown-item" href="{{route('bo.breeders.index', $ocbType )}}">{{ __('Éleveur :ocbtype', [
|
||||
<a class="dropdown-item" href="{{route('bo.ocbbreeders.index', $ocbType )}}">{{ __('Éleveur :ocbtype', [
|
||||
'ocbtype' => $ocbType->label
|
||||
])}}</a>
|
||||
@endforeach
|
||||
<a class="dropdown-item" href="{{route('bo.breeders.create')}}">Ajouter un éleveur</a>
|
||||
<a class="dropdown-item" href="{{route('bo.ocbbreeders.create')}}">Ajouter un éleveur</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Bo\BreedersController;
|
||||
use App\Http\Controllers\Bo\OCBBreedersController;
|
||||
use App\Http\Controllers\Bo\OCBContentController;
|
||||
use App\Http\Controllers\Bo\DashboardController;
|
||||
use App\Http\Controllers\Bo\FaqThemesController;
|
||||
|
|
@ -68,8 +68,8 @@ Route::prefix('bo')
|
|||
Route::resource('ads', 'AdsController');
|
||||
Route::resource('articles', 'ArticlesController');
|
||||
Route::resource('balanced-menus', 'BalancedMenusController');
|
||||
Route::resource('breeders', 'BreedersController')->except([
|
||||
'index', 'edit', 'show'
|
||||
Route::resource('ocbbreeders', 'OCBBreedersController')->except([
|
||||
'index', 'edit', 'show', 'update'
|
||||
]);
|
||||
Route::resource('consumption-times', 'ConsumptionTimesController');
|
||||
Route::resource('faq-questions', 'FaqQuestionsController');
|
||||
|
|
@ -88,8 +88,9 @@ Route::prefix('bo')
|
|||
});
|
||||
|
||||
Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
|
||||
Route::get('/breeders/{type}/{breeder}', [BreedersController::class, 'edit'])->name('breeders.edit');
|
||||
Route::get('/breeders/{type}', [BreedersController::class, 'index'])->name('breeders.index');
|
||||
Route::put('/ocbbreeders/{breeder}', [OCBBreedersController::class, 'update'])->name('ocbbreeders.update');
|
||||
Route::get('/ocbbreeders/{type}/{breeder}', [OCBBreedersController::class, 'edit'])->name('ocbbreeders.edit');
|
||||
Route::get('/ocbbreeders/{type}', [OCBBreedersController::class, 'index'])->name('ocbbreeders.index');
|
||||
Route::get('/faq-themes/change-order/{id}/{action}', [FaqThemesController::class, 'changeOrder'])->name('faq-themes.change-order');
|
||||
Route::get('/home-slider-pictures/change-order/{id}/{action}', [HomeSliderPicturesController::class, 'changeOrder'])->name('home-slider-pictures.change-order');
|
||||
Route::get('/moments/change-star/{id}', [MomentsController::class, 'setStar'])->name('moments.change-star');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue