Ojs\JournalBundle\Controller\ArticleSubmissionController::startAction PHP Method

startAction() public method

public startAction ( Request $request ) : RedirectResponse | Response
$request Symfony\Component\HttpFoundation\Request
return Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    public function startAction(Request $request)
    {
        $journal = $this->get('ojs.journal_service')->getSelectedJournal();
        $em = $this->getDoctrine();
        $currentTime = date('H:i:s \\O\\n d/m/Y');
        if ($this->submissionsNotAllowed($request) || $journal->getEndingDate() !== null && $currentTime < $journal->getEndingDate()) {
            return $this->respondAsNotAllowed();
        }
        $session = $this->get('session');
        if (!$journal) {
            $this->throw404IfNotFound($journal);
        }
        /** @var SubmissionChecklist[] $checkLists */
        $checkLists = [];
        $checkListsChoices = [];
        foreach ($journal->getSubmissionChecklist() as $checkList) {
            if ($checkList->getVisible() && ($checkList->getLocale() === $request->getLocale() || empty($checkList->getLocale()))) {
                $checkLists[] = $checkList;
                $checkListsChoices[$checkList->getId()] = $checkList->getId();
            }
        }
        $entity = new ArticleSubmissionStart();
        $journalSubmissionFiles = $em->getRepository('OjsJournalBundle:JournalSubmissionFile')->findBy(['visible' => true, 'locale' => $request->getLocale(), 'journal' => $journal]);
        foreach ($journalSubmissionFiles as $file) {
            $fileEntity = new ArticleSubmissionFile();
            $entity->addArticleSubmissionFile($fileEntity);
        }
        $form = $this->createStartForm($checkListsChoices, $entity);
        $form->handleRequest($request);
        $submissionFiles = [];
        if ($form->isValid() && $form->isSubmitted()) {
            foreach ($entity->getArticleSubmissionFiles() as $fileKey => $submissionFile) {
                if (empty($submissionFile->getFile()) && $journalSubmissionFiles[$fileKey]->getRequired()) {
                    $this->errorFlashBag('all.required.files.must.be.uploaded');
                    return $this->render('OjsJournalBundle:ArticleSubmission:start.html.twig', array('journal' => $journal, 'checkLists' => $checkLists, 'journalSubmissionFiles' => $journalSubmissionFiles, 'form' => $form->createView()));
                }
                $submissionFiles[$fileKey] = $submissionFile->getFile();
            }
            $session->set('submissionFiles', $submissionFiles);
            return $this->redirectToRoute('ojs_journal_submission_new', array('journalId' => $journal->getId()));
        }
        return $this->render('OjsJournalBundle:ArticleSubmission:start.html.twig', array('journal' => $journal, 'checkLists' => $checkLists, 'journalSubmissionFiles' => $journalSubmissionFiles, 'form' => $form->createView()));
    }