belongsTo(Employee::class); } public function store(): BelongsTo { return $this->belongsTo(Store::class); } public function scopeSort($q) { return $q->orderBy('created_at', 'desc'); } public function type(): BelongsTo { return $this->belongsTo(Keyword::class, 'reimbursement_type_id', 'key'); } public function canUpdate(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } public function canDelete(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } protected function photos(): Attribute { return Attribute::make( get: function (mixed $value) { if (! is_array($photos = json_decode($value ?? '', true))) { $photos = []; } return $photos; }, set: fn (mixed $value) => json_encode(is_array($value) ? $value : []), ); } }