public function getAlternativeMeasurementCreateResponse(sfGuardUser $user) { /** @var sfWebRequest $request */ $request = $this->getRequest(); $role = RoleTable::getInstance()->getOneForUser($user, $request->getParameter('role_id')); if (is_object($role)) { $plannedMeasurement = new PlannedAlternativeMeasurement(); $plannedMeasurement->Role = $role; $plannedMeasurement->criterion_id = $request->getParameter('criterion_id'); $plannedMeasurement->alternative_id = $request->getParameter('alternative_id'); try { $plannedMeasurement->save(); $result = array('status' => 'success', 'result' => $plannedMeasurement->getAPIData()); } catch (sfException $ex) { $result = array('status' => 'error', 'error' => $ex->getMessage()); } } else { $result = array('status' => 'error', 'error' => sprintf('Project with id %d does not exist', $request->getParameter('decision_id'))); } return $result; }
public function createDashboard() { $role = new Role(); $role->setDecisionId($this->id); $role->setName('Collect everything'); $role->setComment('Collect everything is linked to the Overview -page reporting table. <br><br>If you delete this survey your responses on the overview page will be removed.'); $role->setUpdateable(true); $role->setDashboard(true); $role->setActive(true); $response = new Response(); $response->setDecisionId($this->id); $response->setIpAddress('127.0.0.1'); $response->setEmailAddress('dashboard'); $role->Response->add($response); $role->Response->save(); if ($this->Template->name == 'Default') { $role_estimates = new Role(); $role_estimates->setDecisionId($this->id); $role_estimates->setName('Collect Estimates'); $role_estimates->setUpdateable(false); $role_estimates->setActive(true); $role_estimates->save(); $role_value = new Role(); $role_value->setDecisionId($this->id); $role_value->setName('Collect input on Value'); $role_value->setUpdateable(false); $role_value->setActive(true); $role_value->save(); $role_usability = new Role(); $role_usability->setDecisionId($this->id); $role_usability->setName('Collect input on Usability'); $role_usability->setUpdateable(false); $role_usability->setActive(true); $role_usability->save(); $role_feasibility = new Role(); $role_feasibility->setDecisionId($this->id); $role_feasibility->setName('Collect input on Feasibility'); $role_feasibility->setUpdateable(false); $role_feasibility->setActive(true); $role_feasibility->save(); // create the default item for project $alternative = new Alternative(); $alternative->setDecisionId($this->id); $alternative->setName('Sample item'); $alternative->setStatus('Reviewed'); $alternative->save(); $popularCriteria = PopularCriterionTable::getInstance()->getDashboardDefaultList(); foreach ($popularCriteria as $popularCriterion) { $criterion = new Criterion(); $criterion->setName($popularCriterion->name); $criterion->setMeasurement($popularCriterion->measurement); $criterion->setDescription($popularCriterion->description); $criterion->setVariableType($popularCriterion->variable_type); $criterion->setDecisionId($this->id); $criterion->save(); // set default response as 3 for default item if ($popularCriterion->measurement == 'five point scale') { $alternative_measurement = new AlternativeMeasurement(); $alternative_measurement->setAlternativeHeadId($alternative->id); $alternative_measurement->setScore(3); $alternative_measurement->setResponseId($response->id); $alternative_measurement->setRatingMethod($criterion->getMeasurement()); $alternative_measurement->setCriterionId($criterion->id); $alternative_measurement->save(); } // show by default in the Survey (create default matrix of the default roles) $array = array('Hour Estimate' => $role_estimates->id, 'Feasibility' => $role_feasibility->id, 'Usability' => $role_usability->id, 'Value' => $role_value->id); if (isset($array[$popularCriterion->name])) { $planned = new PlannedAlternativeMeasurement(); $planned->setRoleId($array[$popularCriterion->name]); $planned->setAlternativeId($alternative->id); $planned->setCriterionId($criterion->id); $planned->save(); $cplanned = new PlannedCriterionPrioritization(); $cplanned->setCriterionId($criterion->id); $cplanned->setRoleId($array[$popularCriterion->name]); $cplanned->save(); } } } else { foreach ($this->Template->CriteriaTemplate as $criterionTemplate) { $criterion = new Criterion(); $criterion->setDecisionId($this->id); $criterion->setName($criterionTemplate->name); $criterion->setMeasurement($criterionTemplate->measurement); $criterion->setVariableType($criterionTemplate->variable_type); $criterion->save(); } foreach ($this->Template->RoleTemplate as $roleTemplate) { $role = new Role(); $role->setDecisionId($this->id); $role->setName($roleTemplate->name); $role->save(); } } }
/** * @param sfWebRequest $request * @return string */ public function executeAlternativeModalSave(sfWebRequest $request) { $this->forward404Unless($request->isXmlHttpRequest()); $decision_id = $this->getUser()->getAttribute('decision_id', null, 'sfGuardSecurityUser'); if (!empty($decision_id)) { $this->decision = DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id); $this->forward404Unless(is_object($this->decision)); } else { $this->forward404(); } $alternative = new Alternative(); $alternative->setName($request->getParameter('name')); $alternative->setDecision($this->decision); $alternative->setCreatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); $alternative->setUpdatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); $alternative->save(); $dashboard_role = $this->decision->getDashboardRole(); if ($dashboard_role) { foreach ($this->decision->getCriterion() as $criterion) { $planned_alternative_measurement = new PlannedAlternativeMeasurement(); $planned_alternative_measurement->setAlternative($alternative); $planned_alternative_measurement->setCriterion($criterion); $dashboard_role->PlannedAlternativeMeasurement->add($planned_alternative_measurement); } $dashboard_role->PlannedAlternativeMeasurement->save(); } $additional_roles = Doctrine_Query::create()->from('Role r')->leftJoin('r.Decision d')->where('d.id = ?', $this->decision->getId())->andWhere('d.user_id = ?', $this->getUser()->getGuardUser()->id)->execute(); $criterion_estimates = Doctrine_Query::create()->from('Criterion c')->leftJoin('c.Decision d')->where('d.id = ?', $this->decision->getId())->andWhere('d.user_id = ?', $this->getUser()->getGuardUser()->id)->andWhere('c.name = ?', 'Hour Estimate')->fetchOne(); $criterion_value = Doctrine_Query::create()->from('Criterion c')->leftJoin('c.Decision d')->where('d.id = ?', $this->decision->getId())->andWhere('d.user_id = ?', $this->getUser()->getGuardUser()->id)->andWhere('c.name = ?', 'Value')->fetchOne(); $criterion_usability = Doctrine_Query::create()->from('Criterion c')->leftJoin('c.Decision d')->where('d.id = ?', $this->decision->getId())->andWhere('d.user_id = ?', $this->getUser()->getGuardUser()->id)->andWhere('c.name = ?', 'Usability')->fetchOne(); $criterion_feasibility = Doctrine_Query::create()->from('Criterion c')->leftJoin('c.Decision d')->where('d.id = ?', $this->decision->getId())->andWhere('d.user_id = ?', $this->getUser()->getGuardUser()->id)->andWhere('c.name = ?', 'Feasibility')->fetchOne(); foreach ($additional_roles as $additional_role) { if ($additional_role->getName() == 'Collect Estimates' && $criterion_estimates) { $planned_alternative_measurement = new PlannedAlternativeMeasurement(); $planned_alternative_measurement->setAlternative($alternative); $planned_alternative_measurement->setCriterion($criterion_estimates); $planned_alternative_measurement->setRole($additional_role); $planned_alternative_measurement->save(); } elseif ($additional_role->getName() == 'Collect input on Value' && $criterion_value) { $planned_alternative_measurement = new PlannedAlternativeMeasurement(); $planned_alternative_measurement->setAlternative($alternative); $planned_alternative_measurement->setCriterion($criterion_value); $planned_alternative_measurement->setRole($additional_role); $planned_alternative_measurement->save(); } elseif ($additional_role->getName() == 'Collect input on Usability' && $criterion_usability) { $planned_alternative_measurement = new PlannedAlternativeMeasurement(); $planned_alternative_measurement->setAlternative($alternative); $planned_alternative_measurement->setCriterion($criterion_usability); $planned_alternative_measurement->setRole($additional_role); $planned_alternative_measurement->save(); } elseif ($additional_role->getName() == 'Collect input on Feasibility' && $criterion_feasibility) { $planned_alternative_measurement = new PlannedAlternativeMeasurement(); $planned_alternative_measurement->setAlternative($alternative); $planned_alternative_measurement->setCriterion($criterion_feasibility); $planned_alternative_measurement->setRole($additional_role); $planned_alternative_measurement->save(); } } // Create log $log = new Log(); $log->injectDataAndPersist($alternative, $this->getUser()->getGuardUser(), array('action' => 'new')); return sfView::NONE; }