From 448a9846c9d1d2bb8faf52fa50b2f51c508a00ce Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Wed, 28 Feb 2018 15:37:24 -0600 Subject: [PATCH] Implement airport hub restriction closes #104 --- app/Http/Controllers/Admin/UserController.php | 43 +++++++++++++++---- .../Frontend/ProfileController.php | 8 +++- .../layouts/default/profile/fields.blade.php | 12 ++++++ 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 3eb79cf2..780d8941 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -6,10 +6,11 @@ use App\Facades\Utils; use App\Http\Requests\CreateUserRequest; use App\Http\Requests\UpdateUserRequest; use App\Models\Airline; -use App\Models\Airport; use App\Models\Rank; use App\Models\Role; use App\Models\User; +use App\Repositories\AirlineRepository; +use App\Repositories\AirportRepository; use App\Repositories\PirepRepository; use App\Repositories\UserRepository; use App\Services\UserService; @@ -24,19 +25,29 @@ use Response; class UserController extends BaseController { - private $pirepRepo, + private $airlineRepo, + $airportRepo, + $pirepRepo, $userRepo, $userSvc; /** * UserController constructor. + * @param AirlineRepository $airlineRepo + * @param AirportRepository $airportRepo + * @param PirepRepository $pirepRepo * @param UserRepository $userRepo + * @param UserService $userSvc */ public function __construct( + AirlineRepository $airlineRepo, + AirportRepository $airportRepo, PirepRepository $pirepRepo, UserRepository $userRepo, UserService $userSvc ) { + $this->airlineRepo = $airlineRepo; + $this->airportRepo = $airportRepo; $this->pirepRepo = $pirepRepo; $this->userSvc = $userSvc; $this->userRepo = $userRepo; @@ -67,8 +78,18 @@ class UserController extends BaseController */ public function create() { - return view('admin.user.create', [ - 'airlines' => Airline::all()->pluck('name', 'id'), + $airlines = $this->airlineRepo->selectBoxList(); + $airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only')); + + return view('admin.users.create', [ + 'user' => null, + 'pireps' => null, + 'airlines' => $airlines, + 'timezones' => Timezonelist::toArray(), + 'country' => new \League\ISO3166\ISO3166(), + 'airports' => $airports, + 'ranks' => Rank::all()->pluck('name', 'id'), + 'roles' => Role::all()->pluck('name', 'id'), ]); } @@ -105,13 +126,16 @@ class UserController extends BaseController ->whereOrder(['user_id' => $id], 'created_at', 'desc') ->paginate(); + $airlines = $this->airlineRepo->selectBoxList(); + $airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only')); + return view('admin.users.show', [ 'user' => $user, 'pireps' => $pireps, - 'airlines' => Airline::all(), + 'airlines' => $airlines, 'timezones' => Timezonelist::toArray(), 'country' => new \League\ISO3166\ISO3166(), - 'airports' => Airport::all()->pluck('icao', 'id'), + 'airports' => $airports, 'ranks' => Rank::all()->pluck('name', 'id'), 'roles' => Role::all()->pluck('name', 'id'), ]); @@ -140,13 +164,16 @@ class UserController extends BaseController return [strtolower($item['alpha2']) => $item['name']]; }); + $airlines = $this->airlineRepo->selectBoxList(); + $airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only')); + return view('admin.users.edit', [ 'user' => $user, 'pireps' => $pireps, 'countries' => $countries, 'timezones' => Timezonelist::toArray(), - 'airports' => Airport::all()->pluck('icao', 'id'), - 'airlines' => Airline::all()->pluck('name', 'id'), + 'airports' => $airports, + 'airlines' => $airlines, 'ranks' => Rank::all()->pluck('name', 'id'), 'roles' => Role::all()->pluck('name', 'id'), ]); diff --git a/app/Http/Controllers/Frontend/ProfileController.php b/app/Http/Controllers/Frontend/ProfileController.php index e08637a7..3935cbe4 100644 --- a/app/Http/Controllers/Frontend/ProfileController.php +++ b/app/Http/Controllers/Frontend/ProfileController.php @@ -44,7 +44,11 @@ class ProfileController extends Controller */ public function index() { - $airports = $this->airportRepo->all(); + if(setting('pilots.home_hubs_only')) { + $airports = $this->airportRepo->findWhere(['hub' => true]); + } else { + $airports = $this->airportRepo->all(); + } return $this->view('profile.index', [ 'user' => Auth::user(), @@ -86,7 +90,7 @@ class ProfileController extends Controller } $airlines = $this->airlineRepo->selectBoxList(); - $airports = $this->airportRepo->selectBoxList(); + $airports = $this->airportRepo->selectBoxList(false, setting('pilots.home_hubs_only')); return $this->view('profile.edit', [ 'user' => $user, diff --git a/resources/views/layouts/default/profile/fields.blade.php b/resources/views/layouts/default/profile/fields.blade.php index cc19322b..d70c014c 100644 --- a/resources/views/layouts/default/profile/fields.blade.php +++ b/resources/views/layouts/default/profile/fields.blade.php @@ -37,6 +37,18 @@ + + Home Airport + +
+ {!! Form::select('home_airport_id', $airports, null , ['class' => 'form-control select2']) !!} +
+ @if ($errors->has('home_airport_id')) +

{{ $errors->first('home_airport_id') }}

+ @endif + + + Country