translator = $translator; $this->eventDispatcher = $eventDispatcher; $this->authorizationHelper = $authorizationHelper; } /** * @Route("/", name="accompanying_course_document_index", methods="GET") */ public function index(AccompanyingPeriod $course): Response { $em = $this->getDoctrine()->getManager(); if ($course === NULL) { throw $this->createNotFoundException('Accompanying period not found'); } $this->denyAccessUnlessGranted(AccompanyingPeriodVoter::SEE, $course); // $reachableScopes = $this->authorizationHelper // ->getReachableScopes( // $this->getUser(), new Role(PersonDocumentVoter::SEE), // $person->getCenter()); $documents = $em ->getRepository("ChillDocStoreBundle:AccompanyingCourseDocument") ->findBy( ['course' => $course], ['date' => 'DESC'] ); // $event = new PrivacyEvent($course, [ // 'element_class' => AccompanyingCourseDocument::class, // 'action' => 'index' // ]); // $this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event); return $this->render( 'ChillDocStoreBundle:AccompanyingCourseDocument:index.html.twig', [ 'documents' => $documents, 'course' => $course ]); } /** * @Route("/new", name="accompanying_course_document_new", methods="GET|POST") */ public function new(Request $request, AccompanyingPeriod $course): Response { if ($course === NULL) { throw $this->createNotFoundException('Accompanying period not found'); } $this->denyAccessUnlessGranted(AccompanyingPeriodVoter::SEE, $course); $document = new AccompanyingCourseDocument(); $document->setUser($this->getUser()); $document->setCourse($course); $document->setDate(new \DateTime('Now')); $form = $this->createForm(AccompanyingCourseDocumentType::class, $document); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->denyAccessUnlessGranted( 'CHILL_ACCOMPANYING_COURSE_DOCUMENT_CREATE', $document, 'creation of this activity not allowed'); $em = $this->getDoctrine()->getManager(); $em->persist($document); $em->flush(); $this->addFlash('success', $this->translator->trans("The document is successfully registered")); return $this->redirectToRoute('accompanying_course_document_index', ['course' => $course->getId()]); } elseif ($form->isSubmitted() and !$form->isValid()) { $this->addFlash('error', $this->translator->trans("This form contains errors")); } return $this->render('ChillDocStoreBundle:AccompanyingCourseDocument:new.html.twig', [ 'document' => $document, 'form' => $form->createView(), 'course' => $course, ]); } /** * @Route("/{id}", name="accompanying_course_document_show", methods="GET") */ public function show(AccompanyingPeriod $course, AccompanyingCourseDocument $document): Response { $this->denyAccessUnlessGranted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', $course); $this->denyAccessUnlessGranted('CHILL_ACCOMPANYING_COURSE_DOCUMENT_SEE', $document); // $event = new PrivacyEvent($person, array( // 'element_class' => PersonDocument::class, // 'element_id' => $document->getId(), // 'action' => 'show' // )); // $this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event); return $this->render( 'ChillDocStoreBundle:AccompanyingCourseDocument:show.html.twig', ['document' => $document, 'course' => $course]); } /** * @Route("/{id}/edit", name="accompanying_course_document_edit", methods="GET|POST") */ public function edit(Request $request, AccompanyingPeriod $course, AccompanyingCourseDocument $document): Response { $this->denyAccessUnlessGranted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', $course); $this->denyAccessUnlessGranted('CHILL_PERSON_DOCUMENT_UPDATE', $document); $document->setUser($this->getUser()); $document->setDate(new \DateTime('Now')); $form = $this->createForm( AccompanyingCourseDocumentType::class, $document); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->getDoctrine()->getManager()->flush(); $this->addFlash('success', $this->translator->trans("The document is successfully updated")); // $event = new PrivacyEvent($person, array( // 'element_class' => PersonDocument::class, // 'element_id' => $document->getId(), // 'action' => 'update' // )); // $this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event); return $this->redirectToRoute( 'accompanying_course_document_edit', ['id' => $document->getId(), 'course' => $course->getId()]); } elseif ($form->isSubmitted() and !$form->isValid()) { $this->addFlash('error', $this->translator->trans("This form contains errors")); } // $event = new PrivacyEvent($person, array( // 'element_class' => PersonDocument::class, // 'element_id' => $document->getId(), // 'action' => 'edit' // )); // $this->eventDispatcher->dispatch(PrivacyEvent::PERSON_PRIVACY_EVENT, $event); return $this->render( 'ChillDocStoreBundle:AccompanyingCourseDocument:edit.html.twig', [ 'document' => $document, 'form' => $form->createView(), 'person' => $course, ]); } /** * @Route("/{id}", name="accompanying_course_document_delete", methods="DELETE") */ public function delete(Request $request, AccompanyingPeriod $course, AccompanyingCourseDocument $document): Response { $this->denyAccessUnlessGranted('CHILL_PERSON_ACCOMPANYING_PERIOD_SEE', $course); $this->denyAccessUnlessGranted('CHILL_PERSON_DOCUMENT_DELETE', $document); if ($this->isCsrfTokenValid('delete'.$document->getId(), $request->request->get('_token'))) { $em = $this->getDoctrine()->getManager(); $em->remove($document); $em->flush(); } return $this->redirectToRoute( 'accompanying_course_document_index', ['course' => $course->getId()]); } }