middleware([ "auth" ]); $this->middleware([ "check.auth:washing.machine.reservation.list" ])->only(["index", "appindex"]); $this->middleware([ "check.auth:washing.machine.reservation.show" ])->only("show"); $this->middleware([ "check.auth:washing.machine.reservation.create" ])->only("create", "store"); $this->middleware([ "check.auth:washing.machine.reservation.edit" ])->only("edit", "update"); $this->middleware([ "check.auth:washing.machine.reservation.delete" ])->only("delete"); } /** * Display a listing of the resource. * * @param Request $request * @return Application|Factory|View */ public function index(Request $request) { $reservations = WashingReservation::query()->orderBY('time' , 'asc')->paginate($request->query("limit", 20)); return Response::detect("washing-reservations.index", [ "reservations" => $reservations]); } /** * Show the form for creating a new resource. * * @return Application|Factory|View */ public function create() { $machines = WashingMachine::all(); $users = User::all(); return Response::detect("washing-reservations.create", [ 'machines' => $machines, 'users' => $users ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return Application|Factory|View */ public function store(Request $request) { $data = $request->validate([ "time" => "required", "machine_id" => "required|unique:washing_reservations,machine_id,NULL,id,time,' . $request->time" ]); $machineReservation = new WashingReservation($data); $machineReservation->user_id = auth()->user()->id; $allMachineReservations = WashingReservation::query()->where('time', '=', $request->time)->where('machine_id', '=', $request->machine_id)->get(); if (count($allMachineReservations) > 0) { return redirect()->route("washing-reservations.create", ["washing_reservation" => $machineReservation])->with('ReservationExists', '
Der findes allerede en reservation til denne tid, men denne vaskemaskine!
'); } else { $machineReservation->save(); $reservations = WashingReservation::query()->paginate($request->input("limit", 20)); return redirect()->route('washing-reservations.appindex', ["reservations" => $reservations]); } } /** * Display the specified resource. * * @param int $id * @return Application|Factory|View */ public function show($id) { $machineReservation = WashingReservation::find($id); return Response::detect("washing-reservations.show", [ "machineReservation" => $machineReservation ]); } /** * Show the form for editing the specified resource. * * @param int $id * @return Application|Factory|View */ public function edit($id) { $reservation = WashingReservation::query()->find($id); $machines = WashingMachine::all(); return Response::detect("washing-reservations.edit", ['washing_reservation' => $reservation, 'machines' => $machines ]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return Application|Factory|View */ public function update(Request $request, $id) { $data = $request->validate([ "time" => "required", "machine" => "required" ]); $machineReservation = WashingReservation::find($id); $machineReservation->update($data); $saved = $machineReservation->save(); if(!$saved){ return Response::detect("washing-reservations.update", [ "washing_reservation" => $machineReservation ]); }else{ $reservations = WashingReservation::query()->paginate($request->query("limit", 20)); return Response::detect("washing-reservations.index", [ "reservations" => $reservations]); } } /** * Remove the specified resource from storage. * * @param int $id * @return RedirectResponse */ public function destroy($id) { $machineReservation = WashingReservation::find($id); $machineReservation->delete(); $reservations = WashingReservation::query()->paginate( 20); return redirect()->route("washing-reservations.index", [ "reservations" => $reservations]); } public function api(Request $request){ if($request->ajax()){ $date = $request->date; $datetext = $request->datetext; $machines = WashingMachine::all(); if($request->machine_id == 0) $request->machine_id = WashingMachine::all()->first()->id; $reservations = WashingReservation::query()->where("machine_id", "=", $request->machine_id)->where("time", "LIKE", $datetext."%")->get(); $times = []; foreach ($reservations as $reservation){ array_push($times, $reservation->time); } $output = json_encode(['date' => $date, 'washingmachines' => $machines, 'unavailable_times' => $times ]); return Response($output); } } function search(Request $request){ if($request->ajax()){ $output = "