示例#1
0
 public function findBeneficiaryEvaluations($criteria = array(), $filter = array())
 {
     if (empty($criteria) || !array_key_exists('beneficiaryId', $criteria)) {
         throw new \Exception('Unknown beneficiary\'s evaluation list with these given criteria');
     }
     $model = true;
     if (!empty($filter)) {
         $criteria = array_merge($criteria, array('filter' => $filter));
         if (array_key_exists('model', $filter)) {
             $model = $filter['model'];
         }
     }
     $data = null;
     try {
         // -- Find data
         $request = $this->client->get('evaluations', array(), array('query' => $criteria));
         $response = $request->send()->json();
         // - Wrong result
         if (StatusConstants::OK != $response['status']) {
             throw new \Exception($response['message'], StatusConstants::toCode($response['status']));
         }
         if (empty($response['data']) || !isset($response['data']['evaluations']) || !is_array($response['data']['evaluations']) || empty($response['data']['evaluations'])) {
             return null;
         }
         // - Good result
         $data = array();
         $result = $response['data'];
         // Model available and requested
         if (array_key_exists('model', $response['data']) && (true === $model || 'separate' === $model)) {
             $data['model'] = EvaluationModel::fromJson($result['model']);
         }
         // Evaluations available
         $evaluations = array();
         $receivedEvaluations = $result['evaluations'];
         foreach ($receivedEvaluations as $element) {
             if ('merge' == $model) {
                 $evaluations[] = EvaluationModel::fromJson($element);
             } else {
                 $evaluations[] = Evaluation::fromJson($element);
             }
         }
         $data['evaluations'] = $evaluations;
     } catch (\Exception $e) {
         throw new \Exception('Erreur lors de l\'appel au P4S : findBeneficiaryEvaluations()', StatusConstants::toCode(StatusConstants::UNKNOWN_ERROR), $e);
     }
     return $data;
 }
示例#2
0
 public static function fromJson($data)
 {
     if (!is_array($data)) {
         return null;
     }
     $element = new Evaluation(@$data['folderSectionId'], @$data['code'], @$data['beneficiaryId'], @$data['evaluatorId'], @$data['appId'], @$data['state'], @$data['id']);
     $element->setDate(@$data['date']);
     $element->setObject(@$data['object']);
     $element->setLastUpdate(@$data['lastUpdate']);
     if (array_key_exists('items', $data) && is_array($data['items']) && count($data['items']) > 0) {
         foreach ($data['items'] as $item) {
             if (array_key_exists('responses', $item) && is_array($item['responses']) && !empty($item['responses'])) {
                 $newItem = new EvaluationItem(@$item['responses'], @$item['id']);
                 $element->addItem($newItem);
             }
         }
     }
     return $element;
 }
 /**
  *
  * @param Evaluation $evaluation        	
  * @return \Amisure\DataBrokerBundle\Entity\EvaluationModel
  */
 public function mergeWithEvaluation(Evaluation $evaluation)
 {
     $this->folderSectionId = $evaluation->getFolderSectionId();
     $this->state = $evaluation->getState();
     $this->beneficiaryId = $evaluation->getBeneficiaryId();
     $this->evaluatorId = $evaluation->getEvaluatorId();
     $this->appId = $evaluation->getAppId();
     $this->date = $evaluation->getDate();
     $this->lastUpdate = $evaluation->getLastUpdate();
     $cats = $this->getCategories();
     $newCats = array();
     $this->setCategories($newCats);
     $nbOfCat = count($cats);
     for ($i = 0; $i < $nbOfCat; $i++) {
         $newCat = new EvaluationModelCategory($cats[$i]->getLabel(), $cats[$i]->getCode(), $cats[$i]->getCategoryId(), $cats[$i]->getId());
         $items = $cats[$i]->getItems();
         $nbOfItem = count($items);
         for ($j = 0; $j < $nbOfItem; $j++) {
             $newItem = new EvaluationModelItem($items[$j]->getLabel(), $items[$j]->getResponseType(), $items[$j]->getItemId(), $items[$j]->getId());
             $responses = $items[$j]->getResponses();
             $nbOfResponse = count($responses);
             $relatedItem = $evaluation->getItemById($cats[$i]->getCategoryId(), $items[$j]->getItemId());
             for ($k = 0; $k < $nbOfResponse; $k++) {
                 $newResponse = new EvaluationModelItemResponse($responses[$k]->getValue(), $responses[$k]->getLabel(), $responses[$k]->getType(), $responses[$k]->getResponseId(), $responses[$k]->getId());
                 if (null != $relatedItem) {
                     $relatedResponse = $relatedItem->getResponseById($responses[$k]->getResponseId());
                     if (null != $relatedResponse) {
                         $newResponse->setValue($relatedResponse->getValue());
                         $newResponse->selected = $relatedResponse->getSelected();
                     }
                 }
                 $newItem->addResponse($newResponse);
             }
             $newCat->addItem($newItem);
         }
         $newCats[] = $newCat;
     }
     $this->setCategories($newCats);
     $this->setId($evaluation->getId());
     return $this;
 }