get(); return view('bo.ranges.index', compact('r')); } public function create() { return view('bo.ranges.create'); } public function store(Request $request) { $name = $request->name; $desc = $request->description; $picture = $request->picture; $picture_r = $request->picture_r; $color = $request->color; $slug = Str::slug($name); $request->validate([ 'name' => 'required|max:50', 'description' => 'required|max:255', 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=640,height=564', 'picture_r' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=1366,height=563', 'color' => 'required|max:20', ]); $imageName = Str::slug($name) .'-le-gaulois.'.$picture->extension(); $imageName_r = Str::slug($name) .'-le-gaulois_r.'.$picture_r->extension(); $picture->move(public_path('images/gammes/' . date('Y') . '/' . date('m') . '/'), $imageName); $picture_r->move(public_path('images/gammes/' . date('Y') . '/' . date('m') . '/'), $imageName_r); $r = new Ranges(); $r->name = $name; $r->description = $desc; $r->picture = date('Y') . '/' . date('m') . '/' . $imageName; $r->picture_r = date('Y') . '/' . date('m') . '/' . $imageName_r; $r->color = $color; $r->status = 0; $r->order = $this->getLastOrder(); $r->slug = $slug; $r->save(); return redirect()->route('bo.ranges.index'); } public function edit($id) { $r = Ranges::findOrFail($id); return view('bo.ranges.edit', compact('r')); } public function update(Request $request, $id) { $name = $request->name; $desc = $request->description; $picture = $request->picture; $picture_r = $request->picture_r; $color = $request->color; $status = $request->status === null ? 0 : 1 ; $slug = Str::slug($name); $request->validate([ 'name' => 'required|max:50', 'description' => 'required|max:255', 'color' => 'required|max:20', ]); if ($picture !== NULL && $picture_r !== NULL){ $request->validate([ 'picture' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:width=640,height=564', 'picture_r' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:width=1366,height=563', ]); }elseif ($picture !== NULL && $picture_r === NULL){ $request->validate([ 'picture' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=640,height=564' ]); }elseif ($picture === NULL && $picture_r !== NULL){ $request->validate([ 'picture_r' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=1366,height=563' ]); } $r = Ranges::findOrFail($id); if ($picture !== NULL){ if(file_exists(public_path('images/gammes/') . $r->picture)) unlink(public_path('images/gammes/') . $r->picture); $imageName = Str::slug($name) .'.'.$picture->extension(); $picture->move(public_path('images/gammes/' . date('Y') . '/' . date('m') . '/'), $imageName); } if ($picture_r !== NULL) { if(file_exists(public_path('images/gammes/') . $r->picture_r)) unlink(public_path('images/gammes/') . $r->picture_r); $imageName_r = Str::slug($name) . '_r.' . $picture_r->extension(); $picture_r->move(public_path('images/gammes/' . date('Y') . '/' . date('m') . '/'), $imageName_r); } $r->name = $name; $r->description = $desc; if ($picture !== NULL) $r->picture = date('Y') . '/' . date('m') . '/' . $imageName; if ($picture_r !== NULL) $r->picture_r = date('Y') . '/' . date('m') . '/' . $imageName_r; $r->color = $color; $r->status = $status; $r->slug = $slug; $r->save(); return redirect()->route('bo.ranges.edit', ['range' => $r->id])->with('success', 'Enregistré !'); } public function destroy($id) { // TODO : Vérification si produit(s) lié(s) avant suppression $r = Ranges::findOrFail($id); if(file_exists(public_path('images/gammes/') . $r->picture)) unlink(public_path('images/gammes/') . $r->picture); if(file_exists(public_path('images/gammes/') . $r->picture_r)) unlink(public_path('images/gammes/') . $r->picture_r); $r->delete(); return redirect()->route('bo.ranges.index'); } public function changeOrder($id, $action) { $current = Ranges::findOrFail($id); if ($action === 'up'){ $tmp = Ranges::where('order', $current->order - 1)->first(); $tmp->order = $tmp->order + 1; $current->order = $current->order - 1; }else{ $tmp = Ranges::where('order', $current->order + 1)->first(); $tmp->order = $tmp->order - 1; $current->order = $current->order + 1; } $tmp->save(); $current->save(); return redirect()->route('bo.ranges.index'); } private function getLastOrder() { $order = Ranges::select('order')->orderBy('order', 'DESC')->first(); if ($order === NULL) return 1; return $order->order + 1; } }