/**
  * Add a new item
  *
  * @param \Amisure\P4SApiBundle\Entity\EvaluationModelItem|string $item
  *        	Evaluation item, or description of the evaluation item
  * @param string $value
  *        	Value of the evaluation item if the evaluation item itself is not previsously provided
  * @see \Amisure\P4SApiBundle\Entity\EvaluationModelItem
  * @return \Amisure\P4SApiBundle\Entity\EvaluationModelCategory
  */
 public function addItem($item, $responseType = '')
 {
     $evaluationItem = $item;
     if (is_string($item)) {
         $evaluationItem = new EvaluationModelItem($item, $responseType);
     }
     $evaluationItem->setCategory($this);
     if (-1 == $evaluationItem->getItemId()) {
         $evaluationItem->setItemId($this->items->count());
     }
     $this->items->add($evaluationItem);
     return $this;
 }
 /**
  * Add a new item response
  *
  * @param \Amisure\P4SApiBundle\Entity\EvaluationModelItemResponse|string $item
  *        	Evaluation item, or description of the evaluation item
  * @param string $label
  *        	Label of the evaluation item response if the evaluation item response itself is not previsously provided
  * @param string $type
  *        	Type of the evaluation item response if the evaluation item response itself is not previsously provided
  * @see \Amisure\P4SApiBundle\Entity\EvaluationModelItem
  * @return \Amisure\P4SApiBundle\Entity\EvaluationModelItem
  */
 public function addResponse($response, $label = '', $type = EvaluationModelItemResponse::TypeString)
 {
     $evaluationResponse = $response;
     if (is_string($response)) {
         $evaluationResponse = new EvaluationModelItem($response, $label, $type);
     }
     $evaluationResponse->setItem($this);
     if (-1 == $evaluationResponse->getResponseId()) {
         $evaluationResponse->setResponseId($this->responses->count());
     }
     $this->responses->add($evaluationResponse);
     return $this;
 }
 public static function fromJson($data)
 {
     $element = new EvaluationModel(@$data['code'], @$data['label'], @$data['description'], @$data['id']);
     $element->setFolderSectionId(@$data['folderSectionId']);
     $element->setBeneficiaryId(@$data['beneficiaryId']);
     $element->setEvaluatorId(@$data['evaluatorId']);
     $element->setAppId(@$data['appId']);
     $element->setState(@$data['state']);
     $element->setDate(@$data['date']);
     $element->setObject(@$data['object']);
     $element->setLastUpdate(@$data['lastUpdate']);
     if (array_key_exists('categories', $data) && is_array($data['categories']) && !empty($data['categories'])) {
         foreach ($data['categories'] as $cat) {
             $newCategory = new EvaluationModelCategory(@$cat['label'], @$cat['code'], @$cat['categoryId'], @$cat['id']);
             if (array_key_exists('items', $cat) && is_array($cat['items']) && !empty($cat['items'])) {
                 foreach ($cat['items'] as $item) {
                     $newItem = new EvaluationModelItem(@$item['label'], @$item['responseType'], @$item['itemId'], @$item['id']);
                     if (array_key_exists('responses', $item) && is_array($item['responses']) && !empty($item['responses'])) {
                         foreach ($item['responses'] as $response) {
                             $newResponse = new EvaluationModelItemResponse(@$response['value'], @$response['label'], @$response['type'], @$response['responseId'], @$response['id'], @$response['selected']);
                             $newItem->addResponse($newResponse);
                         }
                     }
                     $newCategory->addItem($newItem);
                 }
             }
             $element->addCategory($newCategory);
         }
     }
     return $element;
 }