getUser(); $dateTimeFactory = $this->getDateTimeFactory($currentUser); $canChangeUser = $this->isGranted('contract_other_profile'); $defaultDate = $dateTimeFactory->createStartOfYear(); $values = new YearByUser(); $values->setUser($currentUser); $values->setDate($defaultDate); $form = $this->createFormForGetRequest(ContractByUserForm::class, $values, [ 'include_user' => $canChangeUser, 'timezone' => $dateTimeFactory->getTimezone()->getName(), 'start_date' => $values->getDate(), ]); $form->submit($request->query->all(), false); if ($values->getUser() === null) { $values->setUser($currentUser); } /** @var User $profile */ $profile = $values->getUser(); if ($this->getUser() !== $profile && !$canChangeUser) { throw $this->createAccessDeniedException('Cannot access user contract settings'); } if ($values->getDate() === null) { $values->setDate(clone $defaultDate); } /** @var \DateTime $yearDate */ $yearDate = $values->getDate(); $year = $workingTimeService->getYear($profile, $yearDate); $page = new PageSetup('work_times'); $page->setHelp('contract.html'); $page->setActionName('contract'); $page->setPaginationForm($form); // additional boxes by plugins $controllerEvent = new WorkContractDetailControllerEvent($year); $eventDispatcher->dispatch($controllerEvent); $now = $dateTimeFactory->createDateTime(); $summary = $workingTimeService->getYearSummary($year, $now); $boxConfiguration = new BoxConfiguration(); $boxConfiguration->setDecimal(false); $boxConfiguration->setCollapsed($profile->hasWorkHourConfiguration() && $summary->count() > 0); return $this->render('contract/status.html.twig', [ 'box_configuration' => $boxConfiguration, 'page_setup' => $page, 'decimal' => $boxConfiguration->isDecimal(), 'summaries' => $summary, 'now' => $now, 'boxes' => $controllerEvent->getController(), 'year' => $year, 'user' => $profile, 'form' => $form->createView(), ]); } }