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()));
}