role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_viewAny')) ? Response::allow() : Response::deny('you are not the chosen one'); $search_types = []; array_push($search_types,array("value" => "username", "name" => "user")); array_push($search_types,array("value" => "room", "name" => "room")); array_push($search_types,array("value" => "start", "name" => "date_start")); array_push($search_types,array("value" => "end", "name" => "date_end")); $PerPagination = $request->input('p') ?? 10; $search_term = $request->input('search_term'); $search_type = $request->input('search_type'); $search_compare = $request->input('search_compare'); if($search_term != ""){ switch ($search_type){ case('username'): switch($search_compare){ case('='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('room'): $parts = explode('.',$search_term); $total_parts = count($parts); if($total_parts == 1){ $room = $search_term; } else{ $room = $parts[1]; } switch($search_compare){ case('='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('start'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('end'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; default: $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } } else{ $reservations_display = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations_track = Loan::where('loan_type_id','!=',LoanType::where('name','=','Loan')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; } return view('reservations.index') ->with('search_types',$search_types) ->with('data',$reservations_display) ->with('reservations',$reservations_track) ->with('data_name','reservation') ->with('data_names','reservations') ; } public function pickups(Request $request){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_pickup')) ? Response::allow() : Response::deny('you are not the chosen one'); $search_types = []; array_push($search_types,array("value" => "username", "name" => "user")); array_push($search_types,array("value" => "room", "name" => "room")); array_push($search_types,array("value" => "start", "name" => "date_start")); array_push($search_types,array("value" => "end", "name" => "date_end")); $PerPagination = $request->input('p') ?? 10; $search_term = $request->input('search_term'); $search_type = $request->input('search_type'); $search_compare = $request->input('search_compare'); if($search_term != ""){ switch ($search_type) { case('username'): switch ($search_compare) { case('='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term).'%'; }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('room'): $parts = explode('.',$search_term); $total_parts = count($parts); if($total_parts == 1){ $room = $search_term; } else{ $room = $parts[1]; } switch($search_compare){ case('='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('start'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('end'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; } } else{ $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Pick Up')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; } return view('reservations.pickups') ->with('search_types',$search_types) ->with('data',$loans) ->with('reservations',$reservations) ->with('data_name','pickup') ->with('data_names','pickups') ; } public function setups(Request $request){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_setup')) ? Response::allow() : Response::deny('you are not the chosen one'); $search_types = []; array_push($search_types,array("value" => "username", "name" => "user")); array_push($search_types,array("value" => "room", "name" => "room")); array_push($search_types,array("value" => "start", "name" => "date_start")); array_push($search_types,array("value" => "end", "name" => "date_end")); $PerPagination = $request->input('p') ?? 10; $search_term = $request->input('search_term'); $search_type = $request->input('search_type'); $search_compare = $request->input('search_compare'); if($search_term != ""){ switch ($search_type) { case('username'): switch ($search_compare) { case('='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('room'): $parts = explode('.',$search_term); $total_parts = count($parts); if($total_parts == 1){ $room = $search_term; } else{ $room = $parts[1]; } switch($search_compare){ case('='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','=',$room); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('start'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('end'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; } } else{ $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; $reservations = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Set Up')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','loanable_type','loanable_id','date_start','date_end') ->Paginate($PerPagination) ; } return view('reservations.setups') ->with('search_types',$search_types) ->with('data',$loans) ->with('reservations',$reservations) ->with('data_name','setup') ->with('data_names','setups') ; } public function validations(Request $request){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_validate')) ? Response::allow() : Response::deny('you are not the chosen one'); $search_types = []; array_push($search_types,array("value" => "username", "name" => "user")); array_push($search_types,array("value" => "room", "name" => "room")); array_push($search_types,array("value" => "start", "name" => "date_start")); array_push($search_types,array("value" => "end", "name" => "date_end")); $PerPagination = $request->input('p') ?? 10; $search_term = $request->input('search_term'); $search_type = $request->input('search_type'); $search_compare = $request->input('search_compare'); if($search_term != ""){ switch ($search_type){ case('username'): switch($search_compare){ case('='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','=',$search_term); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where(function ($query) use ($search_term){ $query->whereHas('user',function ($query) use ($search_term){ $query->where('username','like','%'.$search_term.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('room'): $parts = explode('.',$search_term); $total_parts = count($parts); if($total_parts == 1){ $room = $search_term; } else{ $room = $parts[1]; } switch($search_compare){ default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where(function ($query) use ($room){ $query->whereHas('room',function ($query) use ($room){ $query->where('name','like','%'.$room.'%'); }); }) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('start'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_start','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_start','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_start','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; case('end'): $parts = explode('.',$search_term); $d = $parts[0]; $m = $parts[1]; $y = $parts[2]; $constructed_date = $y."-".$m."-".$d; switch($search_compare){ case('>='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_end','>=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; case('<='): $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_end','<=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->where('date_end','=',$constructed_date) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; } break; default: $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; break; } } else{ $loans = Loan::where('loan_type_id','=',LoanType::where('name','=','Reservation - Awaiting')->first()->id) ->select('*',DB::raw('count(loanable_id) as amount')) ->groupBy('user_id','date_start','date_end') ->Paginate($PerPagination) ; } return view('reservations.validations') ->with('search_types',$search_types) ->with('data',$loans) ->with('data_name','validation') ->with('data_names','validations') ; } public function create(){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_create')) ? Response::allow() : Response::deny('you are not the chosen one'); $cabels = Cabel::all(); $cabels_valid = []; foreach($cabels as $cabel){ $available = $cabel->total - (count($cabel->loans) + count($cabel->reservations)); if($available >= 1){ array_push($cabels_valid,$cabel); } } $products = Product::all(); $products_valid = []; foreach($products as $product){ $available = $product->total - (count($product->loans) + count($product->reservations)); if($available >= 1){ array_push($products_valid,$product); } } return view('reservations.create') ->with('cabels', $cabels_valid) ->with('products', $products_valid) ->with('users', User::all()) ->with('rooms', Room::all()) ; } public function store(Request $request){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_create')) ? Response::allow() : Response::deny('you are not the chosen one'); $user = User::where('username','=',$request->user)->first(); $room = Room::where('id','=',$request->room_id)->first(); $loan_type = LoanType::where('name','=','Reservation - Awaiting')->first(); $date_start = $request->date_start; $date_end = $request->date_end; $date_current = new DateTime();; $deadline = new Carbon($date_start); $deadline = $deadline->subWeekdays(1); $deadline->setHour(8); $deadline->setMinutes(15); $cabels = []; $products = []; if(isset($request->products)){ foreach($request->products as $key => $value){ $product = Product::where('id','=',$request->product_id[$key])->first(); for($i = 1; $i <= $request->product_amount[$key];$i++){ $user->loans()->create([ 'loanable_id' => $request->product_id[$key], 'loanable_type' => get_class($product), 'loan_type_id' => $loan_type->id, 'room_id' => $room->id, 'date_start' => $date_start, 'date_end' => $date_end, 'date_deadline' => $deadline ]); } Logger::LogReserved($product->id,get_class($product),$request->product_amount[$key],$user->id); $item = [$product,$request->product_amount[$key]]; array_push($products,$item); } } else{ $products = Null; } if(isset($request->cabels)){ foreach($request->cabels as $key => $value){ $cabel = Cabel::where('id','=',$request->cabel_id[$key])->first(); for($i = 1; $i <= $request->cabel_amount[$key];$i++){ $user->loans()->create([ 'loanable_id' => $request->cabel_id[$key], 'loanable_type' => get_class($cabel), 'loan_type_id' => $loan_type->id, 'room_id' => $room->id, 'date_start' => $date_start, 'date_end' => $date_end, 'date_deadline' => $deadline ]); } Logger::LogReserved($cabel->id,get_class($cabel),$request->cabel_amount[$key],$user->id); $item = [$cabel,$request->cabel_amount[$key]]; array_push($cabels,$item); } } else{ $cabels = Null; } // Send Mail if($user->role->name == 'Underviser') { $email_sufix = "@sde.dk"; } else { $email_sufix = "@edu.sde.dk"; } $email = $user->username.$email_sufix; $logo = "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"; $mj = new Client(config('app.mail_username'), config('app.mail_password'),true); $body = [ 'FromEmail' => config('app.mail_from_address'), 'FromName' => config('app.mail_from_name'), 'Subject' => "Reservation - Validering", 'Html-part' => view('emails.reservation') ->with('logo',$logo) ->with('user',$user) ->with('room',$room) ->with('date',$date_current) ->with('deadline',$deadline) ->with('products',$products) ->with('cabels',$cabels) ->render(), 'Recipients' => [ [ 'Email' => $email ] ], 'Inline_attachments' => [ [ 'Content-type' => "image/png", 'Filename' => "logo.png", 'content' => $logo ] ] ]; // All resources are located in the Resources class $response = $mj->post(Resources::$Email,['body' => $body]); return redirect()->route('reservations.index'); } public function cancel(Request $request,$reservation){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_cancel')) ? Response::allow() : Response::deny('you are not the chosen one'); $reservation_obj = Loan::where('id','=',$request->reservation)->first(); $loan_type = LoanType::where('name','=','Reservation - Awaiting')->first(); $user = User::where('id','=',$reservation_obj->user->id)->first(); $room = Room::where('id','=',$reservation_obj->room->id)->first(); $date_start = $reservation_obj->date_start; $reservations = Loan::where('loan_type_id','=',$loan_type->id) ->where('user_id','=',$user->id) ->where('room_id','=',$room->id) ->where('date_start','=',$date_start) ->get() ; foreach($reservations as $loan){ $loan->delete(); } return redirect()->route('reservations.validations'); } public function validate_page(Request $request,$reservation){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_validate')) ? Response::allow() : Response::deny('you are not the chosen one'); $reservation_obj = Loan::where('id','=',$reservation)->first(); $loan_type = LoanType::where('name','=','Reservation - Awaiting')->first(); $user = User::where('id','=',$reservation_obj->user->id)->first(); $room = Room::where('id','=',$reservation_obj->room->id)->first(); $date_start = $reservation_obj->date_start; $date_end = $reservation_obj->date_end; $reservations = Loan::where('loan_type_id','=',$loan_type->id) ->where('user_id','=',$user->id) ->where('room_id','=',$room->id) ->where('date_start','=',$date_start) ->where('date_end','=',$date_end) ->groupBy('loanable_type','loanable_id') ->select('*',DB::raw('count(loanable_id) as amount')) ->get() ; return view('reservations.validate') ->with('data',$reservation_obj) ->with('user',$user) ->with('room',$room) ->with('reservations',$reservations) ; } public function validate_action(Request $request, $reservation){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_validate')) ? Response::allow() : Response::deny('you are not the chosen one'); $reservation_obj = Loan::where('id','=',$reservation)->first(); $loan_type = LoanType::where('name','=','Reservation - Awaiting')->first(); $user = User::where('id','=',$reservation_obj->user->id)->first(); $room = Room::where('id','=',$reservation_obj->room->id)->first(); $date_start = $reservation_obj->date_start; $date_end = $reservation_obj->date_end; $deadline = $reservation_obj->date_deadline; $reservations = Loan::where('loan_type_id','=',$loan_type->id) ->where('user_id','=',$user->id) ->where('room_id','=',$room->id) ->where('date_start','=',$date_start) ->where('date_end','=',$date_end) ->groupBy('loanable_type','loanable_id') ->select('*',DB::raw('count(loanable_id) as amount')) ->get() ; $loan_products = []; $loan_cabels = []; $products_total_amount = 0; $cabels_total_amount = 0; $loan_type_new = LoanType::where('name','=','Reservation - Set Up')->first(); $total = 0; foreach($reservations as $reservation){ switch($reservation->loanable_type){ case('App\Models\Product'): $product = Product::where('id','=',$reservation->loanable_id)->first(); $loan_selection = Loan::where('user_id','=',$user->id) ->where('loan_type_id','=',$loan_type->id) ->where('loanable_type','=',get_class($product)) ->where('loanable_id','=',$product->id) ->limit($reservation->amount) ->get() ; foreach($loan_selection as $loan){ $loan->loan_type_id = $loan_type_new->id; $loan->save(); $total += 1; } array_push($loan_products,$reservation); $products_total_amount += 1; break; case('App\Models\Cabel'): $product = Cabel::where('id','=',$reservation->loanable_id)->first(); $loan_selection = Loan::where('user_id','=',$user->id) ->where('loan_type_id','=',$loan_type->id) ->where('loanable_type','=',get_class($product)) ->where('loanable_id','=',$product->id) ->limit($reservation->amount) ->get() ; foreach($loan_selection as $loan){ $loan->loan_type_id = $loan_type_new->id; $loan->save(); $total += 1; } array_push($loan_cabels,$reservation); $cabels_total_amount += 1; break; } } Logger::LogValidated($reservation_obj->id,get_class($reservation_obj),$user->id,$total); // Generate the PDF // Data for the PDF $logo = "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"; $loaner_signature = $request->loanerSigRawData; $lender_signature = $request->lenderSigRawData; $date = new DateTime(); $timestamp = $date->getTimestamp(); $user_id = $user->id; // Set the PDF File data $pdf_file_name = $user->username."_".$timestamp; $pdf_file_extension = '.pdf'; $pdf_file = $pdf_file_name.$pdf_file_extension; // Create the PDF by putting data into the pdf view $pdf = PDF::loadView('pdf.reservation',['date_start' => $date_start,'date_end' => $date_end,'loaner' => $loaner_signature, 'lender' => $lender_signature,'user' => $user,'cabels' => $loan_cabels,'cabels_total_amount' => $cabels_total_amount,'products' => $loan_products,'products_total_amount' => $products_total_amount,'room' => $room]); // Store the PDF file on the server $location = "reservations/"; $file_name = $location.$pdf_file; $file_put = Storage::put($file_name, $pdf->output()); $file_path = storage_path($file_name); $file = Storage::files($file_path); // Create the Contract $contract = new Contract(); $contract->user_id = $user->id; $contract->timestamp = $timestamp; $contract->type = "reservations"; $contract->save(); // Send Mail if($user->role->name == 'Underviser') { $email_sufix = "@sde.dk"; } else { $email_sufix = "@edu.sde.dk"; } $email = $user->username.$email_sufix; $mj = new Client(config('app.mail_username'), config('app.mail_password'),true); $body = [ 'FromEmail' => config('app.mail_from_address'), 'FromName' => config('app.mail_from_name'), 'Subject' => "Reservation - Validering", 'Html-part' => view('emails.validation') ->with('logo',$logo) ->with('user',$user) ->with('date',$date) ->with('deadline',$deadline) ->render(), 'Recipients' => [ [ 'Email' => $email ] ], 'Attachments' => [ [ 'Content-type' => "application/pdf", 'Filename' => 'contract.pdf', 'content' => base64_encode($pdf->output()) ] ], 'Inline_attachments' => [ [ 'Content-type' => "image/png", 'Filename' => "logo.png", 'content' => $logo ] ] ]; // All resources are located in the Resources class $response = $mj->post(Resources::$Email,['body' => $body]); return redirect()->route('reservations.validations'); } public function setup(Request $request, $reservation){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_setup')) ? Response::allow() : Response::deny('you are not the chosen one'); $reservation_obj = Loan::where('id','=',$reservation)->first(); $loan_type = LoanType::where('name','=','Reservation - Set Up')->first(); $user = User::where('id','=',$reservation_obj->user->id)->first(); $room = Room::where('id','=',$reservation_obj->room->id)->first(); $date_start = $reservation_obj->date_start; $date_end = $reservation_obj->date_end; $reservations = Loan::where('loan_type_id','=',$loan_type->id) ->where('user_id','=',$user->id) ->where('room_id','=',$room->id) ->where('date_start','=',$date_start) ->where('date_end','=',$date_end) ->get() ; $loan_type_new = LoanType::where('name','=','Reservation - Pick Up')->first(); $total = 0; foreach($reservations as $loan){ $loan->loan_type_id = $loan_type_new->id; $loan->save(); $total += 1; } Logger::LogSetup($reservation_obj->id,get_class($reservation_obj),$total); return redirect()->route('reservations.setups'); } public function pickup(Request $request, $reservation){ Auth::user()->role->permissions->contains(Permission::firstWhere('name', '=', 'reservations_return')) ? Response::allow() : Response::deny('you are not the chosen one'); $reservation_obj = Loan::where('id','=',$reservation)->first(); $loan_type = LoanType::where('name','=','Reservation - Pick Up')->first(); $user = User::where('id','=',$reservation_obj->user->id)->first(); $room = Room::where('id','=',$reservation_obj->room->id)->first(); $date_start = $reservation_obj->date_start; $date_end = $reservation_obj->date_end; $reservations = Loan::where('loan_type_id','=',$loan_type->id) ->where('user_id','=',$user->id) ->where('room_id','=',$room->id) ->where('date_start','=',$date_start) ->where('date_end','=',$date_end) ->get() ; $total = 0; foreach($reservations as $loan){ $loan->delete(); $total += 1; } Logger::LogPickup($reservation_obj->id,get_class($reservation_obj),$total); return redirect()->route('reservations.pickups'); } }