/**
  * @param $id
  * @return mixed
  */
 public function show($id)
 {
     $user = User::find($id);
     if (!$user) {
         return $this->respondNotFound('User does not exist.');
     }
     return $this->respond(['data' => $this->userTransformer->transform($user)]);
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $faker = Faker\Factory::create();
     User::create(['first_name' => 'Maciej', 'last_name' => 'Sularz', 'phone_number' => '07586750240', 'email' => '*****@*****.**', 'password' => '$2y$10$Rsh78/ok4aIcIOQKJImFk.8XWhkVDy8/wG/wmI768eNdjg8Rjk7da', 'date_of_birth' => '1987-07-24', 'club_id' => 3, 'role_id' => 1]);
     User::create(['first_name' => 'Owen', 'last_name' => 'Mallia', 'phone_number' => '07891498023', 'email' => '*****@*****.**', 'password' => '$2y$10$zMXsEEyhcMHvGSX.Biz.nOcF94XgGVf3CY7vanEkLYeAOrjwbdr8G', 'club_id' => 3, 'role_id' => 1]);
     User::create(['first_name' => 'Rob', 'last_name' => 'Miller', 'phone_number' => '07879681414', 'email' => '*****@*****.**', 'password' => '$2y$10$/BEWocGuz8crDuI4uHwhX.Dr1b9WaDPTt3OVg.19mwECSPtlr5SOa', 'club_id' => 3, 'role_id' => 1]);
     foreach (range(4, 30) as $index) {
         User::create(['first_name' => $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'phone_number' => "07586750249", 'password' => bcrypt('password'), 'date_of_birth' => $faker->date(), 'club_id' => $faker->numberBetween(1, 5), 'role_id' => $faker->numberBetween(3, 5)]);
     }
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $faker = Faker\Factory::create();
     $teamIds = Team::lists('id')->toArray();
     $userIds = User::lists('id')->toArray();
     $eventId = Event::current()->id;
     foreach ($teamIds as $teamId) {
         for ($i = 1; $i <= $faker->numberBetween(2, floor(count($userIds) / count($teamIds))); $i++) {
             DB::table('users_pivot_team_user')->insert(['team_id' => $teamId, 'user_id' => $faker->unique()->randomElement($userIds), 'event_id' => $eventId]);
         }
     }
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $numberOfLoopPasses = 20;
     $faker = Faker\Factory::create();
     $userIds = User::lists('id')->toArray();
     foreach ($userIds as $userId) {
         for ($i = 1; $i <= $faker->numberBetween(0, 2); $i++) {
             Boat::create(['name' => $faker->words($faker->numberBetween(1, 3), true), 'charter' => $faker->numberBetween(0, 1), 'user_id' => $userId]);
         }
         // Stop the loop after certain amount of passes.
         if (--$numberOfLoopPasses == 0) {
             break;
         }
     }
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $faker = Faker\Factory::create();
     $userIds = User::lists('id')->toArray();
     $categoryIds = Category::lists('id')->toArray();
     foreach ($userIds as $userId) {
         $categories = $faker->randomElements($categoryIds, $faker->numberBetween(0, count($categoryIds)));
         // Skip rest of the loop if $categories empty
         if (empty($categories)) {
             continue;
         }
         foreach ($categories as $categoryId) {
             DB::table('users_pivot_category_user')->insert(['user_id' => $userId, 'category_id' => $categoryId]);
         }
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @param WeighInsRequest|Request $request
  * @return \Illuminate\Http\Response
  */
 public function store(WeighInsRequest $request)
 {
     // TODO: extract this as it is also used in weigh ins request
     // Clear up the entries
     $request['entries'] = array_filter(array_map(function ($entry) {
         return array_filter($entry);
     }, $request['entries']));
     // If any exceptions are thrown any DB operations
     // will be automatically rolled back.
     DB::transaction(function () use($request) {
         $weighIn = new WeighIn();
         // Deal with boat section
         if (!empty($request['boat']) && !empty($request['boat']['name'])) {
             if (isset($request['boat']['id'])) {
                 // assign a boat to the weigh-in
                 $boat = Boat::findOrFail($request['boat']['id']);
             } else {
                 // create a new boat
                 $boat = new Boat();
                 $boat->name = $request['boat']['name'];
                 $boat->charter = isset($request['boat']['charter']) ? true : false;
                 if (!empty($request['boat']['skipper']['id'])) {
                     $boat->skipper()->associate(User::find($request['boat']['skipper']['id']));
                 }
                 $boat->save();
             }
             $weighIn->boat()->associate($boat);
         }
         // TODO: discuss with Rob if it makes sense
         //            if(!empty($request['team_id'])){
         //                $weighIn->team()->associate(Team::find($request['team_id']));
         //            }
         $weighIn->date = $request['date'];
         $weighIn->entry_ticket_number = $request['entry_ticket_number'];
         $weighIn->sheet_number = $request['sheet_number'];
         $weighIn->team_number = !empty($request['team_number']) ? $request['team_number'] : null;
         $weighIn->event()->associate(Event::find($request['event_id']));
         $weighIn->site()->associate(Site::find($request['weigh_in_site_id']));
         $weighIn->user()->associate(User::find($request['user_id']));
         $weighIn->save();
         foreach ($request['entries'] as $e) {
             $entry = new Entry();
             $entry->weight = Helpers::toDrams($e['species_weight']);
             $entry->percentage = Weight::calculatePercentage($e['species_id'], $e['sector_id'], $e['species_weight']);
             $entry->sector()->associate(Sector::find($e['sector_id']));
             $entry->location()->associate(Location::find($e['location_id']));
             $entry->event()->associate(Event::find($request['event_id']));
             $entry->species()->associate(Species::find($e['species_id']));
             $entry->user()->associate(User::find($request['user_id']));
             $entry->weighIn()->associate($weighIn);
             $entry->save();
             if (isset($e['categories'])) {
                 $categories = [];
                 foreach ($e['categories'] as $catId) {
                     $categories[$catId] = ['event_id' => (int) $request['event_id']];
                 }
                 $entry->categories()->sync($categories);
             }
         }
         //dd($request);
     });
     flash()->success('Success!', "New weigh-in has been created!");
     return redirect(route('admin.weigh-ins.create'));
 }
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $anglers = User::all();
     $localClubs = Helpers::getUserClubs();
     return view('admin.pages.anglers.index', compact('anglers', 'localClubs'));
 }
 public function index()
 {
     $skippers = User::with(['boats'])->has('boats')->get();
     return $this->respond(['data' => $this->skipperTransformer->transformCollection($skippers->all())]);
 }
 public function profile()
 {
     $user = User::findOrFail(Auth::user()->id);
     $userRoles = Helpers::getUserRoles();
     return view('admin.pages.settings.profile', compact('user', 'userRoles'));
 }
 /**
  * Update the specified resource in storage.
  *
  * @param Request $request
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, $id)
 {
     // Fetch the edited specie from the database
     $boat = Boat::findOrFail($id);
     DB::transaction(function () use($request, $boat) {
         // Update the fields
         $boat->name = $request['name'];
         $boat->charter = $request['charter'];
         if (!empty($request['user_id'])) {
             $boat->skipper()->associate(User::findOrFail($request['user_id']));
         } else {
             if (!is_null($boat->skipper)) {
                 $boat->user_id = null;
             }
         }
         $boat->save();
     });
     flash()->success('Success!', "Boat data has been updated!");
     return redirect(route('admin.boats.index'));
 }
 public function anglers()
 {
     $event = Event::current();
     $users = User::with(['categories', 'club'])->whereHas('weighIns', function ($query) use($event) {
         $query->where('event_id', '=', $event->id);
     })->get()->transform(function ($v) use($event) {
         $categories = null;
         if (!is_null($v->categories)) {
             foreach ($v->categories as $cat) {
                 $categories[] = ['id' => $cat['id'], 'name' => $cat['name']];
             }
         }
         $bestFish = Entry::with('species')->where('user_id', '=', $v['id'])->where('event_id', '=', $event->id)->orderBy('percentage', 'desc')->select('percentage', 'weight', 'species_id')->first();
         return ['id' => $v['id'], 'fullName' => $v['last_name'] . ' ' . $v['first_name'], 'categories' => $categories, 'club' => ['id' => $v['club']['id'], 'name' => $v['club']['name']], 'fishCount' => Entry::where('user_id', '=', $v['id'])->where('event_id', '=', $event->id)->get()->count(), 'bestFish' => ['name' => $bestFish['species']['name'], 'weight' => Helpers::fromDrams($bestFish['weight']), 'percentage' => round($bestFish['percentage']) . "%"]];
     })->toArray();
     return $this->respond(['data' => $users ?: null]);
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     // Fetch user object from the database
     $user = User::findOrFail($id);
     // Store users full name
     $userName = "******";
     // If user has avatar delete the file.
     if (!is_null($user->avatar->name)) {
         $avatarFile = public_path() . '\\avatars\\' . $user->avatar->name;
         if (File::exists($avatarFile)) {
             File::delete($avatarFile);
         }
     }
     // Delete user from DB
     $user->delete();
     flash()->overlay('Success!', "Angler {$userName} has been deleted!", 'success');
     return redirect(route('admin.users.index'));
 }