/** * @param Region $region * * @return $this */ public function addRegion($region) { $em = $this->entityManager; /** @var HotelRepository $hotelRepo */ $hotelRepo = $em->getRepository('SehBundle:Hotel'); $departments = $region->getDepartments(); $depIds = array(); $brands = array(); foreach (array_keys($this->context->getValues('brand')) as $brand) { $brands[$brand] = (int) 0; } /** @var Department $department */ foreach ($departments as $department) { $depIds[] = $department->getId(); } unset($brands['seh']); $nbForRegion = $hotelRepo->findNbForRegion($region); foreach ($nbForRegion as $nbPerBrand) { $brands[strtolower($nbPerBrand['artsysID'])] = (int) $nbPerBrand['nbHotels']; } $data = array('id' => $region->getId(), 'brands' => $brands, 'departmentsIds' => $depIds); $document = $this->regionType->createDocument($region->getId()); $document->setData($data); $this->regionType->addDocument($document); $this->updateRegion($region); return $this; }