#406 Refactor bids (#432)

* Add flight_id column to pireps table

* Refactor PIREPs and bids closes 406

* Formatting
This commit is contained in:
Nabeel S
2019-11-05 11:44:31 -05:00
committed by GitHub
parent db087d0ccb
commit f5183babf6
35 changed files with 967 additions and 798 deletions

View File

@@ -8,8 +8,8 @@ use App\Http\Resources\Navdata as NavdataResource;
use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository;
use App\Services\FlightService;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Prettus\Repository\Criteria\RequestCriteria;
use Prettus\Repository\Exceptions\RepositoryException;
@@ -44,6 +44,9 @@ class FlightController extends Controller
*/
public function index(Request $request)
{
/**
* @var $user \App\Models\User
*/
$user = Auth::user();
$where = [
@@ -52,7 +55,7 @@ class FlightController extends Controller
];
if (setting('pilots.restrict_to_company')) {
$where['airline_id'] = Auth::user()->airline_id;
$where['airline_id'] = $user->airline_id;
}
if (setting('pilots.only_flights_from_current', false)) {
$where['dpt_airport_id'] = $user->curr_airport_id;

View File

@@ -20,6 +20,7 @@ use App\Http\Resources\PirepComment as PirepCommentResource;
use App\Http\Resources\PirepFieldCollection;
use App\Models\Acars;
use App\Models\Enums\AcarsType;
use App\Models\Enums\FlightType;
use App\Models\Enums\PirepFieldSource;
use App\Models\Enums\PirepSource;
use App\Models\Enums\PirepState;
@@ -93,6 +94,10 @@ class PirepController extends Controller
$attrs['created_at'] = Carbon::createFromTimeString($attrs['created_at']);
}
if (array_key_exists('updated_at', $attrs)) {
$attrs['updated_at'] = Carbon::createFromTimeString($attrs['updated_at']);
}
return $attrs;
}
@@ -186,6 +191,9 @@ class PirepController extends Controller
{
Log::info('PIREP Prefile, user '.Auth::id(), $request->post());
/**
* @var $user \App\Models\User
*/
$user = Auth::user();
$attrs = $this->parsePirep($request);
@@ -228,7 +236,7 @@ class PirepController extends Controller
// Default to a scheduled passenger flight
if (!array_key_exists('flight_type', $attrs)) {
$attrs['flight_type'] = 'J';
$attrs['flight_type'] = FlightType::SCHED_PAX;
}
$pirep->save();

View File

@@ -13,18 +13,17 @@ use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository;
use App\Repositories\PirepRepository;
use App\Repositories\UserRepository;
use App\Services\BidService;
use App\Services\FlightService;
use App\Services\UserService;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Prettus\Repository\Criteria\RequestCriteria;
use Prettus\Repository\Exceptions\RepositoryException;
/**
* Class UserController
*/
class UserController extends Controller
{
private $bidSvc;
private $flightRepo;
private $flightSvc;
private $pirepRepo;
@@ -32,8 +31,7 @@ class UserController extends Controller
private $userSvc;
/**
* UserController constructor.
*
* @param BidService $bidSvc
* @param FlightRepository $flightRepo
* @param FlightService $flightSvc
* @param PirepRepository $pirepRepo
@@ -41,12 +39,14 @@ class UserController extends Controller
* @param UserService $userSvc
*/
public function __construct(
BidService $bidSvc,
FlightRepository $flightRepo,
FlightService $flightSvc,
PirepRepository $pirepRepo,
UserRepository $userRepo,
UserService $userSvc
) {
$this->bidSvc = $bidSvc;
$this->flightRepo = $flightRepo;
$this->flightSvc = $flightSvc;
$this->pirepRepo = $pirepRepo;
@@ -61,11 +61,11 @@ class UserController extends Controller
*/
protected function getUserId(Request $request)
{
if ($request->id === null) {
if ($request->get('id') === null) {
return Auth::user()->id;
}
return $request->id;
return $request->get('id');
}
/**
@@ -110,7 +110,7 @@ class UserController extends Controller
if ($request->isMethod('PUT') || $request->isMethod('POST')) {
$flight_id = $request->input('flight_id');
$flight = $this->flightRepo->find($flight_id);
$bid = $this->flightSvc->addBid($flight, $user);
$bid = $this->bidSvc->addBid($flight, $user);
return new BidResource($bid);
}
@@ -124,11 +124,11 @@ class UserController extends Controller
}
$flight = $this->flightRepo->find($flight_id);
$this->flightSvc->removeBid($flight, $user);
$this->bidSvc->removeBid($flight, $user);
}
// Return the flights they currently have bids on
$bids = Bid::where(['user_id' => $user->id])->get();
$bids = $this->bidSvc->findBidsForUser($user);
return BidResource::collection($bids);
}

View File

@@ -14,6 +14,7 @@ use App\Repositories\AircraftRepository;
use App\Repositories\AirlineRepository;
use App\Repositories\AirportRepository;
use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository;
use App\Repositories\PirepFieldRepository;
use App\Repositories\PirepRepository;
use App\Services\FareService;
@@ -35,6 +36,7 @@ class PirepController extends Controller
private $aircraftRepo;
private $airlineRepo;
private $fareSvc;
private $flightRepo;
private $geoSvc;
private $pirepRepo;
private $airportRepo;
@@ -43,12 +45,11 @@ class PirepController extends Controller
private $userSvc;
/**
* PirepController constructor.
*
* @param AircraftRepository $aircraftRepo
* @param AirlineRepository $airlineRepo
* @param AirportRepository $airportRepo
* @param FareService $fareSvc
* @param FlightRepository $flightRepo
* @param GeoService $geoSvc
* @param PirepRepository $pirepRepo
* @param PirepFieldRepository $pirepFieldRepo
@@ -60,6 +61,7 @@ class PirepController extends Controller
AirlineRepository $airlineRepo,
AirportRepository $airportRepo,
FareService $fareSvc,
FlightRepository $flightRepo,
GeoService $geoSvc,
PirepRepository $pirepRepo,
PirepFieldRepository $pirepFieldRepo,
@@ -73,6 +75,7 @@ class PirepController extends Controller
$this->pirepFieldRepo = $pirepFieldRepo;
$this->fareSvc = $fareSvc;
$this->flightRepo = $flightRepo;
$this->geoSvc = $geoSvc;
$this->pirepSvc = $pirepSvc;
$this->userSvc = $userSvc;
@@ -231,12 +234,24 @@ class PirepController extends Controller
/**
* Create a new flight report
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function create()
public function create(Request $request)
{
$pirep = null;
// See if request has a ?flight_id, so we can pre-populate the fields from the flight
// Makes filing easier, but we can also more easily find a bid and close it
if ($request->has('flight_id')) {
$flight = $this->flightRepo->find($request->get('flight_id'));
$pirep = Pirep::fromFlight($flight);
}
return view('pireps.create', [
'aircraft' => null,
'pirep' => $pirep,
'read_only' => false,
'airline_list' => $this->airlineRepo->selectBoxList(true),
'aircraft_list' => $this->aircraftList(true),