/**
* @param Request $request
* @return RedirectResponse|Response
*/
public function newAction(Request $request)
{
if ($this->submissionsNotAllowed()) {
return $this->respondAsNotAllowed();
}
$journal = $this->get('ojs.journal_service')->getSelectedJournal();
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
if (!$session->has('submissionFiles')) {
return $this->redirectToRoute('ojs_journal_submission_start', array('journalId' => $journal->getId()));
}
$defaultCountryId = $this->container->getParameter('country_id');
$defaultCountry = $em->getRepository('OkulBilisimLocationBundle:Country')->find($defaultCountryId);
/** @var User $user */
$user = $this->getUser();
if (!$journal) {
return $this->redirect($this->generateUrl('ojs_journal_user_register_list'));
}
$article = new Article();
$articleAuthor = new ArticleAuthor();
$author = new Author();
$author->setUser($user)->setFirstName($user->getFirstName())->setLastName($user->getLastName())->setEmail($user->getEmail())->setAddress($user->getAddress());
if ($defaultCountry) {
$author->setCountry($defaultCountry);
}
$articleAuthor->setAuthor($author);
$article->setSubmitterUser($user)->setStatus(ArticleStatuses::STATUS_NOT_SUBMITTED)->setJournal($journal)->addArticleFile(new ArticleFile())->addArticleAuthor($articleAuthor);
$locales = [];
$submissionLangObjects = $journal->getLanguages();
foreach ($submissionLangObjects as $submissionLangObject) {
$locales[] = $submissionLangObject->getCode();
}
$defaultLocale = $journal->getMandatoryLang()->getCode();
$article->setCurrentLocale($defaultLocale);
$form = $this->createCreateForm($article, $journal, $locales, $defaultLocale);
$form->handleRequest($request);
if ($request->isMethod('POST')) {
$k = 0;
foreach ($article->getArticleAuthors() as $f_articleAuthor) {
$f_articleAuthor->setAuthorOrder($k);
$f_articleAuthor->setArticle($article);
$k++;
}
$citationCounter = 0;
foreach ($article->getCitations() as $f_citations) {
$f_citations->setOrderNum($citationCounter);
$citationCounter++;
}
foreach ($article->getArticleFiles() as $f_articleFile) {
$f_articleFile->setArticle($article);
$f_articleFile->setVersion(0);
}
$journalSubmissionFiles = $em->getRepository('OjsJournalBundle:JournalSubmissionFile')->findBy(['visible' => true, 'locale' => $request->getLocale()]);
foreach ($session->get('submissionFiles') as $fileKey => $submissionFile) {
if (!is_null($submissionFile)) {
/** @var JournalSubmissionFile $journalEqualFile */
$journalEqualFile = $journalSubmissionFiles[$fileKey];
$articleSubmissionFile = new ArticleSubmissionFile();
$articleSubmissionFile->setTitle($journalEqualFile->getTitle())->setDetail($journalEqualFile->getDetail())->setLocale($journalEqualFile->getLocale())->setRequired($journalEqualFile->getRequired())->setFile($submissionFile)->setArticle($article);
$em->persist($articleSubmissionFile);
}
}
$em->persist($article);
$em->flush();
return $this->redirectToRoute('ojs_journal_submission_preview', array('journalId' => $journal->getId(), 'articleId' => $article->getId()));
}
return $this->render('OjsJournalBundle:ArticleSubmission:new.html.twig', array('article' => $article, 'journal' => $journal, 'form' => $form->createView()));
}