diff --git a/app/Models/Applications/Application.php b/app/Models/Applications/Application.php index db4c8a1..14a71f8 100644 --- a/app/Models/Applications/Application.php +++ b/app/Models/Applications/Application.php @@ -97,13 +97,19 @@ class Application extends Model { } public function setExpert(CompanyMember $expert) { - if ($this->expert->id !== $expert->id) { + if (($this->expert->id ?? null) !== $expert->id) { $previousExpert = $this->expert; $this->update(['expert_id' => $expert->id]); event(new ApplicationExpertChanged($this, $previousExpert)); } } + public function isExpert(?User $user = null): bool { + return $this->expert()->whereHas('user', function($query) use($user) { + $query->where(['user_id' => $user->id ?? null]); + })->exists(); + } + public static function generateNumber($start = 100, $digits = 5): string { $res = intval(static::query()->max('number') ?? $start) + 1; while (strlen($res) < $digits) { diff --git a/app/Services/PermissionsService.php b/app/Services/PermissionsService.php index d8eaf39..04d55f6 100644 --- a/app/Services/PermissionsService.php +++ b/app/Services/PermissionsService.php @@ -41,7 +41,7 @@ class PermissionsService { } public function applicationPermissions(): array { - return ['edit' => $this->model->submitter_id === $this->user->id, 'reply' => $this->user->isExpert, 'manage' => $this->user->isApplicationsManager]; + return ['edit' => $this->model->submitter_id === $this->user->id, 'reply' => $this->model->isExpert($this->user), 'manage' => $this->user->isApplicationsManager]; } public function pagePermissions(): array {