Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 /**
  * 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);
 }
Ejemplo n.º 4
0
 /**
  * @dataProvider getTestGetData
  */
 public function testGet($entity, $expected)
 {
     $this->dm->expects($this->once())->method('getRepository')->with($expected);
     $this->rs->get($entity);
 }
Ejemplo n.º 5
0
 public function __construct(RepositoryService $repositoryService, AuthenticationService $authenticationService)
 {
     $this->repositoryService = $repositoryService;
     $this->authenticationService = $authenticationService;
     $this->userRepository = $repositoryService->get('Auth/User');
 }