/**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(UCreateReservationRequest $request)
 {
     $user = Auth::user();
     $reservation = new Reservation();
     $reservation->fill(['forwho' => $user->full_name, 'whoid' => $user->id, 'status' => 'created']);
     $reservation->fill($request->all());
     $reservation->save();
     return redirect()->route('user.reservations.index');
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  Request  $request
  * @param  App\Reservation $reservation
  * @return Response
  */
 public function update(Request $request, Reservation $reservation)
 {
     $this->validate($request, ['name' => 'required', 'gender' => 'required', 'phone' => 'required|numeric', 'address' => 'required', 'check_in' => 'required|date|after:' . \Carbon\Carbon::today()->addDays(-1)->format('Y-m-d'), 'check_out' => 'required|date|after:' . $request->input('check_in')]);
     $input = $request->only('name', 'gender', 'phone', 'address');
     if (Auth::user()->role != 'user') {
         $guest = Guest::findOrFail($reservation->guest_id);
         $guest->fill($input)->save();
         $reservation_data = ['guest_id' => $guest->id, 'guest_type' => 'guest', 'check_in' => $request->input('check_in'), 'check_out' => $request->input('check_out')];
     } else {
         $user = User::findOrFail(Auth::user()->id);
         $user->fill($input)->save();
         $reservation_data = ['check_in' => $request->input('check_in'), 'check_out' => $request->input('check_out')];
     }
     $reservation->fill($reservation_data)->save();
     $roomTypes = $request->input('room_type_id');
     $roomReserved = $request->input('total_room_reserved');
     for ($i = 0; $i < count($roomTypes); $i++) {
         $reservation->roomTypes()->detach($roomTypes[$i]);
         $reservation->roomTypes()->attach($roomTypes[$i], ['total_room_reserved' => $roomReserved[$i]]);
     }
     return redirect('/reservation');
 }