mastercut/app/Models/Expense.php

70 lines
1.7 KiB
PHP
Executable File

<?php
namespace App\Models;
use App\Observers\ExpenseObserver;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Auth;
#[ObservedBy([ExpenseObserver::class])]
class Expense extends Model
{
use HasFactory, SoftDeletes;
protected $fillable = [
'user_id',
'barbershop_id',
'name',
'amount',
'use_cash',
'type',
];
public function scopeBarbershop(Builder $query): Builder
{
return $query->where('barbershop_id', Auth::user()->barbershop_id);
}
public function scopeToday(Builder $query): Builder
{
return $query->whereDate('created_at', Carbon::today());
}
public function scopeYesterday(Builder $query): Builder
{
return $query->whereDate('created_at', Carbon::yesterday());
}
public function scopeGoods(Builder $query): Builder
{
return $query->where('type', '2');
}
public function scopeFixed(Builder $query): Builder
{
return $query->where('type', '1');
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function barbershop(): BelongsTo
{
return $this->belongsTo(Barbershop::class);
}
public function attachment(): MorphOne
{
return $this->morphOne(Attachment::class, 'attachmentable');
}
}