getMatricule() ?? ''; $establishment = $model->getEstablishment() ?? ''; $site = $model->getSite() ?? ''; $service = $model->getService() ?? ''; $startDate = $this->dateToDateTime($model->getStartDate()) ?? new \DateTimeImmutable('today'); $createdAt = $model->getCreatedAt() ?? new \DateTimeImmutable(); return new Employee( matriculePublique: new ArcadiaEmployeeId($matricule), lastname: $model->getLastName() ?? '', firstname: $model->getFirstName() ?? '', start_date: $startDate, end_date: $this->dateToDateTime($model->getEndDate()), planned_end_date: $this->dateToDateTime($model->getPlannedEndDate()), establishment: new EstablishmentCode($establishment), site: new SiteId($site), service: new ServiceId($service), created_at: $createdAt, updated_at: $model->getUpdatedAt(), ); } /** * @return PageOf */ public function toPage(EmployeeListResponse $response, Pagination $pagination): PageOf { $items = []; foreach ($response->getEmployees() ?? [] as $employeeModel) { $items[] = $this->toDto($employeeModel); } $paginationDto = $this->paginationDto( $response->getPagination(), $pagination ); return new PageOf( $paginationDto, $items ); } private function paginationDto(?PaginationMeta $meta, Pagination $pagination): PaginationDto { return new PaginationDto( page: $meta?->getPage() ?? $pagination->pageNumber(), pageSize: $meta?->getPageSize() ?? $pagination->pageSize(), totalItems: $meta?->getTotalItems() ?? 0, totalPages: $meta?->getTotalPages() ?? 0, ); } private function dateToDateTime(?Date $date): ?\DateTimeInterface { if ($date === null) { return null; } return new \DateTimeImmutable((string) $date); } }