/** * Send the grading of a project to its project manager if the submission is complete * * @param string $submissionFormIdentifier * @param boolean $testMode */ public function sendGradingToProjectManagerAction($submissionFormIdentifier, $testMode = TRUE) { $this->checkAdministratorAndDenyIfNeeded(); $projects = $this->projectRepository->findBySubmissionFormIdentifier($submissionFormIdentifier); foreach ($projects as $project) { /** @var \GIB\GradingTool\Domain\Model\Project $project */ if (!is_null($project->getSubmissionLastUpdated()) && !empty($project->getSubmissionContent())) { $message = 'Send Grading for Project ' . $project->getProjectTitle() . ' to ' . $project->getProjectManager()->getPrimaryElectronicAddress()->getIdentifier() . '.'; if (!$testMode) { $this->submissionService->sendGradingToProjectManager($project); print '[!!!] ' . $message . PHP_EOL; } else { print '[TEST] ' . $message . PHP_EOL; } } } die; }
/** * Executes this finisher * @see AbstractFinisher::execute() * * @return void * @throws \TYPO3\Flow\Mvc\Exception\StopActionException(); */ protected function executeInternal() { /** @var \TYPO3\Form\Core\Runtime\FormRuntime $formRuntime */ $formRuntime = $this->finisherContext->getFormRuntime(); // The corresponding project $projectIdentifier = $formRuntime->getRequest()->getParentRequest()->getArgument('project'); /** @var \GIB\GradingTool\Domain\Model\Project $project */ $project = $this->projectRepository->findByIdentifier($projectIdentifier); $sendGradingToProjectManager = FALSE; if (is_null($project->getSubmissionLastUpdated())) { $sendGradingToProjectManager = TRUE; } // update the project with the data from the form $formValueArray = $formRuntime->getFormState()->getFormValues(); $project->setSubmissionContent(serialize($formValueArray)); $project->setSubmissionLastUpdated(new \TYPO3\Flow\Utility\Now()); $this->projectRepository->update($project); $this->persistenceManager->persistAll(); // add a flash message $message = new \TYPO3\Flow\Error\Message('Thank you for submitting the data for your project "%s".', \TYPO3\Flow\Error\Message::SEVERITY_OK, array($project->getProjectTitle())); $this->flashMessageContainer->addMessage($message); // send notification mail $templateIdentifierOverlay = $this->templateService->getTemplateIdentifierOverlay('newSubmissionNotification', $project); $this->notificationMailService->sendNotificationMail($templateIdentifierOverlay, $project, $project->getProjectManager()); if ($sendGradingToProjectManager) { // The grading was completed for the first time, so we send the grading to the project manager $this->submissionService->sendGradingToProjectManager($project); } // redirect to dashboard $formRuntime = $this->finisherContext->getFormRuntime(); $request = $formRuntime->getRequest()->getMainRequest(); $uriBuilder = new \TYPO3\Flow\Mvc\Routing\UriBuilder(); $uriBuilder->setRequest($request); $uriBuilder->reset(); $uri = $uriBuilder->uriFor('index', NULL, 'Standard'); $response = $formRuntime->getResponse(); $mainResponse = $response; while ($response = $response->getParentResponse()) { $mainResponse = $response; } $mainResponse->setStatus(303); $mainResponse->setHeader('Location', (string) $uri); throw new \TYPO3\Flow\Mvc\Exception\StopActionException(); }