<?php

namespace OfficeBrain\CustomBundle\CmsBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use OfficeBrain\CustomBundle\CmsBundle\Form\CmsFlashMessageMasterType;

/**
 * @author OfficeBrain 5051 <info@officebrain.com>
 *
 * Description : CMS Admin controller class
 *
 * @Route("/admin/{_locale}/cms/flash")
 **/

class CmsFlashMessageAdminController extends Controller
{
	private $request;
	private $session;
	private $translator;
	private $projectSetting;
	private $recordsPerPage;
	private $cmsFlashMessageManager;
	private $responseArray;
	
	public function __destruct()
	{
		unset($this->request);
		unset($this->session);
		unset($this->translator);
		unset($this->projectSetting);
		unset($this->cmsFlashMessageManager);
		unset($this->responseArray);
	}
	
	public function initAction()
	{
		$this->request = $this->getRequest();
		$this->session = $this->request->getSession();
		$this->translator = $this->get('translator');
		$this->projectSetting = $this->request->get('project_setting');
		$this->cmsFlashMessageManager = $this->get('office_brain_custom_cms_flash_message_manager');
		$this->responseArray = array();
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Get the list of Flash messages
	 *
	 * @Route("/list/{instance_id}/{page}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist",
	 * options={"expose"=true},
	 * requirements={"instance_id"="\d+", "page"="\d+"},
	 * defaults={"instance_id"="0", "page"=1})
	 *
	 * @Method("GET")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:flashMessageList.html.twig")
	 *
	 * @return array
	 */
	public function flashMessageListAction()
	{
		$this->initAction();
		$this->responseArray = $this->cmsFlashMessageManager->getCmsFlashMessageList();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Get the list pages.
	 *
	 * @Route("/list-ajax/{page}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelistajax",
	 * options={"expose"=true},
	 * requirements={ "page"="\d+"},
	 * defaults={ "page"=1})
	 *
	 * @Method("POST")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:flashMessageListAjax.html.twig")
	 *
	 * @return array
	 */
	public function flashMessageListAjaxAction()
	{
		$this->initAction();
		$this->responseArray = $this->cmsFlashMessageManager->getCmsFlashMessageList();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Display Flash Message form.
	 *
	 * @param 1 : No paramater
	 *
	 * @return type : Form view.
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/add/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessageadd",
	 * defaults={"instance_id"="0"},
	 * requirements={"instance_id"="\d+"},
	 * options={"expose"=true})
	 * @Method("GET")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:addFlashMessage.html.twig")
	 */
	
	public function flashMessageAddAction()
	{
		$this->initAction();
		$this->responseArray['form'] = $this->createForm(new CmsFlashMessageMasterType($this->container), $this->cmsFlashMessageManager->getCmsFlashMessageMasterWithLanguage())->createView();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 4136
	 * Description : Save page content
	 *
	 * @param 1 : No paramater
	 *
	 * @return type : Form view.
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/add/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_processflashmessageadd",
	 * defaults={"instance_id"="0"},
	 * requirements={"instance_id"="\d+"},
	 * options={"expose"=true})
	 *
	 * @Method({"POST"})
	 *
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:addFlashMessage.html.twig")
	 */
	public function processFlashMessageAddAction()
	{
		$this->initAction();
		$form = $this->createForm(new CmsFlashMessageMasterType($this->container), $this->cmsFlashMessageManager->getCmsFlashMessageMasterWithLanguage());
		$form->handleRequest($this->request);
		$form = $this->cmsFlashMessageManager->filterFormData($form, $this->translator);
		if ($form->isValid()) {
			$resultArray = $this->cmsFlashMessageManager->setCmsFlashMessage($form->getData());
			$this->session->getFlashBag()->set('success_message', $this->translator->trans('cms.admin.action.flash_message.cms_page_add_success'));
			if ($this->request->isXmlHttpRequest()) {
				return new JsonResponse(array('success' => 'success', 'page_url' => 'office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist'));
			} else {
				return $this->redirect($this->generateUrl('office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist'));
			}
		}
		$this->responseArray['form'] = $form->createView();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5051
	 *
	 * Description : Ajax base cms flash message change status
	 *
	 * @Route("/change-status/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_cmsflash_change_status",
	 * requirements={"instance_id"="\d+"},
	 * options={"expose"=true},
	 * defaults={"instance_id"="0"})
	 *
	 * @Method("POST")
	 * @Template()
	 */
	public function cmsFlashMessageChangeStatusAction()
	{
		$this->initAction();
		$id = $this->request->get('id');		 
		if ($id) {
			$status = $this->cmsFlashMessageManager->changeStatus($id);
			if ($status) {
				return new JsonResponse(array('status' => 'success', 'status_message' => $this->translator->trans('cms.admin.list.flash_message.list.status_message_success')));
			}
		}
		return new JsonResponse(array('status' => 'fail', 'status_message' => $this->translator->trans('cms.admin.list.flash_message.list.status_message_fail')));
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Display page form.
	 *
	 * @param 1 : No paramater
	 *
	 * @return type : Form view.
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/edit/{id}/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessageedit",
	 * defaults={"instance_id"="0"},
	 * requirements={"id"="\d+", "instance_id"="\d+"},
	 * options={"expose"=true})
	 * @Method("GET")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:editFlashMessage.html.twig")
	 */
	public function cmsFlashMessageEditAction()
	{
		$this->initAction();
		$this->responseArray['form'] = $this->createForm(new CmsFlashMessageMasterType($this->container), $this->cmsFlashMessageManager->getCmsFlashMessageById())->createView();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Display page form.
	 *
	 * @param 1 : No paramater
	 *
	 * @return type : Form view.
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/edit/{id}/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_processflashmessageedit",
	 * defaults={"instance_id"="0"},
	 * requirements={"id"="\d+", "instance_id"="\d+"},
	 * options={"expose"=true})
	 * @Method("POST")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:editFlashMessage.html.twig")
	 */
	public function processFlashMessageEditAction()
	{
		$this->initAction();
		$form = $this->createForm(new CmsFlashMessageMasterType($this->container), $this->cmsFlashMessageManager->getCmsFlashMessageById());
		$form->handleRequest($this->request);
		if ($form->isValid()) {
			$pageObj = $this->cmsFlashMessageManager->updateFlashMessage($form->getData());
			$this->session->getFlashBag()->set('success_message', $this->translator->trans('cms.admin.action.flash_message.cms_page_update_success'));
			///var_dump($this->request->isXmlHttpRequest());die;
			if ($this->request->isXmlHttpRequest()) {
				return new JsonResponse(array('success' => 'success', 'page_url' => 'office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist'));
			}
			else {
// 				if ($this->request->get('iframe')) {
// 					return $this->redirect($this->generateUrl('office_brain_cmsbundle_cmspageadmin_pageeditbyslug', array('slug' => $pageObj->getSlug(), 'instance_id' => $this->request->get('instance_id'), 'iframe' => $this->request->get('iframe'))));
// 				}
				return $this->redirect($this->generateUrl('office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist'));
			}
		}
		$this->responseArray['form'] = $form->createView();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5051
	 * Description : Delete page.
	 *
	 * @Route("/delete/{id}/{instance_id}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_cmsflashmessagedelete",
	 * defaults={"instance_id"="0"},
	 * requirements={"id"="\d+", "instance_id"="\d+"},
	 * options={"expose"=true})
	 * @Method("GET")
	 */
	public function cmsFlashMessageDeleteAction()
	{
		$this->initAction();
		$response = $this->cmsFlashMessageManager->deleteCmsFlashMessage();
		if ($response) {
			$this->session->getFlashBag()->add('success_message', $this->translator->trans('cms.admin.action.flash_message.cms_page_delete_success'));
		} else {
			$this->get('session')->getFlashBag()->add('error_message', $this->translator->trans('cms.admin.action.flash_message.cms_page_delete_error'));
		}
		if ($this->request->isXmlHttpRequest()) {
			return new JsonResponse(array('success' => 'success', 'page_url' => $this->generateUrl('office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist', array())));
		} else {
			return $this->redirect($this->generateUrl('office_brain_custombundle_cmsbundle_cmsflashadmin_flashmessagelist'));
		}
	}
	
	/**
	 * @author Employee Id: 5051
	 *
	 * Description : Ajax base cms Flash Message search
	 *
	 * @Route("/search/{page}", name="office_brain_custombundle_cmsbundle_cmsflashadmin_cmsflashmessagesearch",
	 * requirements={"page"="\d+"},
	 * options={"expose"=true},
	 * defaults={"page"=1})
	 *
	 * @Method("POST")
	 * @Template("OfficeBrainCustomBundleCmsBundle:CmsFlashMessageAdmin:flashMessageListAjax.html.twig")
	 */
	public function cmsPageSearchAction()
	{
		$this->initAction();
		$this->responseArray = $this->cmsFlashMessageManager->searchCmsFlashMessage();
		return $this->responseArray;
	}
	
	
}