added new scopes to recurring model
This commit is contained in:
parent
a6a13481fe
commit
36fc7553c0
@ -13,6 +13,10 @@ class Recurring extends Model
|
||||
public const ACTIVE_STATUS = 'active';
|
||||
public const END_STATUS = 'ended';
|
||||
public const COMPLETE_STATUS = 'completed';
|
||||
public const INVOICE_RECURRING_TYPE = 'invoice-recurring';
|
||||
public const BILL_RECURRING_TYPE = 'bill-recurring';
|
||||
public const INCOME_RECURRING_TYPE = 'income-recurring';
|
||||
public const EXPENSE_RECURRING_TYPE = 'expense-recurring';
|
||||
|
||||
protected $table = 'recurring';
|
||||
|
||||
@ -55,6 +59,21 @@ class Recurring extends Model
|
||||
return $this->morphTo()->isRecurring();
|
||||
}
|
||||
|
||||
public function documents()
|
||||
{
|
||||
return $this->morphedByMany('App\Models\Document\Document', 'recurable');
|
||||
}
|
||||
|
||||
public function invoices()
|
||||
{
|
||||
return $this->documents()->where('type', self::INVOICE_RECURRING_TYPE);
|
||||
}
|
||||
|
||||
public function bills()
|
||||
{
|
||||
return $this->documents()->where('type', self::BILL_RECURRING_TYPE);
|
||||
}
|
||||
|
||||
public function scopeActive(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('status'), '=', static::ACTIVE_STATUS);
|
||||
@ -69,4 +88,49 @@ class Recurring extends Model
|
||||
{
|
||||
return $query->where($this->qualifyColumn('status'), '=', static::COMPLETE_STATUS);
|
||||
}
|
||||
|
||||
public function scopeDocument(Builder $query, $type): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Document\\Document')
|
||||
->whereHas('recurable', function (Builder $query) use ($type) {
|
||||
$query->where('type', $type);
|
||||
});
|
||||
}
|
||||
|
||||
public function scopeInvoice(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Document\\Document')
|
||||
->whereHas('recurable', function (Builder $query) {
|
||||
$query->where('type', self::INVOICE_RECURRING_TYPE);
|
||||
});
|
||||
}
|
||||
|
||||
public function scopeBill(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Document\\Document')
|
||||
->whereHas('recurable', function (Builder $query) {
|
||||
$query->where('type', self::BILL_RECURRING_TYPE);
|
||||
});
|
||||
}
|
||||
|
||||
public function scopeTransaction(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Banking\\Transaction');
|
||||
}
|
||||
|
||||
public function scopeExpenseTransaction(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Banking\\Transaction')
|
||||
->whereHas('recurable', function (Builder $query) {
|
||||
$query->where('type', self::EXPENSE_RECURRING_TYPE);
|
||||
});
|
||||
}
|
||||
|
||||
public function scopeIncomeTransaction(Builder $query): Builder
|
||||
{
|
||||
return $query->where($this->qualifyColumn('recurable_type'), '=', 'App\\Models\\Banking\\Transaction')
|
||||
->whereHas('recurable', function (Builder $query) {
|
||||
$query->where('type', self::INCOME_RECURRING_TYPE);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user