mastercut/app/Models/Transaction.php

76 lines
1.7 KiB
PHP
Executable File

<?php
namespace App\Models;
use Carbon\Carbon;
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;
class Transaction extends Model
{
use HasFactory, SoftDeletes;
protected $fillable = [
'user_id',
'cashier_id',
'barbershop_id',
'customer_id',
'service_id',
'price',
'discount',
'total',
'payment_method',
'is_paid',
];
public function scopeBarbershop(Builder $query): Builder
{
return $query->where('transactions.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 user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function cashier(): BelongsTo
{
return $this->belongsTo(User::class, 'cashier_id');
}
public function barbershop(): BelongsTo
{
return $this->belongsTo(Barbershop::class);
}
public function customer(): BelongsTo
{
return $this->belongsTo(Customer::class);
}
public function service(): BelongsTo
{
return $this->belongsTo(Service::class);
}
public function attachment(): MorphOne
{
return $this->morphOne(Attachment::class, 'attachmentable');
}
}