getDateTimeFactory(); $user = $this->getUser(); $defaultStart = $dateFactory->getStartOfMonth(); $query = new ProjectDaterangeQuery($defaultStart, $user); $form = $this->createFormForGetRequest(ProjectDateRangeForm::class, $query, [ 'timezone' => $user->getTimezone() ]); $form->submit($request->query->all(), false); $begin = $query->getMonth() ?? $defaultStart; $dateRange = new DateRange(true); $dateRange->setBegin($begin); $end = $dateFactory->getEndOfMonth($dateRange->getBegin()); // this resets the time $dateRange->setEnd($end); $projects = $service->findProjectsForDateRange($query, $dateRange); $entries = $service->getBudgetStatisticModelForProjectsByDateRange($projects, $begin, $end, $end); $byCustomer = []; foreach ($entries as $entry) { /** @var Customer $customer */ $customer = $entry->getProject()->getCustomer(); if (!isset($byCustomer[$customer->getId()])) { $byCustomer[$customer->getId()] = ['customer' => $customer, 'projects' => []]; } $byCustomer[$customer->getId()]['projects'][] = $entry; } return $this->render('reporting/project_daterange.html.twig', [ 'report_title' => 'report_project_daterange', 'entries' => $byCustomer, 'form' => $form->createView(), 'queryEnd' => $dateRange->getEnd(), ]); } }