31 lines
727 B
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']);
|
|
}
|
|
}
|