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/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,
                        )
        );
    }

}