コード例 #1
0
 public function save($values, $method, $response_id)
 {
     foreach ($values as $id => $score) {
         $alternativeMeasurement = AlternativeMeasurementTable::getInstance()->getOneForSave($response_id, $id, $this->criterion_id);
         if (!$alternativeMeasurement) {
             $alternativeMeasurement = new AlternativeMeasurement();
         }
         $alternativeMeasurement->alternative_head_id = $id;
         $alternativeMeasurement->criterion_id = $this->criterion_id;
         $alternativeMeasurement->score = $score;
         $alternativeMeasurement->rating_method = $method;
         $alternativeMeasurement->response_id = $response_id;
         $alternativeMeasurement->save();
     }
 }
コード例 #2
0
ファイル: actions.class.php プロジェクト: sensorsix/app
 /**
  * @param sfWebRequest $request
  * @return sfView
  */
 public function executeSave(sfWebRequest $request)
 {
     $this->forward404Unless($request->isXmlHttpRequest());
     $measurement = $request->getParameter('measurement');
     $decision_id = $request->getParameter('decision_id');
     $user = $this->getUser()->getGuardUser();
     $keys = array_keys($measurement);
     $alternative_id = array_shift($keys);
     $keys = array_keys($measurement[$alternative_id]);
     $criterion_id = array_shift($keys);
     $value = $measurement[$alternative_id][$criterion_id];
     $alternativeMeasurement = AlternativeMeasurementTable::getInstance()->getOneForDashboard($user, $decision_id, $alternative_id, $criterion_id);
     if (is_object($alternativeMeasurement)) {
         $alternativeMeasurement->score = $value;
         $alternativeMeasurement->save();
     } else {
         $response = ResponseTable::getInstance()->getOneForDashboard($user, $decision_id);
         if (is_object($response)) {
             $alternativeMeasurement = new AlternativeMeasurement();
             $alternativeMeasurement->score = $value;
             $alternativeMeasurement->alternative_head_id = $alternative_id;
             $alternativeMeasurement->criterion_id = $criterion_id;
             $alternativeMeasurement->Response = $response;
             $alternativeMeasurement->save();
         }
     }
     Doctrine_Query::create()->delete()->from('Graph')->where('decision_id = ?', $decision_id)->execute();
     $criteriaAnalyze = new CriteriaAnalyze();
     $criteriaAnalyze->setDecisionId($decision_id);
     $criteriaAnalyze->load();
     $stackedBarChart = new StackedBarChart();
     $stackedBarChart->setDecisionId($decision_id);
     $stackedBarChart->setCriteriaValues($criteriaAnalyze->getCriteriaValues());
     $stackedBarChart->load();
     $costAnalyze = new CostAnalyze();
     $costAnalyze->setDecisionId($decision_id);
     $costAnalyze->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $costAnalyze->setCumulativeData($stackedBarChart->getCumulativeData());
     $costAnalyze->load();
     $cumulativeChart = new CumulativeGainChart();
     $cumulativeChart->setDecisionId($decision_id);
     $cumulativeChart->setSortedAlternativeIds($stackedBarChart->getSortedAlternativeIds());
     $cumulativeChart->setMeasurement($stackedBarChart->getCumulativeData());
     $cumulativeChart->setCostData($costAnalyze->getData());
     $cumulativeChart->setAlternativeNames($costAnalyze->getAlternativeNames());
     $cumulativeChart->setCriterionNames($costAnalyze->getCriteria());
     $cumulativeChart->load();
     $stacked_bar_chart[] = '"data":' . $stackedBarChart->getJsonData();
     $stacked_bar_chart[] = '"alternatives":' . $stackedBarChart->getAlternativesJson();
     $stacked_bar_chart[] = '"criteria":' . $stackedBarChart->getCriteriaJson();
     $cumulative_chart[] = '"costData":' . $cumulativeChart->getJsonCostData();
     $cumulative_chart[] = '"benefitData":' . $cumulativeChart->getJsonData();
     $cumulative_chart[] = '"criteria":' . json_encode($costAnalyze->getCriteria());
     $cumulative_chart[] = '"alternatives":' . $cumulativeChart->getAlternativesJson();
     $response = array();
     $response[] = '"cumulativeChart":{' . implode(',', $cumulative_chart) . '}';
     $response[] = '"stackedBarChart":{' . implode(',', $stacked_bar_chart) . '}';
     $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8');
     return $this->renderText('{' . implode(',', $response) . '}');
 }
コード例 #3
0
 public function save()
 {
     foreach ($this->values as $criterion_id => $alternatives) {
         foreach ($alternatives as $alternative_id => $score) {
             if ($this->role->updateable) {
                 $alternativeMeasurement = AlternativeMeasurementTable::getInstance()->getOneForSave($this->response_id, $alternative_id, $criterion_id);
                 if (!$alternativeMeasurement) {
                     $alternativeMeasurement = new AlternativeMeasurement();
                 }
             } else {
                 $alternativeMeasurement = new AlternativeMeasurement();
             }
             $alternativeMeasurement->alternative_head_id = $alternative_id;
             $alternativeMeasurement->criterion_id = $criterion_id;
             $alternativeMeasurement->rating_method = 'five point scale';
             $alternativeMeasurement->response_id = $this->response_id;
             $alternativeMeasurement->score = $score;
             $alternativeMeasurement->save();
         }
     }
 }
コード例 #4
0
ファイル: Decision.class.php プロジェクト: sensorsix/app
 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();
         }
     }
 }