mastercut/app/Models/User.php
2024-11-25 17:32:03 +07:00

102 lines
2.3 KiB
PHP

<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Observers\UserObserver;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphOne;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Auth;
#[ObservedBy([UserObserver::class])]
class User extends Authenticatable
{
use HasFactory, Notifiable, SoftDeletes;
protected $fillable = [
'role_id',
'barbershop_id',
'username',
'email',
'password',
'base_salary',
'sop',
'is_active',
'entry_date',
];
public function scopeBarbershop(Builder $query): Builder
{
return $query->where('barbershop_id', Auth::user()->barbershop_id);
}
public function role(): BelongsTo
{
return $this->belongsTo(Role::class);
}
public function barbershop(): BelongsTo
{
return $this->belongsTo(Barbershop::class);
}
public function biography(): HasOne
{
return $this->hasOne(Biography::class);
}
public function customers(): HasMany
{
return $this->hasMany(Customer::class);
}
public function services(): HasMany
{
return $this->hasMany(Service::class);
}
public function attendances(): HasMany
{
return $this->hasMany(Attendance::class);
}
public function expenses(): HasMany
{
return $this->hasMany(Expense::class);
}
public function inventory(): HasMany
{
return $this->hasMany(Inventory::class);
}
public function transactions(): HasMany
{
return $this->hasMany(Transaction::class);
}
public function payrolls(): HasMany
{
return $this->hasMany(Payroll::class);
}
public function cash(): HasMany
{
return $this->hasMany(Cash::class);
}
public function attachment(): MorphOne
{
return $this->morphOne(Attachment::class, 'attachmentable');
}
}