This commit is contained in:
Saufi
2026-06-03 08:51:22 +08:00
commit a14d43fe34
347 changed files with 38197 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Services\Ppm;
use App\Models\Application;
use App\Models\Position;
use App\Models\StaffAssignment;
use App\Models\User;
use Illuminate\Support\Collection;
class PpmScopeService
{
/**
* @return Collection<int, int>
*/
public function assignedPusatIds(User $user): Collection
{
$ppmPosition = Position::query()->where('code', 'PPM')->first();
if ($ppmPosition === null) {
return collect();
}
return StaffAssignment::query()
->where('user_id', $user->id)
->where('position_id', $ppmPosition->id)
->where('status', 'active')
->whereNull('saluran_mengundi_id')
->pluck('pusat_mengundi_id')
->map(fn (mixed $id): int => (int) $id)
->values();
}
public function canAccessApplication(User $user, Application $application): bool
{
if ($user->hasRole('Admin')) {
return true;
}
if (! $user->hasRole('PPM')) {
return false;
}
return $this->assignedPusatIds($user)->contains((int) $application->pusat_mengundi_id);
}
}