Files
GSB-Construction/Modules/ApprovalWorkflow/app/Traits/HasApprovable.php

31 lines
727 B
PHP

<?php
namespace Modules\ApprovalWorkflow\Traits;
use Modules\ApprovalWorkflow\Models\ApprovalChain;
trait HasApprovable
{
public function approvalChains()
{
return $this->morphMany(ApprovalChain::class, 'approvable');
}
public function latestApprovalChain(): ?ApprovalChain
{
return $this->approvalChains()->latest()->first();
}
public function isApproved(): bool
{
$chain = $this->latestApprovalChain();
return $chain && $chain->status->value === 'approved';
}
public function isPendingApproval(): bool
{
$chain = $this->latestApprovalChain();
return $chain && in_array($chain->status->value, ['pending', 'in_review']);
}
}