/** * @param Params $params * @param bool $allowDraft * * @return \Jobs\Entity\Job|object * @throws \Doctrine\ODM\MongoDB\LockException */ public function get(Params $params, $allowDraft = false) { /* @var \Jobs\Repository\Job $jobRepository */ $jobRepository = $this->repositoryService->get('Jobs/Job'); $idFromRoute = $params('id', 0); $idFromQuery = $params->fromQuery('id', 0); $idFromSubForm = $params->fromPost('job', 0); $id = empty($idFromRoute) ? empty($idFromQuery) ? $idFromSubForm : $idFromQuery : $idFromRoute; if (empty($id) && $allowDraft) { $this->acl->__invoke('Jobs/Manage', 'new'); $user = $this->auth->getUser(); /** @var \Jobs\Entity\Job $job */ $job = $jobRepository->findDraft($user); if (empty($job)) { $job = $jobRepository->create(); $job->setIsDraft(true); $job->setUser($user); $this->repositoryService->store($job); } return $job; } $job = $jobRepository->find($id); if (!$job) { throw new \RuntimeException('No job found with id "' . $id . '"'); } return $job; }
/** * @param Params $params * @param bool $allowDraft * * @return object|\Organizations\Entity\Organization * @throws UnauthorizedAccessException * @throws \Doctrine\ODM\MongoDB\LockException * @throws NotFoundException */ public function process(Params $params, $allowDraft = true) { $repositories = $this->repositoryService; /* @var \Organizations\Repository\Organization $organizationRepository */ $organizationRepository = $this->repositoryService->get('Organizations/Organization'); $idFromRoute = $params('id', 0); $idFromSubForm = $params()->fromPost('id', 0); $user = $this->auth->getUser(); /* @var $user \Auth\Entity\UserInterface */ /* @var $organizationId string */ $organizationId = empty($idFromRoute) ? $idFromSubForm : $idFromRoute; $editOwnOrganization = '__my__' === $organizationId; if ($editOwnOrganization) { /* @var $userOrg \Organizations\Entity\OrganizationReference */ $userOrg = $user->getOrganization(); if ($userOrg->hasAssociation() && !$userOrg->isOwner()) { throw new UnauthorizedAccessException('You may not edit this organization as you are only employer.'); } $organizationId = $userOrg->hasAssociation() ? $userOrg->getId() : 0; } if (empty($organizationId) && $allowDraft) { /* @var $organization \Organizations\Entity\Organization */ $organization = $organizationRepository->findDraft($user); if (empty($organization)) { $organization = $organizationRepository->create(); $organization->setIsDraft(true); $organization->setUser($user); if (!$editOwnOrganization) { /* @var $parent \Organizations\Entity\OrganizationReference */ $parent = $user->getOrganization(); if (!$parent->hasAssociation()) { throw new MissingParentOrganizationException('You cannot create organizations, because you do not belong to a parent organization. Use "User menu -> create my organization" first.'); } $organization->setParent($parent->getOrganization()); } $repositories->store($organization); } return $organization; } $organization = $organizationRepository->find($organizationId); if (!$organization) { throw new NotFoundException($organizationId); } $this->acl->check($organization, 'edit'); return $organization; }
/** * Job opening is completed. * * @return array */ public function completionAction() { $serviceLocator = $this->getServiceLocator(); $job = $this->initializeJob()->get($this->params()); $job->setIsDraft(false); $reference = $job->getReference(); if (empty($reference)) { /* @var $repository \Jobs\Repository\Job */ $repository = $this->repositoryService->get('Jobs/Job'); $job->setReference($repository->getUniqueReference()); } $job->changeStatus(Status::CREATED, "job was created"); $job->setAtsEnabled(true); // sets ATS-Mode on intern $job->getAtsMode(); /* * make the job opening persist and fire the EVENT_JOB_CREATED */ $this->repositoryService->store($job); $jobEvents = $serviceLocator->get('Jobs/Events'); $jobEvents->trigger(JobEvent::EVENT_JOB_CREATED, $this, array('job' => $job)); return array('job' => $job); }
/** * @dataProvider getTestGetData */ public function testGet($entity, $expected) { $this->dm->expects($this->once())->method('getRepository')->with($expected); $this->rs->get($entity); }
public function __construct(RepositoryService $repositoryService, AuthenticationService $authenticationService) { $this->repositoryService = $repositoryService; $this->authenticationService = $authenticationService; $this->userRepository = $repositoryService->get('Auth/User'); }