/**
  * Update a travelers' data
  *
  * @return Illuminate\Http\Response
  */
 protected function update()
 {
     // Update the travelers' data
     $traveler = Auth::user();
     $traveler->first_name = Input::get('first_name');
     $traveler->last_name = Input::get('last_name');
     $traveler->email = Input::get('email');
     $traveler->birthday = Input::get('birthday');
     $traveler->gender = Input::get('gender');
     $traveler->save();
     // Update their address
     $address = TravelerAddress::where('traveler', '=', Auth::id())->first();
     if ($address) {
         // The traveler has an address, so
         // we can safely update it
         $address->street = Input::get('street');
         $address->city = Input::get('city');
         $address->state = State::where('abbreviation', '=', Input::get('state'))->first()->id;
         $address->zip = Input::get('zip');
         $address->save();
     }
     // Update their passport profile photo
     if (Input::hasFile('selfie')) {
         $extension = Input::file('selfie')->getClientOriginalExtension();
         $filename = md5(uniqid(rand(), true)) . '.' . $extension;
         Input::file('selfie')->move(base_path() . '/public/assets/selfies/', $filename);
         $traveler->selfie_filename = $filename;
         $traveler->save();
     }
     return Redirect::back();
 }
 /**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return User
  */
 protected function create(array $data)
 {
     $traveler = Traveler::create(['first_name' => $data['first_name'], 'last_name' => $data['last_name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'gender' => Input::has('gender') ? intval($data['gender']) : 3, 'birthday' => $data['birthday']]);
     if ($traveler) {
         // The traveler was created so
         // we'll save their address if
         // they've chosen to provide one
         $state = Input::has('state') ? State::where('abbreviation', '=', Input::get('state'))->first()->id : NULL;
         $address = TravelerAddress::create(['traveler' => $traveler->id, 'street' => Input::has('street') ? Input::get('street') : NULL, 'city' => Input::has('city') ? Input::get('city') : NULL, 'state' => $state, 'zip' => Input::has('zip') ? Input::get('zip') : NULL, 'phone' => Input::has('phone') ? Input::get('phone') : NULL, 'created_at' => gmdate('Y-m-d H:i:s'), 'updated_at' => gmdate('Y-m-d H:i:s')]);
         // We'll also store their profile
         // photo and store its' filename
         if (Input::hasFile('selfie')) {
             $selfie_filename = md5(uniqid(rand(), true)) . '.' . Input::file('selfie')->getClientOriginalExtension();
             Input::file('selfie')->move(base_path() . '/public/assets/selfies/', $selfie_filename);
             // Store the filename
             $traveler->selfie_filename = $selfie_filename;
             $traveler->save();
         }
     }
     return $traveler;
 }