Add finance controller; morphable expense type so they can be applied to any model #130

This commit is contained in:
Nabeel Shahzad 2018-03-05 14:18:54 -06:00
parent 33c2ee702b
commit 53e4bf533f
6 changed files with 85 additions and 1 deletions

View File

@ -20,7 +20,11 @@ class CreateExpensesTable extends Migration
$table->unsignedInteger('amount'); $table->unsignedInteger('amount');
$table->unsignedTinyInteger('type'); $table->unsignedTinyInteger('type');
$table->boolean('multiplier')->nullable()->default(0); $table->boolean('multiplier')->nullable()->default(0);
$table->boolean('active')->nullable()->default(1); $table->boolean('active')->nullable()->default(true);
# Internal fields are expenses tied to some system object
# EG, the airports has an internal expense for gate costs
$table->nullableMorphs('expensable');
$table->timestamps(); $table->timestamps();
}); });
} }

View File

@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Repositories\JournalRepository;
use App\Services\FinanceService;
use Illuminate\Http\Request;
/**
* Class FinanceController
* @package App\Http\Controllers\Admin
*/
class FinanceController extends BaseController
{
private $financeSvc,
$journalRepo;
/**
* AircraftController constructor.
* @param FinanceService $financeSvc
* @param JournalRepository $journalRepo
*/
public function __construct(
FinanceService $financeSvc,
JournalRepository $journalRepo
) {
$this->financeSvc = $financeSvc;
$this->journalRepo = $journalRepo;
}
/**
* Display a listing of the Aircraft.
*/
public function index(Request $request)
{
}
/**
* Show a month
*/
public function show($id)
{
}
}

View File

@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Models\Traits\ExpensableTrait;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
/** /**
@ -11,6 +12,7 @@ use Illuminate\Notifications\Notifiable;
*/ */
class Airport extends BaseModel class Airport extends BaseModel
{ {
use ExpensableTrait;
use Notifiable; use Notifiable;
public $table = 'airports'; public $table = 'airports';

View File

@ -0,0 +1,28 @@
<?php
namespace App\Models\Traits;
use App\Models\Expense;
trait ExpensableTrait
{
/**
* Initialize a new journal when a new record is created
*/
public static function bootExpensableTrait()
{
/*static::created(function ($model) {
$model->initJournal(config('phpvms.currency'));
});*/
}
/**
* Morph to Expenses.
* @return mixed
*/
public function expenses()
{
return $this->morphToMany(Expense::class, 'expensable');
}
}

View File

@ -21,6 +21,9 @@ Route::group([
# fares # fares
Route::resource('fares', 'FareController'); Route::resource('fares', 'FareController');
# finances
Route::resource('finances', 'FinanceController');
# flights and aircraft associations # flights and aircraft associations
Route::resource('flights', 'FlightController'); Route::resource('flights', 'FlightController');
Route::match(['get', 'post', 'put', 'delete'], 'flights/{id}/fares', 'FlightController@fares'); Route::match(['get', 'post', 'put', 'delete'], 'flights/{id}/fares', 'FlightController@fares');

View File

@ -18,6 +18,7 @@
<li><a href="{!! url('/admin/flights') !!}"><i class="pe-7s-vector"></i>flights</a></li> <li><a href="{!! url('/admin/flights') !!}"><i class="pe-7s-vector"></i>flights</a></li>
<li><a href="{!! url('/admin/aircraft') !!}"><i class="pe-7s-plane"></i>fleet</a></li> <li><a href="{!! url('/admin/aircraft') !!}"><i class="pe-7s-plane"></i>fleet</a></li>
<li><a href="{!! url('/admin/fares') !!}"><i class="pe-7s-graph2"></i>fares</a></li> <li><a href="{!! url('/admin/fares') !!}"><i class="pe-7s-graph2"></i>fares</a></li>
<li><a href="{!! url('/admin/fares') !!}"><i class="pe-7s-display1"></i>finances</a></li>
</ul> </ul>
</div> </div>
</li> </li>