calendar = $calendar; $this->dateTime = $dateTime; } /** * @Route(path="/", name="calendar", methods={"GET"}) * @Cache(smaxage="10") */ public function userCalendar() { return $this->render('calendar/user.html.twig', [ 'config' => $this->calendar->getConfig(), 'google' => $this->calendar->getGoogle(), 'now' => $this->dateTime->createDateTime(), ]); } /** * @Route(path="/user", name="calendar_entries", methods={"GET"}) * @Cache(smaxage="10") */ public function calendarEntries(Request $request) { $start = $request->get('start'); $end = $request->get('end'); $start = \DateTime::createFromFormat('Y-m-d', $start); if ($start === false) { $start = new \DateTime('first day of this month'); } $start->setTime(0, 0, 0); $end = \DateTime::createFromFormat('Y-m-d', $end); if ($end === false) { $end = clone $start; $end = $end->modify('last day of this month'); } $end->setTime(23, 59, 59); $query = new TimesheetQuery(); $query ->setBegin($start) ->setUser($this->getUser()) ->setState(TimesheetQuery::STATE_ALL) ->setResultType(TimesheetQuery::RESULT_TYPE_QUERYBUILDER) ->setEnd($end) ; $repository = $this->getDoctrine()->getRepository(Timesheet::class); /* @var $entries Timesheet[] */ $entries = $repository->findByQuery($query)->getQuery()->execute(); $result = []; foreach ($entries as $entry) { $result[] = new TimesheetEntity($entry); } return $this->json($result); } }