Files
cssd-back/app/Models/Package.php
T
2024-11-23 22:14:01 +03:30

68 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use App\Constants\StatusTypeEnum;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\MorphOne;
class Package extends Model
{
use HasFactory;
public $fillable = ['name', 'user_id', 'note', 'status', 'creator_id'];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, "creator_id");
}
public function items(): HasMany
{
return $this->hasMany(Item::class);
}
public function labels(): HasMany
{
return $this->hasMany(Label::class);
}
public function transfersAll(): MorphMany
{
return $this->morphMany(Transfer::class, "transferable")
->orderBy("id", "desc");
}
public function transfers(): MorphMany
{
return $this->morphMany(Transfer::class, "transferable")
->where("status", StatusTypeEnum::APPROVED)
->orderBy("id", "desc");
}
public function latestTransfer(): MorphOne
{
return $this->morphOne(Transfer::class, "transferable")
->where("status", StatusTypeEnum::APPROVED)
->orderBy("id", "desc")
->latest();
}
public function transferActive(): MorphMany
{
return $this->morphMany(Transfer::class, "transferable")
->where("status", StatusTypeEnum::APPROVED)
->whereNull("to_date")
->orderBy("id", "desc");
}
}