<?php

namespace OfficeBrain\CustomBundle\CmsBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

/**
 * @author OfficeBrain 5069 <info@officebrain.com>
 *
 * Description : CMS Admin controller class
 *
 * @Route("/admin/{_locale}/cms/invoicerequest")
 **/
class InvoiceRequestAdminController extends Controller
{
	private $request;
	
	private $session;
	
	private $translator;
	
	private $projectSetting;
	
	private $recordsPerPage;
	
	private $cmsUploadArtworkCenterManager;
	
	private $responseArray;
	
	public function __destruct()
	{
		unset($this->request);
		unset($this->session);
		unset($this->translator);
		unset($this->projectSetting);
		unset($this->cmsUploadArtworkCenterManager);
		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->cmsInvoiceRequest = $this->get('office_brain_cms_invoice_request_manager_custom');
		$this->responseArray = array();
	}
	/**
	 * @author Employee Id: 5069
	 * Description : Get the list of all invoice using ajax.
	 *
	 * @Route("/list/{instance_id}/{page}", name="office_brain_cmsbundle_invocerequestadmin_pagelist",
	 * options={"expose"=true},
	 * requirements={"instance_id"="\d+", "page"="\d+"},
	 * defaults={"instance_id"="0", "page"=1})
	 *
	 * @Method("GET")
	 * @Template("OfficeBrainCustomBundleCmsBundle:InvoiceRequestAdmin:invoiceRequestList.html.twig")
	 *
	 * @return array
	 */
	public function invoiceRequestListAction()
	{
		$this->initAction();
	
		$this->responseArray = $this->cmsInvoiceRequest->getCmsInvoiceRequestList();
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5069
	 * Description : Get the list of all invoice using ajax.
	 *
	 * @Route("/list-ajax/{page}", name="office_brain_cmsbundle_invoicerequestadmin_pagelistajax",
	 * options={"expose"=true},
	 * requirements={ "page"="\d+"},
	 * defaults={ "page"=1})
	 *
	 * @Method("POST")
	 * @Template("OfficeBrainCustomBundleCmsBundle:InvoiceRequestAdmin:invoiceRequestListAjax.html.twig")
	 *
	 * @return array
	 */
	public function invoiceRequestListAjaxAction()
	{
		$this->initAction();
	
		$this->responseArray = $this->cmsInvoiceRequest->getCmsInvoiceRequestList();
	
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5069
	 *
	 * Description : Ajax base cms invoice  search
	 *
	 * @Route("/search/{page}", name="office_brain_cmsbundle_invoicerequestadmin_invoicerequestsearch",
	 * requirements={"page"="\d+"},
	 * options={"expose"=true},
	 * defaults={"page"=1})
	 *
	 * @Method("POST")
	 * @Template("OfficeBrainCustomBundleCmsBundle:InvoiceRequestAdmin:invoiceRequestListAjax.html.twig")
	 */
	public function cmsUploadArtworkCenterSearchAction()
	{
		$this->initAction();
	
		$this->responseArray = $this->cmsInvoiceRequest->searchCmsInvoiceRequestList();
	
		return $this->responseArray;
	}
	
	/**
	 * @author Employee Id: 5069
	 *
	 * Description : Soft delete invoice from database
	 *
	 * 
	 *
	 * @return type : Redirect to list page
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/delete-invoice-request/{id}", name="office_brain_cmsbundle_invoicerequestadmin_invoicedelete",options={"expose"=true})
	 *
	 * @Method("GET")
	 */
	public function deleteInvoiceRequestAction($id)
	{
		$this->initAction();
	
		$this->cmsInvoiceRequest->deleteInvoiceRequestId($id);
	
		return $this->redirect($this->generateUrl('office_brain_cmsbundle_invocerequestadmin_pagelist'));
	}
	
	/**
	 * @author Employee Id: 5069
	 *
	 *
	 *
	 * @throws Exception: Null
	 *
	 * @Route("/invoice-request-detail/{id}",
	 * name="office_brain_cmsbundle_invoicerequestadmin_invoicerequestdetail",
	 * options={"expose"=true}
	 * )
	 * @Template()
	 *
	 */
	public function invoiceRequestDetailsAction($id)
	{
		$this->initAction();
	
		$this->responseArray = $this->cmsInvoiceRequest->getCmsInvoiceRequestDetail($id);
	
		return $this->responseArray;
	}
	
}
