requestStack->getCurrentRequest(); if (!$request) { return new JsonResponse(['items' => [], 'total' => 0]); } $employeeId = $request->query->get('employeeId'); $from = $request->query->get('from'); $to = $request->query->get('to'); $entityType = $request->query->get('entityType'); $page = max(1, (int) $request->query->get('page', '1')); $empId = $employeeId ? (int) $employeeId : null; $fromDt = $from ? new DateTimeImmutable($from) : null; $toDt = $to ? new DateTimeImmutable($to) : null; $type = $entityType ?: null; $offset = ($page - 1) * self::PER_PAGE; $total = $this->auditLogRepository->countByFilters($empId, $fromDt, $toDt, $type); $logs = $this->auditLogRepository->findByFilters($empId, $fromDt, $toDt, $type, self::PER_PAGE, $offset); $items = []; foreach ($logs as $log) { $employee = $log->getEmployee(); $employeeName = $employee ? trim(($employee->getLastName() ?? '').' '.($employee->getFirstName() ?? '')) : null; $items[] = [ 'id' => $log->getId(), 'employeeName' => $employeeName, 'employeeId' => $employee?->getId(), 'username' => $log->getUsername(), 'action' => $log->getAction(), 'entityType' => $log->getEntityType(), 'description' => $log->getDescription(), 'changes' => $log->getChanges(), 'affectedDate' => $log->getAffectedDate()?->format('Y-m-d'), 'createdAt' => $log->getCreatedAt()->setTimezone(new DateTimeZone('Europe/Paris'))->format('Y-m-d H:i:s'), ]; } return new JsonResponse([ 'items' => $items, 'total' => $total, 'page' => $page, 'perPage' => self::PER_PAGE, ]); } }