get(); $sectors = BusinessSector::orderBy('order', 'ASC')->get(); return view('bo.employees.index', compact('employees', 'sectors')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $s = BusinessSector::orderBy('order', 'ASC')->get(); return view('bo.employees.create', compact('s')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $lastname = $request->lastname; $firstname = $request->firstname; $video = $request->video; $photo = $request->photo; $request->validate([ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'job_title' => 'max:255', 'video' => 'max:255', 'photo' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:width=100,height=100', ]); $imageName = Str::slug($firstname . "-" . $lastname) . '-jeusselin.' . $photo->extension(); $photo->move( storage_path(sprintf('app/public/modelfiles/profiles/%s/%s', date('Y'), date('m'))), $imageName ); $e = new Employees(); $e->civility = $request->civility; $e->lastname = $lastname; $e->firstname = $firstname; $e->job_title = $request->job_title; $e->video = $video; $e->photo = sprintf('storage/modelfiles/profiles/%s/%s/%s', date('Y'), date('m'), $imageName); $e->order = $this->getLastOrder(); $e->save(); // prise en charge de la liaison avec les secteurs $associatedSectors = $request->associated_sectors; $e->businessSectors()->sync($associatedSectors); return redirect() ->route('bo.employees.index') ->with('success', trans( ':model a été crée', ['model' => 'Employe'] )); } /** * Show the form for editing the specified resource. * * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) { $e = Employees::findOrFail($id); $s = BusinessSector::orderBy('order', 'ASC')->get(); $seIds = []; foreach ($e->businessSectors as $sector_employee) { $seIds[] = $sector_employee->id; } return view('bo.employees.edit', compact('e', 's'))->with('seIds', $seIds); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $lastname = $request->lastname; $firstname = $request->firstname; $video = $request->video; $photo = $request->file('photo'); $request->validate([ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'job_title' => 'max:255', 'video' => 'max:255', ]); if ($photo !== null) { $request->validate([ 'photo' => 'image|mimes:jpeg,png,jpg|max:2048|dimensions:width=100,height=100', ]); } $e = Employees::findOrFail($id); if ($photo !== null) { if (file_exists(storage_path(Str::replaceFirst('storage', 'app/public', $e->photo)))) { unlink(storage_path(Str::replaceFirst('storage', 'app/public', $e->photo))); } $imageName = Str::slug($firstname . "-" . $lastname) . '-jeusselin.' . $photo->extension(); $photo->move( storage_path(sprintf('app/public/modelfiles/profiles/%s/%s', date('Y'), date('m'))), $imageName ); } $e->civility = $request->civility; $e->lastname = $lastname; $e->firstname = $firstname; $e->job_title = $request->job_title; $e->video = $video; if ($photo !== null) { $e->photo = sprintf('storage/modelfiles/profiles/%s/%s/%s', date('Y'), date('m'), $imageName); } $e->saveOrFail(); // prise en charge de la liaison avec les secteurs $associatedSectors = $request->associated_sectors; $e->businessSectors()->sync($associatedSectors); return redirect() ->route('bo.employees.index') ->with('success', trans( ':model a été mis à jour', ['model' => 'Employee'] )); } /** * Remove the specified resource from storage. * * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) { $e = Employees::findOrFail($id); if (file_exists(storage_path(Str::replaceFirst('storage', 'app/public', $e->photo)))) { unlink(storage_path(Str::replaceFirst('storage', 'app/public', $e->photo))); } $e->businessSectors()->detach(); // prise en charge de la liaison avec les secteurs if ($e->deleteOrFail()) { return redirect() ->route('bo.employees.index') ->with('warning', trans( ':model a bien été supprimé', ['model' => 'Employe'] )); } return back(); } public function changeOrder($id, $action) { $current = Employees::findOrFail($id); if ($action === 'up') { $tmp = Employees::where('order', '<', $current->order)->orderBy('order', 'DESC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } else { $tmp = Employees::where('order', '>', $current->order)->orderBy('order', 'ASC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } $tmp->save(); $current->save(); return redirect()->route('bo.employees.index'); } private function getLastOrder() { $order = Employees::select('order')->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }