/** * * @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; }