middleware('auth'); $this->middleware('permission:village-list', ['only' => ['index']]); $this->middleware('permission:village-create', ['only' => ['create', 'store']]); $this->middleware('permission:village-edit', ['only' => ['edit', 'update']]); $this->middleware('permission:village-delete', ['only' => ['destroy', 'inactive', 'activate']]); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $villages = Village::orderBy('name', 'asc')->paginate(5000); $parishes = Parish::pluck('name', 'id'); return view('clinical_data::villages.index', compact('villages', 'parishes')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $parishes = Parish::all(['id', 'name', 'subcounty_id'])->pluck("name_with_subcounty", "id")->prepend('- select -', '')->toArray(); return view('clinical_data::villages.create', compact('parishes')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { request()->validate([ 'name' => 'required', 'parish_id' => 'required' ]); $user_id = Auth::user()->id; $village = new Village; $village->name = $request->name; $village->parish_id = $request->parish_id; $village->created_by = $user_id; $village->updated_by = $user_id; try { $village->save(); flash($request->name . " Village has been saved")->success(); return redirect("/villages/"); } catch (QueryException $e) { flash("An error occurred")->error(); return back()->withInput(); } } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $village = Village::where(['id' => $id])->first(); $parishes = Parish::all(['id', 'name', 'subcounty_id'])->pluck("name_with_subcounty", "id")->prepend('- select -', '')->toArray(); if (!$village) { flash()->error("That village is not registered"); return redirect('/villages/'); } else { return view('clinical_data::villages.edit', compact('village', 'parishes')); } } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { request()->validate([ 'name' => 'required', 'parish_id' => 'required' ]); $village = Village::find($id); $village->name = $request->name; $village->parish_id = $request->parish_id; $village->updated_by = Auth::user()->id; try { $village->save(); flash($request->name . " Village has been updated")->success(); return redirect("/villages/"); } catch (QueryException $e) { flash("An error occurred")->error(); return back()->withInput(); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $village = Village::find($id); if ($village->delete()) { flash("Village has been deleted.")->success(); return redirect('/villages/'); } } /** * Display a listing of the inactive resource(s). * * @return \Illuminate\Http\Response */ public function inactive() { $villages = Village::onlyTrashed() ->orderBy('name', 'asc') ->get(); $parishes = Parish::pluck('name', 'id'); if (count($villages) < 1) { flash()->error("There is no inactive villages"); return redirect('/villages/'); } else { return view('clinical_data::villages.inactive', compact('villages', 'parishes')); } } /** * Activate the specified resource in storage. * * @param int $id * @return \Illuminate\Http\Response */ public function activate($id) { $village = Village::withTrashed()->find($id); if($village->restore()){ flash("Village has been activated.")->success(); return redirect('/villages/inactive'); } } }