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; }
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; }