Viewing file: ReservationController.php (5.36 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers;
use App\Models\Restaurant; use Illuminate\Http\Request; use App\Models\Reservation; class ReservationController extends Controller { public function index(Request $request){ $user = auth()->user();
$reservations = Reservation::orderByDesc('created_at');
if($user->type == 'customer'){ $reservations = Reservation::where('customer_id',$user->id); }elseif($user->type == 'user'){ $reservations = Reservation::where('restaurant_id',$user->restaurant_id); }elseif($user->type == 'restaurant_owner'){ $restaurantIds = Restaurant::where('user_id', $user->id)->pluck('id'); $reservations = Reservation::whereIn('restaurant_id', $restaurantIds); }
if ($request->restaurant_id && $request->restaurant_id!='all') { $reservations = $reservations->where('restaurant_id', $request->restaurant_id); } if ($request->status && $request->status !='all') { $reservations = $reservations->where('status', $request->status); } $reservations = $reservations->get();
$data['reservations'] = $reservations;
if($user->type == 'restaurant_owner'){ $data['restaurants'] = Restaurant::where('user_id',$user->id)->get(); }elseif($user->type == 'user'){ $data['restaurants'] = Restaurant::where('id',$user->restaurant_id)->get(); }elseif($user->type == 'customer' && isset($user->restaurant_id) && $user->restaurant_id){ $data['restaurants'] = Restaurant::where('id',$user->restaurant_id)->get(); }
return view('reservation.index',$data); }
public function create(){ $user = auth()->user(); $restaurant = Restaurant::orderByDesc('created_at'); if($user->type == 'restaurant_owner'){ $restaurant = $restaurant->where('user_id',$user->id); }elseif($user->type == 'user'){ $restaurant = $restaurant->where('id',$user->restaurant_id); } $data['restaurants'] = $restaurant->get(); return view('reservation.create',$data); }
public function store(Request $request){
if(env('APP_DEMO')){ return redirect()->back()->withErrors(['msg' => trans('layout.app_demo_message')]); }
$request->validate([ 'party_size'=>'required', 'date'=>'required', 'contact_number'=>'required', ]);
$reservation = new Reservation(); $reservation->customer_id = auth()->user()->id; $reservation->party_size = $request->party_size; $reservation->restaurant_id = $request->restaurant_id; $reservation->date = $request->date; $reservation->contact_number = $request->contact_number; $reservation->status = 'pending'; $reservation->save();
return redirect()->back()->with('success',trans('Reservation Create Successfully')); }
public function change_status(Request $request){
if(env('APP_DEMO')){ return redirect()->back()->withErrors(['msg' => trans('layout.app_demo_message')]); }
$reservation = Reservation::find($request->reservation_id); if ($reservation) { $reservation->status = $request->status; $reservation->save(); return redirect()->back()->with('success',trans('Reservation Status Change Successful')); }
return redirect()->back()->withErrors(['msg' => trans('something went wrong please try again later')]);
} public function edit($id){
$user = auth()->user();
$restaurant = Restaurant::orderByDesc('created_at'); if($user->type == 'restaurant_owner'){ $restaurant = $restaurant->where('user_id',$user->id); }elseif($user->type == 'user'){ $restaurant = $restaurant->where('id',$user->restaurant_id); }
$data['restaurants'] = $restaurant->get();
$reservation = Reservation::find($id); $data['reservation'] = $reservation;
return view('reservation.edit',$data); } public function update(Request $request,$id){ if(env('APP_DEMO')){ return redirect()->back()->withErrors(['msg' => trans('layout.app_demo_message')]); } $reservation = Reservation::where('id',$id)->first(); $request->validate([ 'party_size'=>'required', 'date'=>'required', 'contact_number'=>'required', 'restaurant_id' => 'required' ]);
if ($reservation) { $reservation->date = $request->date; $reservation->party_size = $request->party_size; $reservation->contact_number = $request->contact_number; $reservation->restaurant_id = $request->restaurant_id; $reservation->save();
return redirect()->back()->with('success',trans('Reservation Successfully updated')); }
return redirect()->back()->withErrors(['msg' => trans('something went wrong please try again later')]);
} public function details($id){ if(env('APP_DEMO')){ return redirect()->back()->withErrors(['msg' => trans('layout.app_demo_message')]); } $reservation = Reservation::find($id); $data['reservation'] = $reservation;
return view('reservation.details',$data); } }
|