| Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/UserBundle/Controller/UserFieldController.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\Entity\UserField;
use App\UserBundle\Form\Type\UserFieldType;
class UserFieldController extends AbstractController {
/**
* @IsGranted({"ROLE_USER"})
*/
public function listAction(Request $request, $cultureString) {
try {
$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 == '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');
}
$deleteUserFieldId = $request->get('deleteUserFieldId');
if (strlen($deleteUserFieldId) > 0) {
$this->container->get('user_field.manager')->removeById($deleteUserFieldId);
$this->get('session')->getFlashBag()->add('success', $languagePhrasesManager->translate('Field deleted'));
}
$userListQuery = $this->container->get('user_field.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/UserField/list.html.twig', array(
'userLanguage' => $userLanguage,
'pagination' => $pagination,
'companyId' => $companyId,
)
);
} catch (\Exception $ex) {
if ($ex->getCode() != 403) {
$logger = $this->get('error_log.manager');
$logger->error('Error on user field list: ' . $ex->getMessage());
if ($ex->getCode() != 4003)
return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
else
return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
} else {
throw new AccessDeniedException();
}
}
}
/**
* @IsGranted({"ROLE_USER"})
*/
public function editAction(Request $request, $cultureString) {
try {
$languagePhrasesManager = $this->container->get('language_phrases.manager');
$userFieldManager = $this->container->get('user_field.manager');
$companyManager = $this->container->get('companies.manager');
$userLanguage = $this->container->get('languages.manager')->getUserLanguage($cultureString);
$companyId = $request->get('companyId');
$userFieldId = $request->get('userFieldId');
$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 == '0') {
$companyId = $userList->getCompanyId();
}
$company = $companyManager->find($companyId);
$userField = $userFieldManager->find($userFieldId);
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($userField)) {
$titleString = ucwords(strtolower($languagePhrasesManager->translate('Edit Field') . ' - ' . $userField->getFieldName()));
$userFieldId = $userField->getId();
$formRoute = 'iga_user_field_edit';
} else {
$titleString = ucwords(strtolower($languagePhrasesManager->translate('Add Field')));
$userFieldId = '0';
$formRoute = 'iga_user_field_edit';
$userField = new UserField();
}
$pageTitleString = $titleString;
$descriptionString = $languagePhrasesManager->translate('Edit Field Details');
$keyWordString = $languagePhrasesManager->translate('manage field');
$userFieldForm = $this->createForm(UserFieldType::class, $userField);
if ($request->getMethod() == 'POST') {
$userFieldForm->handleRequest($request);
if ($userFieldForm->isValid()) {
$userField = $userFieldForm->getData();
if (is_null($userField->getCreatedBy())) {
$userField->setCreatedBy($userList->getId());
}
$userFieldManager->save($userField);
$this->get('session')->getFlashBag()->add('success', $languagePhrasesManager->translate('Field details saved'));
return $this->redirect($this->generateUrl('iga_user_field_list', array('cultureString' => $userLanguage->getCultureString())));
}
}
$userListQuery = $this->container->get('user_list.manager')->getAllQuery(array('field_ids' => array($userField->getId()), 'refer' => false));
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($userListQuery, $request->get('page', 1), 10, array('distinct' => false));
return $this->render(
'@UserBundle/UserField/edit.html.twig', array(
'titleString' => $titleString,
'pageTitleString' => $pageTitleString,
'descriptionString' => $descriptionString,
'keyWordString' => $keyWordString,
'userLanguage' => $userLanguage,
'company' => $company,
'userField' => $userField,
'companyId' => $companyId,
'userFieldId' => $userFieldId,
'formRoute' => $formRoute,
'form' => $userFieldForm->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'),
)
);
} catch (\Exception $ex) {
if ($ex->getCode() != 403) {
$logger = $this->get('error_log.manager');
$logger->error('Error on user field edit: ' . $ex->getMessage());
if ($ex->getCode() != 4003)
return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
else
return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
} else {
throw new AccessDeniedException();
}
}
}
}