Aircraft can be added without subfleet/block subfleet deletion if still in use #128

This commit is contained in:
Nabeel Shahzad 2018-01-09 13:34:19 -06:00
parent 0e36849f16
commit cbdce35545
8 changed files with 60 additions and 13 deletions

View File

@ -23,6 +23,7 @@ class AircraftController extends BaseController
/**
* Display a listing of the Aircraft.
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function index(Request $request)
{
@ -46,11 +47,12 @@ class AircraftController extends BaseController
/**
* Store a newly created Aircraft in storage.
* @throws \Prettus\Validator\Exceptions\ValidatorException
*/
public function store(CreateAircraftRequest $request)
{
$input = $request->all();
$aircraft = $this->aircraftRepository->create($input);
$this->aircraftRepository->create($input);
Flash::success('Aircraft saved successfully.');
return redirect(route('admin.aircraft.index'));
@ -93,6 +95,7 @@ class AircraftController extends BaseController
/**
* Update the specified Aircraft in storage.
* @throws \Prettus\Validator\Exceptions\ValidatorException
*/
public function update($id, UpdateAircraftRequest $request)
{
@ -126,5 +129,4 @@ class AircraftController extends BaseController
Flash::success('Aircraft deleted successfully.');
return redirect(route('admin.aircraft.index'));
}
}

View File

@ -15,6 +15,7 @@ use App\Models\Subfleet;
use App\Http\Requests\CreateSubfleetRequest;
use App\Http\Requests\UpdateSubfleetRequest;
use App\Repositories\AircraftRepository;
use App\Repositories\FareRepository;
use App\Repositories\SubfleetRepository;
@ -23,19 +24,23 @@ use App\Services\FareService;
class SubfleetController extends BaseController
{
/** @var SubfleetRepository */
private $subfleetRepo, $fareRepo, $fareSvc;
private $aircraftRepo, $subfleetRepo, $fareRepo, $fareSvc;
/**
* SubfleetController constructor.
*
* @param AircraftRepository $aircraftRepo
* @param SubfleetRepository $subfleetRepo
* @param FareRepository $fareRepo
* @param FareRepository $fareRepo
* @param FareService $fareSvc
*/
public function __construct(
AircraftRepository $aircraftRepo,
SubfleetRepository $subfleetRepo,
FareRepository $fareRepo,
FareService $fareSvc
) {
$this->aircraftRepo = $aircraftRepo;
$this->subfleetRepo = $subfleetRepo;
$this->fareRepo = $fareRepo;
$this->fareSvc = $fareSvc;
@ -183,6 +188,14 @@ class SubfleetController extends BaseController
return redirect(route('admin.subfleets.index'));
}
# Make sure no aircraft are assigned to this subfleet
# before trying to delete it, or else things might go boom
$aircraft = $this->aircraftRepo->findWhere(['subfleet_id' => $id], ['id']);
if($aircraft->count() > 0) {
Flash::error('There are aircraft still assigned to this subfleet, you can\'t delete it!')->important();
return redirect(route('admin.subfleets.index'));
}
$this->subfleetRepo->delete($id);
Flash::success('Subfleet deleted successfully.');

View File

@ -31,6 +31,7 @@ class Aircraft extends BaseModel
* @var array
*/
public static $rules = [
'subfleet_id' => 'required',
'name' => 'required',
];

View File

@ -0,0 +1,18 @@
<?php
namespace App\Models\Enums;
/**
* Class GenericState
* @package App\Models\Enums
*/
class GenericState extends EnumBase
{
const INACTIVE = 0;
const ACTIVE = 1;
public static $labels = [
GenericState::INACTIVE => 'Inactive',
GenericState::ACTIVE => 'Active',
];
}

View File

@ -118,6 +118,7 @@ return [
'Yaml' => Symfony\Component\Yaml\Yaml::class,
# ENUMS
'GenericState' => App\Models\Enums\GenericState::class,
'UserState' => App\Models\Enums\UserState::class,
'PirepSource' => App\Models\Enums\PirepSource::class,
'PirepState' => App\Models\Enums\PirepState::class,

View File

@ -3,9 +3,15 @@
@section('content')
<div class="card border-blue-bottom">
<div class="content">
{!! Form::open(['route' => 'admin.aircraft.store']) !!}
@include('admin.aircraft.fields')
{!! Form::close() !!}
@if(!filled($subfleets))
<p class="text-center">
You must add a subfleet before you can add an aircraft!
</p>
@else
{!! Form::open(['route' => 'admin.aircraft.store']) !!}
@include('admin.aircraft.fields')
{!! Form::close() !!}
@endif
</div>
</div>
@endsection

View File

@ -11,7 +11,7 @@
@foreach($aircraft as $ac)
<tr>
<td>
@if($ac->subfleet_id)
@if($ac->subfleet_id && $ac->subfleet)
<a href="{!! route('admin.subfleets.edit', [$ac->subfleet_id]) !!}">
{!! $ac->subfleet->name !!}
</a>
@ -23,8 +23,8 @@
<td style="text-align: center;">{!! $ac->icao !!}</td>
<td style="text-align: center;">{!! $ac->registration !!}</td>
<td style="text-align: center;">
@if($ac->active == 1)
<span class="label label-success">Active</span>
@if($ac->active == GenericState::ACTIVE)
<span class="label label-success">{!! GenericState::label($ac->active); !!}</span>
@else
<span class="label label-default">Inactive</span>
@endif

View File

@ -3,9 +3,15 @@
@section('content')
<div class="card border-blue-bottom">
<div class="content">
{!! Form::open(['route' => 'admin.subfleets.store']) !!}
@include('admin.subfleets.fields')
{!! Form::close() !!}
@if(!filled($airlines))
<p class="text-center">
You must add an airline before you can add a subfleet!
</p>
@else
{!! Form::open(['route' => 'admin.subfleets.store']) !!}
@include('admin.subfleets.fields')
{!! Form::close() !!}
@endif
</div>
</div>
@endsection