feat: enhance attendance retrieval by filtering roles based on view permissions
This commit is contained in:
parent
5d11741f1d
commit
b3184de155
@ -5,6 +5,7 @@
|
||||
use App\Enums\OrderChannel;
|
||||
use App\Enums\OrderStatus;
|
||||
use App\Enums\PaymentType;
|
||||
use App\Enums\Permission;
|
||||
use App\Enums\PriceType;
|
||||
use App\Enums\Role;
|
||||
use App\Models\Attendance;
|
||||
@ -62,11 +63,16 @@ public function canCheckInForUser(User $user): bool
|
||||
|
||||
public function getAttendance(): array
|
||||
{
|
||||
/** @var User|null $user */
|
||||
/** @var User|null $user */
|
||||
$user = auth()->user();
|
||||
$isSuper = $user?->hasAnyRole(['developer', 'owner', 'direktur']) ?? false;
|
||||
|
||||
$attendanceRoles = collect(Role::cases())
|
||||
->filter(fn (Role $role) => in_array(Permission::ATTENDANCES_VIEW, $role->permissions()))
|
||||
->map(fn (Role $role) => $role->value)
|
||||
->values()
|
||||
->toArray();
|
||||
|
||||
$employeeQuery = Employee::query();
|
||||
$attendanceQuery = Attendance::query()->where('attendance_date', Carbon::today());
|
||||
$leaveRequestQuery = LeaveRequest::query()
|
||||
@ -81,6 +87,7 @@ public function getAttendance(): array
|
||||
$leaveRequestQuery->where('employee_id', $employeeId);
|
||||
}
|
||||
|
||||
$employeeQuery->whereHas('user.roles', fn ($q) => $q->whereIn('name', $attendanceRoles));
|
||||
$totalEmployees = $employeeQuery->count();
|
||||
$present = $attendanceQuery->distinct('employee_id')->count('employee_id');
|
||||
$onLeave = $leaveRequestQuery->distinct('employee_id')->count('employee_id');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user