/**
  * Update the specified reservation in storage.
  *
  * @param  Reservation  $reservation
  * @return Response
  */
 public function update(Reservation $reservation, UpdateReservationRequest $request)
 {
     $reservation->user()->associate($request->get('user_id'));
     $reservation->resource()->associate($request->get('resource_id'));
     $this->updateTimeFields($reservation, $request);
     $reservation->save();
     return redirect()->route('admin.reservations.index');
 }
 /**
  * Store a new reservation
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function create(Client $client, Request $request, Authenticatable $user, $id)
 {
     $this->validate($request, ['message' => 'required|string']);
     $property = VacationProperty::find($id);
     $reservation = new Reservation($request->all());
     $reservation->respond_phone_number = $user->fullNumber();
     $reservation->user()->associate($property->user);
     $property->reservations()->save($reservation);
     $this->notifyHost($client, $reservation);
     $request->session()->flash('status', "Sending your reservation request now.");
     return redirect()->route('property-show', ['id' => $property->id]);
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $hostUser = new User(['name' => 'Captain Kirk', 'email' => '*****@*****.**', 'password' => Hash::make('strongpassword'), 'country_code' => '1', 'phone_number' => '5558180101']);
     $hostUser->save();
     $guestUser = new User(['name' => 'Mr. Spock', 'email' => '*****@*****.**', 'password' => Hash::make('l1v3l0ngandpr0sp3r'), 'country_code' => '1', 'phone_number' => '5558180202']);
     $guestUser->save();
     $property = new VacationProperty(['description' => 'USS Enterprise', 'image_url' => 'http://www.ex-astris-scientia.org/articles/new_enterprise/enterprise-11-11-08.jpg']);
     $hostUser->properties()->save($property);
     $reservation = new Reservation(['message' => 'I want to reserve a room in your ship']);
     $reservation->respond_phone_number = $guestUser->fullNumber();
     $reservation->user()->associate($hostUser);
     $property->reservations()->save($reservation);
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $nbRes = Reservation::where('user_id', '=', Auth::user()->id)->where('valide', '<=', 1)->count();
     if ($nbRes < 3) {
         $velo = Velo::findOrFail($request->input('idVelo'));
         // Création d'une nouvelle reservation
         $reservation = new Reservation(['valide' => 0]);
         $reservation->user()->associate(Auth::user());
         $reservation->velo()->associate($velo);
         $reservation->save();
         // Création des demi journéées choisies
         $values = $request->all();
         $keys = array_keys($values);
         $newDJ = array();
         unset($keys[0]);
         //on retire le token
         for ($i = 1; $i < sizeof($values) - 2; $i += 2) {
             // -2 pour retirer le veloId
             //control des champs
             $regles = array($keys[$i] => 'required', $keys[$i + 1] => 'required');
             $validation = Validator::make($values, $regles);
             if ($validation->fails()) {
                 Session::flash('info', 'Le formulaire envoyé comportait des champs vides !');
                 $reservation->delete();
                 foreach ($newDJ as $dj) {
                     $dj->delete();
                 }
                 return redirect()->back();
             } else {
                 //formattage de la date
                 $date = explode('-', $values[$keys[$i]]);
                 $date = $date[2] . '-' . $date[1] . '-' . $date[0];
                 $demijournee = new Demijournee(['date' => $date, 'periode' => $values[$keys[$i + 1]]]);
                 $demijournee->reservation()->associate($reservation);
                 $demijournee->save();
                 $newDJ[] = $demijournee;
             }
         }
         return redirect()->route('location.show', ['location' => $reservation->id]);
     } else {
         Session::flash('info', 'Vous ne pouvez pas avoir plus de trois réservations en attente ! Merci de votre compréhension.');
         return redirect()->back();
     }
 }
 public function testAcceptRejectNoPending()
 {
     // Given
     $this->startSession();
     $userData = ['name' => 'Captain Kirk', 'email' => '*****@*****.**', 'password' => 'strongpassword', 'country_code' => '1', 'phone_number' => '5558180101'];
     $newUser = new User($userData);
     $newUser->save();
     $userData2 = ['name' => 'Captain Kirk rent', 'email' => '*****@*****.**', 'password' => 'strongpassword', 'country_code' => '1', 'phone_number' => '5558180102'];
     $newUser2 = new User($userData2);
     $newUser2->save();
     $propertyData = ['description' => 'Some description', 'image_url' => 'http://www.someimage.com'];
     $newProperty = new VacationProperty($propertyData);
     $newUser->properties()->save($newProperty);
     $reservationData = ['message' => 'Reservation message'];
     $reservation = new Reservation($reservationData);
     $reservation->status = 'confirmed';
     $reservation->respond_phone_number = $newUser2->fullNumber();
     $reservation->user()->associate($newUser);
     $newProperty->reservations()->save($reservation);
     $reservation = $reservation->fresh();
     $this->assertEquals('confirmed', $reservation->status);
     // When
     $response = $this->call('POST', route('reservation-incoming'), ['From' => '+15558180101', 'Body' => 'yes']);
     $messageDocument = new SimpleXMLElement($response->getContent());
     $reservation = $reservation->fresh();
     $this->assertEquals('confirmed', $reservation->status);
     $this->assertNotNull(strval($messageDocument->Message[0]));
     $this->assertNotEmpty(strval($messageDocument->Message[0]));
     $this->assertEquals(strval($messageDocument->Message[0]), 'Sorry, it looks like you don\'t have any reservations to respond to.');
 }