public function getItemCreateResponse(sfGuardUser $user) { /** @var sfWebRequest $request */ $request = $this->getRequest(); $decision = DecisionTable::getInstance()->getDecisionForUser($user, $request->getParameter('decision_id')); if (is_object($decision)) { $alternative = new Alternative(); $alternative->Decision = $decision; $alternative->name = $request->getParameter('name', 'New ' . $decision->getAlternativeAlias()); $alternative->additional_info = $request->getParameter('description', ''); $alternative->status = $request->getParameter('status', 'New'); $alternative->setCreatedBy(Alternative::generateUpdateAndCreatedBy($user)); $alternative->setUpdatedBy(Alternative::generateUpdateAndCreatedBy($user)); try { $alternative->save(); $result = array('status' => 'success', 'result' => $alternative->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 executeImport(sfWebRequest $request) { $this->forward404Unless($request->isXmlHttpRequest()); $decision_id = $request->getParameter('decision_id', false); /** @var Decision $decision */ $decision = DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id); $fileValidator = new sfValidatorFile(array('required' => true)); $importerClass = $this->model . 'Importer'; $importer = new $importerClass(); $importer->setDecision($decision); if ($this->model == 'Alternative') { $importer->setCreatedAndUpdatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); } foreach ($request->getFiles('files') as $file) { $validatedFile = $fileValidator->clean($file); $importer->setFile($validatedFile); $importer->import(); } $this->setLayout(false); $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8'); return $this->renderText(json_encode(array(array()))); }
public function executeAlternativeImport(sfWebRequest $request) { $this->forward404Unless($request->isXmlHttpRequest()); $decision_id = $request->getParameter('decision_id', false); /** @var Decision $decision */ $decision = DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id); $fileValidator = new sfValidatorFile(array('required' => true)); $importer = new AlternativeImporter(); $importer->setDecision($decision); $importer->setCreatedAndUpdatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); foreach ($request->getFiles('files') as $file) { $validatedFile = $fileValidator->clean($file); $importer->setFile($validatedFile); $importer->import(); } $dashboard_role = $decision->getDashboardRole(); if ($dashboard_role) { foreach ($importer->getAlternatives() as $alternative) { foreach ($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(); } $this->setLayout(false); $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8'); return $this->renderText(json_encode(array(array()))); }
/** * @param sfWebRequest $request * @return sfView */ public function executeImportFromCustomFields(sfWebRequest $request) { $decision_id = $request->getParameter('decision_id', false); $decision = DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id); $this->forward404Unless(is_object($decision)); $header = $request->getParameter('header'); $data = $request->getParameter('data'); if (array_search('name', $header) === false) { return $this->renderText(json_encode(array('status' => 'error', 'text' => 'Please ensure that data field "Name" is mapped to a column in your SpreadSheet.'))); } foreach ($data as $item) { $alternative = null; if (array_key_exists('id', $item) && !empty($item['id'])) { $alternative = AlternativeTable::getInstance()->createQuery('a')->leftJoin('a.Decision d')->leftJoin('d.User u')->leftJoin('u.TeamMember tm')->whereIn('d.user_id', sfGuardUserTable::getInstance()->getUsersInTeamIDs($this->getUser()->getGuardUser()))->andWhere('a.item_id = ?', $item['id'])->andWhere('d.id = ?', $decision->getId())->fetchOne(); } if (!is_object($alternative)) { $alternative = new Alternative(); $alternative->setDecision($decision); $alternative->setCreatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); $alternative->setUpdatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); } $custom_fields = array(); foreach ($item as $prop => $value) { if (array_key_exists($prop, $header)) { if ($header[$prop] == '_new') { $custom_fields[$prop] = $value; } elseif (!in_array($header[$prop], array('id')) && in_array($header[$prop], array('name', 'status', 'work progress', 'additional info', 'notes', 'due date', 'notify date', 'tags'))) { if ($header[$prop] == 'tags') { // Process tags $tags_request = array_map('trim', explode(',', $value)); $tags = array(); foreach ($alternative->getTagAlternative() as $tag) { $tags[] = $tag->Tag->name; } foreach (array_diff($tags_request, $tags) as $result) { Tag::newTag($this->getUser()->getGuardUser(), $alternative->getId(), $result, 'alternative'); } foreach (array_diff($tags, $tags_request) as $result) { Tag::removeTag($this->getUser()->getGuardUser(), $alternative->getId(), $result, 'alternative'); } } else { $alternative->{str_replace(' ', '_', $header[$prop])} = $value; } } } } if ($custom_fields) { $alternative->setCustomFields(json_encode($custom_fields)); } if (!$alternative->getName()) { $alternative->setName('New ' . InterfaceLabelTable::getInstance()->get($this->getUser()->getGuardUser(), InterfaceLabelTable::ITEM_TYPE)); } $alternative->save(); } return $this->renderText(json_encode(array('status' => 'success'))); }
/** * @param sfWebRequest $request * @return string */ public function executeModalUpload(sfWebRequest $request) { $this->forward404Unless($request->isXmlHttpRequest()); $result = array(); $decision_id = $this->getUser()->getAttribute('decision_id', null, 'sfGuardSecurityUser'); if (!empty($decision_id)) { $decision = DecisionTable::getInstance()->getDecisionForUser($this->getUser()->getGuardUser(), $decision_id); $this->forward404Unless(is_object($decision)); } else { $this->forward404(); } $fileValidator = new sfValidatorFile(array('required' => true)); $decisionImporter = new DecisionImporter(); $decisionImporter->setDecision($decision); $decisionImporter->setCreatedAndUpdatedBy(Alternative::generateUpdateAndCreatedBy($this->getUser()->getGuardUser())); foreach ($request->getFiles('files') as $file) { $validatedFile = $fileValidator->clean($file); $decisionImporter->setFile($validatedFile); $result = $decisionImporter->import(); } $dashboard_role = $decision->getDashboardRole(); if ($dashboard_role) { foreach ($decisionImporter->getAlternatives() as $alternative) { foreach ($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(); } $this->setLayout(false); $this->getResponse()->setHttpHeader('Content-Type', 'application/json; charset=utf-8'); return $this->renderText(json_encode(array('status' => 'success', 'items' => $result))); }