public function setKarma(Request $request, $id)
 {
     $user = User::find($id);
     $user->karma = $request->get('karma');
     $user->save();
     return redirect(route('user.index'));
 }
 public function missed(Booking $booking)
 {
     if ($booking && $booking->went != true) {
         $booking->went = false;
         $booking->save();
         $this->karmaService->miss(User::find($booking->user_id));
     }
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     Model::unguard();
     User::truncate();
     User::create(['name' => 'David Matos', 'username' => 'admin', 'password' => bcrypt('admin'), 'id_document' => str_random(10), 'karma' => random_int(200, 500), 'is_admin' => true, 'email' => 'ASM_' . str_random(5) . '@gmail.com']);
     User::create(['name' => 'Manuel Pereira', 'username' => 'driver', 'password' => bcrypt('driver'), 'id_document' => str_random(10), 'karma' => random_int(200, 500), 'is_driver' => true, 'email' => 'MM_' . str_random(5) . '@gmail.com']);
     Shuttle::truncate();
     Shuttle::create(['name' => 'S01', 'seats' => 42, 'key' => 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb']);
     Trip::create(['shuttle_id' => 1, 'driver_id' => 2, 'origin' => 'Evora', 'destination' => 'Lisboa', 'leaves_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(10, 45)), 'arrives_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(120, 180))]);
     Trip::create(['shuttle_id' => 1, 'driver_id' => 2, 'origin' => 'Alameda', 'destination' => 'Tagus', 'leaves_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(60, 90)), 'arrives_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(190, 280))]);
     Trip::create(['shuttle_id' => 1, 'driver_id' => 2, 'origin' => 'Porto', 'destination' => 'Coimbra', 'leaves_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(120, 180)), 'arrives_at' => \Carbon\Carbon::now()->addMinutes(mt_rand(300, 400))]);
     Model::reguard();
 }
 public function checkin(Request $request)
 {
     $data = $this->validateRequest($request, ['id', 'attendances']);
     $service = new BookingService();
     foreach ($data->attendances as $attendance) {
         if ($attendance->user && $attendance->trip && $attendance->trip == $data->id) {
             $user = User::find($attendance->user);
             $trip = Trip::find($attendance->trip);
             if ($user && $trip) {
                 $service->checkin($user, $trip);
             }
         }
     }
     $service->markMissing($trip);
     return $this->encryptJson([]);
 }
 public function store(CreateTripRequest $request, FlashNotifier $flash)
 {
     if (!Shuttle::find($request->shuttle_id)) {
         $flash->error("Error creating trip. Shuttle {$request->id} does not exist.");
         return redirect()->back()->withInput();
     }
     $driver = User::find($request->driver_id);
     if ($driver == null) {
         $flash->error("Error creating trip. User {$request->driver_id} does not exist.");
         return redirect()->back()->withInput();
     }
     if (!$driver->isDriver()) {
         $flash->error("Error creating trip. User {$driver->name} is not a driver.");
         return redirect()->back()->withInput();
     }
     $leaves = new Carbon($request->leaves_at);
     $arrives = new Carbon($request->arrives_at);
     Trip::create(['shuttle_id' => $request->shuttle_id, 'driver_id' => $request->driver_id, 'origin' => $request->origin, 'destination' => $request->destination, 'leaves_at' => $leaves, 'arrives_at' => $arrives]);
     $flash->success('Trip successfully created!');
     return back();
 }
 /**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return User
  */
 protected function create(array $data)
 {
     return User::create(['name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password'])]);
 }
 public function miss(User $user)
 {
     $user->karma = $user->karma - 60;
     $user->save();
 }