Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Controller/
Upload File :
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();
            }
        }
    }

}