protected function updateCollections(ICompanyService $implementation, array $data) { $implementation = parent::updateCollections($implementation, $data); if (array_key_exists('guest_os', $data) && is_array($data['guest_os'])) { $data_guests = $data['guest_os']; foreach ($data_guests as $guest_id) { $this->registerGuest($implementation, $guest_id); } } //add hyper visors if (array_key_exists('hypervisors', $data) && is_array($data['hypervisors'])) { $data_hypervisors = $data['hypervisors']; foreach ($data_hypervisors as $hypervisor_id) { $this->registerHyperVisor($implementation, $hypervisor_id); } } //add capabilities if (array_key_exists('capabilities', $data) && is_array($data['capabilities'])) { $data_capabilities = $data['capabilities']; foreach ($data_capabilities as $capability_data) { $this->addCapability($capability_data, $implementation); } } return $implementation; }
/** * @param ICompanyService $consultant * @param array $data * @return ICompanyService|void * @throws EntityValidationException * @throws NotFoundEntityException */ protected function updateCollections(ICompanyService $consultant, array $data) { $consultant = parent::updateCollections($consultant, $data); //languages if (array_key_exists('languages_spoken', $data) && is_array($data['languages_spoken'])) { $languages_data = $data['languages_spoken']; $lang_order = 0; foreach ($languages_data as $language_name) { $language = $this->language_repository->getByName($language_name); if (!$language) { $language = $this->factory->buildSpokenLanguage($language_name); $this->language_repository->add($language); } $consultant->addSpokenLanguages($language, $lang_order++); } } //config management if (array_key_exists('configuration_management', $data) && is_array($data['configuration_management'])) { $configuration_management_expertise_data = $data['configuration_management']; foreach ($configuration_management_expertise_data as $config_id) { $config = $this->configuration_management_expertise_repository->getById($config_id); if (!$config) { throw new NotFoundEntityException('ConfigurationManagementType', sprintf(' id %s', $config_id)); } $consultant->addConfigurationManagementExpertise($config); } } //services offered if (array_key_exists('services_offered', $data) && is_array($data['services_offered'])) { $services_offered_data = $data['services_offered']; foreach ($services_offered_data as $service_data) { $service = $this->service_offered_repository->getById(intval($service_data['id'])); if (!$service) { throw new NotFoundEntityException('ConsultantServiceOfferedType', sprintf(' id %s', intval($service['id']))); } if (array_key_exists('regions', $service_data) && is_array($service_data['regions'])) { $regions = $service_data['regions']; foreach ($regions as $region_id) { $region = $this->region_repository->getById(intval($region_id)); if (!$region) { throw new NotFoundEntityException('Region', sprintf(' id %s', intval($region_id))); } $consultant->addServiceOffered($service, $region); } } } } //Areas of OpenStack Expertise if (array_key_exists('expertise_areas', $data) && is_array($data['expertise_areas'])) { $expertise_areas_data = $data['expertise_areas']; foreach ($expertise_areas_data as $expertise_area_id) { $component = $this->component_repository->getById(intval($expertise_area_id)); if (!$component) { throw new NotFoundEntityException('OpenStackComponent', sprintf(' id %s', intval($expertise_area_id))); } $consultant->addExpertiseArea($component); } } //Reference Clients if (array_key_exists('reference_clients', $data) && is_array($data['reference_clients'])) { $reference_clients_data = $data['reference_clients']; foreach ($reference_clients_data as $client_name) { $client = $this->factory->buildClient(trim($client_name)); $consultant->addPreviousClients($client); } } //Offices if (array_key_exists('offices', $data) && is_array($data['offices'])) { $reference_offices_data = $data['offices']; foreach ($reference_offices_data as $office_data) { $validator = $this->validator_factory->buildValidatorForOffice($office_data); if ($validator->fails()) { return $this->validationError($validator->messages()); } $address_info = new AddressInfo($office_data['address_1'], $office_data['address_2'], $office_data['zip_code'], $office_data['state'], $office_data['city'], $office_data['country']); //list($lat,$lng) = $this->geo_coding_service->getAddressCoordinates($address_info); $office = $this->factory->buildOffice($address_info); $office->setLat((double) $office_data['lat']); $office->setLng((double) $office_data['lng']); $consultant->addOffice($office); } } return $consultant; }