<?php

namespace OfficeBrain\Bundle\AccessManagementBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;

/**
 * @author OfficeBrain 4116 <info@officebrain.com>
 *
 * Description : This controller will manage user level Access.
 *
 **/
class AccessManagementController extends Controller
{
    public $request;
    
    public function initAction()
    {
        $this->request = $this->getRequest();
        $this->project_setting =$this->getRequest()->get('project_setting');
        $this->project_user_setting =$this->getRequest()->get('project_user_setting');
        $this->currentLoginUser=$this->project_user_setting['user_data'];
        $this->translator = $this->get('translator');
    }
    
    public function __destruct()
    {
        unset($this->request);
        unset($this->project_setting);
        unset($this->project_user_setting);
        unset($this->currentLoginUser);
    }
    
    
    /**
     * @Route("admin/{_locale}/access/set-user-access/{userid}", name="office_brain_accessmanagementbundle_accessmanagement_set_user_access",defaults={"userid":"0"})
     * @Template("OfficeBrainAccessManagementBundle:Admin:setUserAccess.html.twig")
     */
    public function setUserAccessAction()
    {
        $this->initAction();
        $data=array();
        $objSiteUserAccessManager=$this->get('office_brain_access_management_site_user_access_manager');
        $status=null;
        if (!empty($_POST)) {
            $status=$objSiteUserAccessManager->saveAccessData($this->request);
            if ($status) {
                $success_msg = $this->translator->trans('siteaccess.user_success');
                $this->get('session')->getFlashBag()->set('success_message', $success_msg);
            }
        }
        $data=$objSiteUserAccessManager->createForm($status);
        $data['user_id']=$this->request->get('userid');
        return $data;
    }

    /**
     * @Route("admin/{_locale}/access/set-site-access", name="office_brain_accessmanagementbundle_accessmanagement_set_site_access")
     * @Template("OfficeBrainAccessManagementBundle:Admin:setSiteAccess.html.twig")
     */
    public function setSiteAccessAction()
    {
        $this->initAction();
        $objSiteAccessManager=$this->get('office_brain_access_management_site_access_manager');
        $data=array();
        $data['post_access']=array();
        if (!$objSiteAccessManager->isMainSiteAccessExists() || empty($this->currentLoginUser->getParent())) {
            $status=null;
            if (!empty($_POST)) {
                $status=$objSiteAccessManager->saveAccessData($this->request);
                if ($status) {
                    $success_msg = $this->translator->trans('siteaccess.success');
                    $this->get('session')->getFlashBag()->set('success_message', $success_msg);
                }
            }
            $data=$objSiteAccessManager->createForm($status);
            $data['is_site_access_available'] = false;
        } else {
            $data['is_site_access_available'] = true;
        }
        return $data;
    }

    /**
     * @Route("admin/{_locale}/access/set-sub-site-access/{siteid}", name="office_brain_accessmanagementbundle_accessmanagement_set_sub_site_access",defaults={"siteid":"0"})
     * @Template("OfficeBrainAccessManagementBundle:Admin:setSiteAccess.html.twig")
     */
    public function setSubSiteAccessAction()
    {
        $this->initAction();
        $objSubSiteAccessManager=$this->get('office_brain_access_management_sub_site_access_manager');
        $status=null;
        if ($objSubSiteAccessManager->isMainSiteAccessExists()) {
            if (!empty($_POST)) {
                $status=$objSubSiteAccessManager->saveAccessData($this->request);
                if ($status) {
                    $success_msg = $this->translator->trans('siteaccess.success');
                    $this->get('session')->getFlashBag()->set('success_message', $success_msg);
                }
            }
        }
        $data=$objSubSiteAccessManager->createForm($status);
        return $data;
    }
}
