/**
  * @param FormBuilderInterface $builder
  * @param array $options
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('users', EntityType::class, array('class' => 'GP\\CoreBundle\\Entity\\User', 'choices_as_values' => true, 'query_builder' => function (EntityRepository $er) {
         return $er->createQueryBuilder('u')->leftJoin('u.companies', 'companies')->andWhere('u.enabled = 1')->orderBy('u.lastLogin', 'DESC');
     }, 'choice_label' => function (User $user) {
         return $user->getFirstName() . ' ' . $user->getLastName();
     }, 'empty_value' => 'Choissez un utilisateur'))->add('companyRoles', EntityType::class, array('class' => 'GP\\CoreBundle\\Entity\\AccessRole', 'choices_as_values' => true, 'query_builder' => function (EntityRepository $er) {
         return $er->createQueryBuilder('ar')->where('ar.type = :company_type')->join('ar.company', 'c')->andWhere('c = :company')->setParameter('company_type', AccessRole::TYPE_COMPANY)->setParameter('company', $this->company->getId());
     }, 'choice_label' => function (AccessRole $accessRole) {
         return $accessRole->getName();
     }, 'empty_value' => 'Choissez un role à affecter'));
 }
 /**
  * Test that admin can delete a given company
  *
  * @depends testUpdateCompany
  *
  * @param Company $company
  */
 public function testSuccessDeleteCompany(Company $company)
 {
     $client = $this->connectUser(self::USER_ADMIN, self::USER_PASSWORD);
     $originalCompanyNb = $this->getTotalCompany();
     $url = $this->generateRoute('admin_delete_company', array('id' => $company->getId()));
     $client->request('DELETE', $url);
     $this->assertRedirectTo($client, 'admin_show_all_company', array(), 'admin should be redirect to company dashboard when successfully delete a company');
     $crawler = $client->followRedirect();
     $this->assertStatusCode(200, $client);
     $newCompanyNb = $this->getTotalCompany();
     $this->assertEquals($originalCompanyNb - 1, $newCompanyNb, 'It should delete the given Company in db when admin delete company');
     $this->assertFlashMessageContains($crawler, "L'entreprise " . $company->getName() . " a été correctement supprimée");
 }
Example #3
0
 /**
  * Remove company
  *
  * @param Company $company
  *
  * @return User
  */
 public function removeCompany(Company $company)
 {
     $this->companies->removeElement($company);
     return $this;
 }
 /**
  * Test errors on create new project form
  *
  * @depends testCreateProjectAction
  * @dataProvider createProjectProvider
  *
  * @param $formSelect
  * @param $formInputData
  * @param $errors
  */
 public function testFailCreateProjectAction($formSelect, $formInputData, $errors)
 {
     $client = $this->connectUser(self::USER_ADMIN, self::USER_PASSWORD);
     $url = $this->generateRoute('admin_create_project');
     $crawler = $client->request('GET', $url);
     $this->assertStatusCode(200, $client);
     $company = $this->getCompanyByName($formSelect['companyName']);
     $projectCategory = $this->getProjectCategoryByName($formSelect['projectCategoryName']);
     if (!$company) {
         $company = new Company();
     }
     if (!$projectCategory) {
         $projectCategory = new ProjectCategory();
     }
     $form = $crawler->selectButton('_submit')->form();
     $form["create_project[companies]"]->select($company->getId());
     $form["create_project[projectCategory]"]->select($projectCategory->getId());
     $crawler = $client->submit($form, $formInputData);
     $this->assertStatusCode(200, $client);
     foreach ($errors as $error) {
         $this->assertHtmlContains($crawler, $error);
     }
 }
 /**
  * Check if user is really a member of the company
  * before removing him from it
  *
  * @param User $user
  * @param Company $company
  * @return bool
  */
 private function checkUserExistInCompany(User $user, Company $company)
 {
     $userCompanies = $user->getCompany();
     $check = false;
     foreach ($userCompanies as $userCompany) {
         if ($userCompany->getId() == $company->getId()) {
             return $check = true;
         }
     }
     return $check;
 }
 public function findUserRoleInCompany(Company $company, User $user)
 {
     $result = $this->createQueryBuilder('ar')->where('ar.type = :company_type')->join('ar.company', 'c')->andWhere('c = :company')->join('ar.users', 'u')->andWhere('u = :users')->setParameter('company_type', AccessRole::TYPE_COMPANY)->setParameter('company', $company->getId())->setParameter('users', $user->getId())->getQuery()->getResult();
     return $result;
 }
 /**
  * Return number of project in progress for the given company
  *
  * status 20 = accepted
  * status 30 = started
  * status 40 = in progress
  *
  * @param Company $company
  * @return integer
  */
 public function countProjectsInProgress(Company $company)
 {
     $result = $this->createQueryBuilder('project')->select('COUNT(project)')->join('project.companies', 'companies')->where('companies = :company')->andWhere('project.status = ' . Project::STATUS_PROJECT_ACCEPTED . ' OR project.status = ' . Project::STATUS_PROJECT_STARTED . ' OR project.status = ' . Project::STATUS_PROJECT_IN_PROGRESS)->setParameter('company', $company->getId())->getQuery()->getSingleScalarResult();
     return $result;
 }