Files
pollux/app/AccountType.php
T

83 lines
2.4 KiB
PHP

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class AccountType extends Model
{
/**************************************************************************
* DIRECT RELATIONS *
**************************************************************************/
/**
* Get the account class of the account type.
*
* @return Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function accountClass()
{
return $this->belongsTo('App\AccountClass');
}
public function subBookings()
{
return $this->hasMany('App\SubBooking');
}
/**************************************************************************
* INDIRECT RELATIONS *
**************************************************************************/
/**
* Get the IO-type of the account type.
*
* @return Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function ioType()
{
return $this->accountClass->ioType();
}
/*
* Get all account types which are expeditures.
*
* @return Illuminate\Database\Eloquent\Collection
*/
public static function expeditures()
{
return AccountType::whereHas('accountClass', function ($query) {
$query->whereHas('ioType', function ($query) {
$query->where('i_o_types.name', 'Ausgabe');
});
})->get();
}
/*
* Get all account types which are incomes.
*
* @return Illuminate\Database\Eloquent\Collection
*/
public static function incomes() {
return AccountType::whereHas('accountClass', function ($query) {
$query->whereHas('ioType', function ($query) {
$query->where('i_o_types.name', 'Einnahme');
});
})->get();
}
/**************************************************************************
* INDIRECT PROPERTIES *
**************************************************************************/
/**
* Returns the name and number of the account-type as string.
*
* @return string
*/
public function numberAndName()
{
return $this->number . ' - ' . $this->name;
}
}