/** * Remove schedule * * @param \Proethos2\ModelBundle\Entity\SubmissionTask $schedule */ public function removeSchedule(\Proethos2\ModelBundle\Entity\SubmissionTask $schedule) { $this->schedule->removeElement($schedule); }
/** * @Route("/submission/new/{submission_id}/fourth", name="submission_new_fourth_step") * @Template() */ public function FourthStepAction($submission_id) { $output = array(); $request = $this->getRequest(); $session = $request->getSession(); $translator = $this->get('translator'); $em = $this->getDoctrine()->getManager(); $submission_repository = $em->getRepository('Proethos2ModelBundle:Submission'); $submission_cost_repository = $em->getRepository('Proethos2ModelBundle:SubmissionCost'); $submission_task_repository = $em->getRepository('Proethos2ModelBundle:SubmissionTask'); $user_repository = $em->getRepository('Proethos2ModelBundle:User'); $submission_clinical_trial_repository = $em->getRepository('Proethos2ModelBundle:SubmissionClinicalTrial'); $clinical_trial_name_repository = $em->getRepository('Proethos2ModelBundle:ClinicalTrialName'); // getting the current submission $submission = $submission_repository->find($submission_id); $output['submission'] = $submission; $clinical_trial_names = $clinical_trial_name_repository->findByStatus(true); $output['clinical_trial_names'] = $clinical_trial_names; if (!$submission or $submission->getIsSended()) { throw $this->createNotFoundException($translator->trans('No submission found')); } $allow_to_edit_submission = true; $user = $this->get('security.token_storage')->getToken()->getUser(); // if current user is not owner, check the team if ($user != $submission->getOwner()) { $allow_to_edit_submission = false; foreach ($submission->getTeam() as $team_member) { // if current user = some team member, than it allows to edit if ($user == $team_member) { $allow_to_edit_submission = true; } } } if (!$allow_to_edit_submission) { throw $this->createNotFoundException($translator->trans('No submission found')); } // checking if was a post request if ($this->getRequest()->isMethod('POST')) { // getting post data $post_data = $request->request->all(); // checking required files $required_fields = array('funding-source', 'primary-sponsor'); foreach ($required_fields as $field) { if (!isset($post_data[$field]) or empty($post_data[$field])) { $session->getFlashBag()->add('error', $translator->trans("Field '%field%' is required.", array("%field%" => $field))); return $output; } } // removing all clinical_trial to rewrite foreach ($submission->getClinicalTrial() as $trial) { $submission->removeClinicalTrial($trial); $em->remove($trial); $em->flush(); } if (isset($post_data['clinical-trial'])) { $submission->setClinicalTrialSecondary($post_data['clinical-trial-second']); foreach ($post_data['clinical-trial'] as $key => $trial_data) { $trial_name = $clinical_trial_name_repository->find($trial_data['name-id']); $date = NULL; if (!empty($trial_data['date'])) { $date = new \DateTime($trial_data['date']); } // check if exists $trial = $submission_clinical_trial_repository->findOneBy(array('submission' => $submission, 'name' => $trial_name, 'date' => $date, 'number' => $trial_data['number'])); if (!$trial) { $trial = new SubmissionClinicalTrial(); $trial->setSubmission($submission); $trial->setName($trial_name); $trial->setNumber($trial_data['number']); $trial->setDate($date); } $em->persist($trial); $em->flush(); // add in submission $submission->addClinicalTrial($trial); } } // removing all team to readd foreach ($submission->getBudget() as $budget) { $submission->removeBudget($budget); $em->remove($budget); $em->flush(); } if (isset($post_data['budget'])) { foreach ($post_data['budget'] as $key => $cost) { // check if exists $submission_cost = $submission_cost_repository->findOneBy(array('submission' => $submission, 'description' => $cost['description'], 'quantity' => $cost['quantity'], 'unit_cost' => $cost['unit_cost'])); // if not exists, create the new submission_cost if (!$submission_cost) { $submission_cost = new SubmissionCost(); $submission_cost->setSubmission($submission); $submission_cost->setDescription($cost['description']); $submission_cost->setQuantity($cost['quantity']); $submission_cost->setUnitCost($cost['unit_cost']); } $em->persist($submission_cost); $em->flush(); // add in submission $submission->addBudget($submission_cost); } } $submission->setFundingSource($post_data['funding-source']); $submission->setPrimarySponsor($post_data['primary-sponsor']); $submission->setSecondarySponsor($post_data['secondary-sponsor']); // removing all schedule to readd foreach ($submission->getSchedule() as $schedule) { $submission->removeSchedule($schedule); $em->remove($schedule); $em->flush(); } if (isset($post_data['schedule'])) { foreach ($post_data['schedule'] as $key => $task) { // check if exists $submission_task = $submission_task_repository->findOneBy(array('submission' => $submission, 'description' => $task['description'], 'init' => new \DateTime($task['init']), 'end' => new \DateTime($task['end']))); // if not exists, create the new submission_task if (!$submission_task) { $submission_task = new SubmissionTask(); $submission_task->setSubmission($submission); $submission_task->setDescription($task['description']); $submission_task->setInit(new \DateTime($task['init'])); $submission_task->setEnd(new \DateTime($task['end'])); } $em->persist($submission_task); $em->flush(); // add in submission $submission->addSchedule($submission_task); } } $em->persist($submission); $em->flush(); $session->getFlashBag()->add('success', $translator->trans("Fourth step saved with sucess.")); return $this->redirectToRoute('submission_new_fifth_step', array('submission_id' => $submission->getId()), 301); } return $output; }