getUser(); $assignment = $disposition->getAssignment(); if (null !== $disposition->getFeedback()) { $this->addFlash('error', 'Es liegt schon ein Feedback vor.'); return $this->redirectToRoute('app_house_manager_feedback_index'); } $feedbackSet = $assignment ->getJobProfile() ->getFeedbackSet() ; $feedback = Feedback::fromAssignment($assignment, $user); $form = $this->createForm(FeedbackType::class, $feedback, ['feedback_set' => $feedbackSet]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // Feedbacks without comments or provided by admins are published immediately if ($this->isGranted('ROLE_ADMINISTRATIVE') || empty($feedback->getComment())) { $feedback->setStatus(Feedback::STATUS_PUBLISHED); } if (true === $form->has('author')) { /** @var User $author */ $author = $form->get('author')->getData(); $feedback->setAuthor($author->getFullName()); } $teamer = $disposition->getTeamer(); $teamer->addFeedback($feedback); $disposition->setFeedback($feedback); $this->entityManager->persist($feedback); $this->entityManager->flush(); $this->eventDispatcher->dispatch( new FeedbackProvidedEvent($feedback), FeedbackProvidedEvent::NAME ); $this->addFlash('success', 'Das Feedback wurde entgegengenommen'); $defaultReturnUrlRoute = $this->isGranted('ROLE_HOUSE_MANAGER') ? 'app_house_manager_feedback_index' : $user->getDefaultRoute(); $returnUrl = $this->getReturnUrl($request, $defaultReturnUrlRoute); return $this->redirect($returnUrl); } return $this->render('administrative/feedback/provide.html.twig', [ 'form' => $form, 'disposition' => $disposition, ]); } }