DONE: layout letter with letterhead and footer, notification for newly...

This commit is contained in:
ISMAIL MASSERAN
2026-06-28 02:16:49 +00:00
parent 94ecbe5887
commit 034ecf947f
400 changed files with 29802 additions and 5446 deletions
@@ -0,0 +1,72 @@
<?php
namespace Modules\MembershipApplication\Entities;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Modules\Auth\Entities\User;
use Modules\MembershipApplication\Enums\BoardDecision;
use Modules\MembershipApplication\Enums\ManagementDecision;
use Modules\MembershipApplication\Enums\ReviewStage;
class MembershipApplicationReview extends Model
{
use HasUuids;
protected $table = 'membership_application_reviews';
/**
* @var list<string>
*/
protected $fillable = [
'membership_application_id',
'stage',
'decision',
'remarks',
'reviewer_id',
'reviewed_at',
];
/**
* @var list<string>
*/
protected $hidden = [
];
protected function casts(): array
{
return [
'stage' => ReviewStage::class,
'reviewed_at' => 'datetime',
];
}
public function membershipApplication(): BelongsTo
{
return $this->belongsTo(MembershipApplication::class);
}
public function reviewer(): BelongsTo
{
return $this->belongsTo(User::class, 'reviewer_id');
}
public function managementDecision(): ?ManagementDecision
{
if ($this->stage !== ReviewStage::Management) {
return null;
}
return ManagementDecision::tryFrom($this->decision);
}
public function boardDecision(): ?BoardDecision
{
if ($this->stage !== ReviewStage::Board) {
return null;
}
return BoardDecision::tryFrom($this->decision);
}
}