Update Role fasilitator, kordinator

This commit is contained in:
2026-11-04 14:24:51 +07:00
parent b5b046ed86
commit 41da3a71ee
48 changed files with 586 additions and 164 deletions
+39
View File
@@ -12,6 +12,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Laravel\Sanctum\HasApiTokens;
use App\Models\Konfigurasi\KoordinatorKomoditas;
use App\Models\Pertanian\Petani;
class User extends Authenticatable
@@ -52,4 +53,42 @@ class User extends Authenticatable
{
return $this->hasMany(Petani::class, 'created_by');
}
protected static function booted(): void
{
static::deleting(function (User $user) {
if ($user->isForceDeleting()) {
return;
}
$user->koordinatorKomoditas()->get()->each->delete();
});
}
public function koordinatorKomoditas(): HasMany
{
return $this->hasMany(KoordinatorKomoditas::class, 'user_id');
}
public function isKoordinator(): bool
{
return $this->role === Role::KOORDINATOR;
}
// Daftar id komoditas yang ditugaskan ke koordinator ini.
public function komoditasKoordinatorIds(): array
{
return $this->koordinatorKomoditas()->pluck('komoditas_id')->all();
}
// Koordinator hanya boleh mengakses petani dengan komoditas utama yang ditugaskan.
// Role lain tidak dibatasi di sini (aturannya tetap di masing-masing controller).
public function bolehAksesPetani(Petani $petani): bool
{
if (! $this->isKoordinator()) {
return true;
}
return in_array($petani->komoditas_id, $this->komoditasKoordinatorIds());
}
}