| Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/UserBundle/Controller/UserGroupController.php |
<?php
namespace App\UserBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use App\UserBundle\Form\Type\UserGroupType;
use App\UserBundle\Entity\UserGroup;
class UserGroupController extends AbstractController {
/**
* @IsGranted({"ROLE_USER"})
*/
public function listAction(Request $request, $cultureString) {
$companyManager = $this->container->get('companies.manager');
$languagePhrasesManager = $this->container->get('language_phrases.manager');
$companyId = $request->get('companyId');
$userList = $this->getUser();
// if (!is_object($userList)) {
// throw new \Exception($languagePhrasesManager->translate('You do not have access to this page'), '4003');
// }
if (strlen($companyId) <= 0) {
$companyId = $userList->getCompanyId();
}
$company = $companyManager->find($companyId);
if ((!is_object($company) || !$company->hasAgent($userList) || !$userList->getGranted('ROLE_COMPANY_ADMINISTRATOR')) &&
!$userList->getGranted('ROLE_SUPER_ADMINISTRATOR')) {
throw new \Exception($languagePhrasesManager->translate('You do not have access to this company'), '4003');
}
$deleteUserGroupId = $request->get('deleteUserGroupId');
if (strlen($deleteUserGroupId) > 0) {
$this->container->get('user_group.manager')->removeById($deleteUserGroupId);
$this->get('session')->getFlashBag()->add('success', $languagePhrasesManager->translate('Group deleted'));
}
$userTypeId = $request->get('userTypeId', '-');
if ($userTypeId == '-') {
$userTypeId = $this->container->get('system_setting.manager')->getSetting('crm_user_type');
}
$userListQuery = $this->container->get('user_group.manager')->getSiteListQuery(array('user_list' => $userList, 'search_text' => $request->get('search_text')));
$userLanguage = $this->container->get('languages.manager')->getUserLanguage($cultureString);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($userListQuery, $request->get('page', 1), 10, array('distinct' => false));
return $this->render(
'UserBundle:UserGroup:list.html.twig', array(
'userLanguage' => $userLanguage,
'pagination' => $pagination,
'companyId' => $companyId,
'userTypeId' => $userTypeId,
)
);
}
/**
* @IsGranted({"ROLE_USER"})
*/
public function editAction(Request $request, $cultureString) {
$languagePhrasesManager = $this->container->get('language_phrases.manager');
$userGroupManager = $this->container->get('user_group.manager');
$companyManager = $this->container->get('companies.manager');
$userLanguage = $this->container->get('languages.manager')->getUserLanguage($cultureString);
$companyId = $request->get('companyId');
$userGroupId = $request->get('userGroupId');
$userList = $this->getUser();
// if (!is_object($userList)) {
// throw new \Exception($languagePhrasesManager->translate('You do not have access to this page'), '4003');
// }
if (strlen($companyId) <= 0) {
$companyId = $userList->getCompanyId();
}
$company = $companyManager->find($companyId);
$userGroup = $userGroupManager->find($userGroupId);
if ((!is_object($company) || !$company->hasAgent($userList) || !$userList->getGranted('ROLE_COMPANY_ADMINISTRATOR')) &&
!$userList->getGranted('ROLE_SUPER_ADMINISTRATOR')) {
throw new \Exception($languagePhrasesManager->translate('You do not have access to this company'), '4003');
}
if (is_object($userGroup)) {
$titleString = ucwords(strtolower($languagePhrasesManager->translate('Edit Group') . ' - ' . $userGroup->getGroupName()));
$userGroupId = $userGroup->getId();
$formRoute = 'iga_user_group_edit';
} else {
$titleString = ucwords(strtolower($languagePhrasesManager->translate('Add Group')));
$userGroupId = '0';
$formRoute = 'iga_user_group_edit';
$userGroup = new UserGroup();
}
$userTypeId = $request->get('userTypeId', '-');
if ($userTypeId == '-') {
$userTypeId = $this->container->get('system_setting.manager')->getSetting('crm_user_type');
}
$pageTitleString = $titleString;
$descriptionString = $languagePhrasesManager->translate('Edit Group Details');
$keyWordString = $languagePhrasesManager->translate('manage group');
$userGroupForm = $this->createForm(UserGroupType::class, $userGroup);
if ($request->getMethod() == 'POST') {
$userGroupForm->handleRequest($request);
if ($userGroupForm->isValid()) {
$userGroup = $userGroupForm->getData();
if (is_null($userGroup->getCreatedBy())) {
$userGroup->setCreatedBy($userList->getId());
}
$userGroupManager->save($userGroup);
$ownerGroupId = $this->container->get('system_setting.manager')->getSetting('establishment_owner_group_id');
if ($ownerGroupId == $userGroup->getId()) {
$command = "\$this->container->get('user_group.manager')->linkEstablishmentOwnerIds('" . $userList->getId() . "'); ";
$this->container->get('batch_job.manager')->save($command, true, true, 50);
}
$this->get('session')->getFlashBag()->add('success', $languagePhrasesManager->translate('Group details saved'));
return $this->redirect($this->generateUrl('iga_user_group_list', array('cultureString' => $userLanguage->getCultureString())));
}
}
$userListQuery = $this->container->get('user_list.manager')->getAllQuery(array('group_ids' => array($userGroup->getId()), 'refer' => false));
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($userListQuery, $request->get('page', 1), 10, array('distinct' => false));
return $this->render(
'UserBundle:UserGroup:edit.html.twig', array(
'titleString' => $titleString,
'pageTitleString' => $pageTitleString,
'descriptionString' => $descriptionString,
'keyWordString' => $keyWordString,
'userLanguage' => $userLanguage,
'company' => $company,
'userGroup' => $userGroup,
'companyId' => $companyId,
'userGroupId' => $userGroupId,
'formRoute' => $formRoute,
'form' => $userGroupForm->createView(),
'pagination' => $pagination,
'owner' => $userList,
'userTypeId' => $this->container->get('system_setting.manager')->getSetting('crm_user_type'),
'feUserTypeId' => $this->container->get('system_setting.manager')->getSetting('fe_user_type'),
'userTypeId' => $userTypeId,
)
);
}
}