/** * @param array $data * @return IJob */ public function addJob(array $data) { $this_var = $this; $validator_factory = $this->validator_factory; $repository = $this->jobs_repository; $factory = $this->factory; return $this->tx_manager->transaction(function () use($this_var, $factory, $validator_factory, $data, $repository) { $validator = $validator_factory->buildValidatorForJob($data); if ($validator->fails()) { throw new EntityValidationException($validator->messages()); } $job = new JobPage(); $job->registerMainInfo($factory->buildJobMainInfo($data)); $job->registerPostedDate($data['posted_date']); $locations = $factory->buildJobLocations($data); $job->clearLocations(); foreach ($locations as $location) { $job->addLocation($location); } $job_id = $repository->add($job); return $job_id; }); }
/** * @param IJobRegistrationRequest $request * @return IJob */ public function buildJob(IJobRegistrationRequest $request) { $job = new JobPage(); $job->JobPostedDate = $request->PostDate; $job->JobCompany = $request->CompanyName; $job->JobCompany = $request->CompanyName; $job->ExpirationDate = $request->ExpirationDate; $job->Content = $request->Description; $job->Title = $request->Title; $job->JobMoreInfoLink = $request->Url; $job->JobInstructions2Apply = $request->Instructions2Apply; $job->LocationType = $request->LocationType; foreach ($request->getLocations() as $location) { $job->addLocation($location); } return $job; }