diff --git a/app/Database/migrations/2020_03_06_141153_fares_add_type.php b/app/Database/migrations/2020_03_06_141153_fares_add_type.php new file mode 100644 index 00000000..bd0d8c5c --- /dev/null +++ b/app/Database/migrations/2020_03_06_141153_fares_add_type.php @@ -0,0 +1,34 @@ +unsignedTinyInteger('type') + ->default(FareType::PASSENGER) + ->nullable() + ->after('capacity'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('fares', function (Blueprint $table) { + $table->dropColumn('type'); + }); + } +} diff --git a/app/Http/Controllers/Admin/FareController.php b/app/Http/Controllers/Admin/FareController.php index a12934d0..82941fdd 100644 --- a/app/Http/Controllers/Admin/FareController.php +++ b/app/Http/Controllers/Admin/FareController.php @@ -6,6 +6,7 @@ use App\Contracts\Controller; use App\Http\Controllers\Admin\Traits\Importable; use App\Http\Requests\CreateFareRequest; use App\Http\Requests\UpdateFareRequest; +use App\Models\Enums\FareType; use App\Models\Enums\ImportExportType; use App\Repositories\FareRepository; use App\Services\ExportService; @@ -58,7 +59,9 @@ class FareController extends Controller */ public function create() { - return view('admin.fares.create'); + return view('admin.fares.create', [ + 'fare_types' => FareType::select(), + ]); } /** @@ -94,7 +97,9 @@ class FareController extends Controller return redirect(route('admin.fares.index')); } - return view('admin.fares.show')->with('fare', $fare); + return view('admin.fares.show', [ + 'fare' => $fare, + ]); } /** @@ -112,7 +117,10 @@ class FareController extends Controller return redirect(route('admin.fares.index')); } - return view('admin.fares.edit')->with('fare', $fare); + return view('admin.fares.edit', [ + 'fare' => $fare, + 'fare_types' => FareType::select(), + ]); } /** diff --git a/app/Http/Controllers/Admin/SubfleetController.php b/app/Http/Controllers/Admin/SubfleetController.php index ba85390c..7943ee11 100644 --- a/app/Http/Controllers/Admin/SubfleetController.php +++ b/app/Http/Controllers/Admin/SubfleetController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\Admin\Traits\Importable; use App\Http\Requests\CreateSubfleetRequest; use App\Http\Requests\UpdateSubfleetRequest; use App\Models\Airline; +use App\Models\Enums\FareType; use App\Models\Enums\FuelType; use App\Models\Enums\ImportExportType; use App\Models\Expense; @@ -98,6 +99,7 @@ class SubfleetController extends Controller foreach ($avail_fares as $fare) { $retval[$fare->id] = $fare->name. ' (price: '.$fare->price. + ', type: '.FareType::label($fare->type). ', cost: '.$fare->cost. ', capacity: '.$fare->capacity.')'; } @@ -162,7 +164,9 @@ class SubfleetController extends Controller */ public function show($id) { - $subfleet = $this->subfleetRepo->findWithoutFail($id); + $subfleet = $this->subfleetRepo + ->with(['fares']) + ->findWithoutFail($id); if (empty($subfleet)) { Flash::error('Subfleet not found'); @@ -185,7 +189,9 @@ class SubfleetController extends Controller */ public function edit($id) { - $subfleet = $this->subfleetRepo->findWithoutFail($id); + $subfleet = $this->subfleetRepo + ->with(['fares', 'ranks']) + ->findWithoutFail($id); if (empty($subfleet)) { Flash::error('Subfleet not found'); diff --git a/app/Http/Resources/Fare.php b/app/Http/Resources/Fare.php index 996c3eec..50c90b49 100644 --- a/app/Http/Resources/Fare.php +++ b/app/Http/Resources/Fare.php @@ -18,6 +18,7 @@ class Fare extends Resource 'price' => $this->price, 'cost' => $this->cost, 'capacity' => $this->capacity, + 'type' => $this->type, 'notes' => $this->notes, 'active' => $this->active, ]; diff --git a/app/Models/Enums/FareType.php b/app/Models/Enums/FareType.php new file mode 100644 index 00000000..f18be6b1 --- /dev/null +++ b/app/Models/Enums/FareType.php @@ -0,0 +1,16 @@ + 'Passenger', + self::CARGO => 'Cargo', + ]; +} diff --git a/app/Models/Expense.php b/app/Models/Expense.php index 3a328487..cf36f46f 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -78,4 +78,9 @@ class Expense extends Model { return $this->belongsTo(Airline::class, 'airline_id'); } + + public function ref_model() + { + return $this->morphTo(); + } } diff --git a/app/Models/Fare.php b/app/Models/Fare.php index b0ec45b6..0ceffb6a 100644 --- a/app/Models/Fare.php +++ b/app/Models/Fare.php @@ -11,6 +11,7 @@ use App\Contracts\Model; * @property int code * @property int capacity * @property int count Only when merged with pivot + * @property int type * @property string notes * @property bool active */ @@ -32,12 +33,14 @@ class Fare extends Model 'price' => 'float', 'cost' => 'float', 'capacity' => 'integer', + 'type' => 'integer', 'active' => 'boolean', ]; public static $rules = [ 'code' => 'required', 'name' => 'required', + 'type' => 'required', ]; /** diff --git a/app/Services/Finance/PirepFinanceService.php b/app/Services/Finance/PirepFinanceService.php index d8e6f99c..c2412599 100644 --- a/app/Services/Finance/PirepFinanceService.php +++ b/app/Services/Finance/PirepFinanceService.php @@ -7,6 +7,7 @@ use App\Events\Expenses as ExpensesEvent; use App\Models\Aircraft; use App\Models\Airport; use App\Models\Enums\ExpenseType; +use App\Models\Enums\FareType; use App\Models\Enums\PirepSource; use App\Models\Expense; use App\Models\Pirep; @@ -124,13 +125,15 @@ class PirepFinanceService extends Service Log::info('Finance: Calculate: C='.$credit->toAmount().', D='.$debit->toAmount()); + $memo = FareType::label($fare->type).' fare: '.$fare->code.$fare->count + .'; price: '.$fare->price.', cost: '.$fare->cost; + $this->journalRepo->post( $pirep->airline->journal, $credit, $debit, $pirep, - 'Fares '.$fare->code.$fare->count - .'; price: '.$fare->price.', cost: '.$fare->cost, + $memo, null, 'Fares', 'fare' diff --git a/resources/views/admin/fares/fields.blade.php b/resources/views/admin/fares/fields.blade.php index 3fa6ab5c..dacfaea9 100644 --- a/resources/views/admin/fares/fields.blade.php +++ b/resources/views/admin/fares/fields.blade.php @@ -9,7 +9,7 @@
{{ $errors->first('code') }}
{{ $errors->first('name') }}
{{ $errors->first('type') }}
+{{ $errors->first('price') }}
@@ -39,16 +54,17 @@{{ $errors->first('cost') }}
{{ $errors->first('capacity') }}
@@ -56,10 +72,15 @@{{ $errors->first('notes') }}
{{ $errors->first('airline_id') }}
+{{ $errors->first('type') }}
+{{ $errors->first('name') }}
+{{ $errors->first('airline_id') }}
-{{ $errors->first('type') }}
-{{ $errors->first('name') }}
-