diff --git a/app/Http/Controllers/Frontend/FlightController.php b/app/Http/Controllers/Frontend/FlightController.php index 9ad12551..b244cd7d 100644 --- a/app/Http/Controllers/Frontend/FlightController.php +++ b/app/Http/Controllers/Frontend/FlightController.php @@ -7,8 +7,11 @@ use Illuminate\Support\Facades\Auth; use App\Repositories\FlightRepository; use App\Http\Controllers\AppBaseController; +use App\Models\Flight; use App\Models\UserFlight; +use App\Repositories\Criteria\WhereCriteria; use Mockery\Exception; +use Prettus\Repository\Criteria\RequestCriteria; class FlightController extends AppBaseController { @@ -28,9 +31,9 @@ class FlightController extends AppBaseController $where['dpt_airport_id'] = Auth::user()->curr_airport_id; } - // TODO: PAGINATION + $this->flightRepo->pushCriteria(new WhereCriteria($request, $where)); + $flights = $this->flightRepo->paginate(); - $flights = $this->flightRepo->findWhere($where); $saved_flights = UserFlight::where('user_id', Auth::id()) ->pluck('flight_id')->toArray(); @@ -40,10 +43,18 @@ class FlightController extends AppBaseController ]); } + /** + * Make a search request using the Repository search + * @param Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + * @throws \Prettus\Repository\Exceptions\RepositoryException + */ public function search(Request $request) { $where = ['active' => true]; - $flights = $this->flightRepo->findWhere($where); + + $this->flightRepo->pushCriteria(new RequestCriteria($request)); + $flights = $this->flightRepo->paginate(); // TODO: PAGINATION @@ -60,11 +71,11 @@ class FlightController extends AppBaseController { $user_id = Auth::id(); $flight_id = $request->input('flight_id'); - $action = $request->input('action'); + $action = strtolower($request->input('action')); $cols = ['user_id' => $user_id, 'flight_id' => $flight_id]; - if(strtolower($action) == 'save') { + if($action === 'save') { $uf = UserFlight::create($cols); $uf->save(); @@ -74,7 +85,7 @@ class FlightController extends AppBaseController ]); } - elseif (strtolower($action) == 'remove') { + elseif ($action === 'remove') { try { $uf = UserFlight::where($cols)->first(); $uf->delete(); diff --git a/app/Http/Controllers/Frontend/PirepController.php b/app/Http/Controllers/Frontend/PirepController.php index 154c06a1..8131821c 100644 --- a/app/Http/Controllers/Frontend/PirepController.php +++ b/app/Http/Controllers/Frontend/PirepController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Frontend; +use App\Repositories\Criteria\WhereCriteria; use App\Services\PIREPService; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; @@ -45,9 +46,10 @@ class PirepController extends Controller public function index(Request $request) { $user = Auth::user(); - $pireps = Pirep::where('user_id', $user->id) - ->orderBy('created_at', 'desc') - ->paginate(); + + $where = ['user_id' => $user->id]; + $this->pirepRepo->pushCriteria(new WhereCriteria($request, $where)); + $pireps = $this->pirepRepo->orderBy('created_at', 'desc')->paginate(); return $this->view('pireps.index', [ 'user' => $user, diff --git a/app/Repositories/Criteria/WhereCriteria.php b/app/Repositories/Criteria/WhereCriteria.php new file mode 100644 index 00000000..7b39d6ae --- /dev/null +++ b/app/Repositories/Criteria/WhereCriteria.php @@ -0,0 +1,45 @@ +request = $request; + $this->where = $where; + } + + + /** + * Apply criteria in query repository + * + * @param Builder|Model $model + * @param RepositoryInterface $repository + * + * @return mixed + * @throws \Exception + */ + public function apply($model, RepositoryInterface $repository) + { + if($this->where) { + $model = $model->where($this->where); + } + + return $model; + } +} diff --git a/resources/views/layouts/default/flights/index.blade.php b/resources/views/layouts/default/flights/index.blade.php index 559e0a89..a95f90c4 100644 --- a/resources/views/layouts/default/flights/index.blade.php +++ b/resources/views/layouts/default/flights/index.blade.php @@ -15,6 +15,11 @@ +
+
+ {{ $flights->links('layouts.default.pagination.default') }} +
+
@endsection @section('scripts')