<?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\Bundle\CmsBundle\Form\CmsPageMasterType;
use Symfony\Component\HttpFoundation\Response;

/**
 * @author OfficeBrain 4494 <info@officebrain.com>
 *
 * Description : CMS Admin controller class
 *
 * @Route("/admin/{_locale}/cms/uploadartworkcenter")
 **/
class UploadArtworkCenterAdminController 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->cmsUploadArtworkCenterManager = $this->get('office_brain_cms_upload_artwork_center_manager_custom');
        $this->responseArray = array();
    }

    /**
     * @author Employee Id: 5460
     * Description : Get the list of all upload artwork centers using ajax.
     *
     * @Route("/list/{instance_id}/{page}", name="office_brain_cmsbundle_uploadartworkcenteradmin_pagelist",
     * options={"expose"=true},
     * requirements={"instance_id"="\d+", "page"="\d+"},
     * defaults={"instance_id"="0", "page"=1})
     *
     * @Method("GET")
     * @Template("OfficeBrainCustomBundleCmsBundle:UploadArtworkCenterAdmin:uploadArtworkCenterList.html.twig")
     *
     * @return array
     */
    public function uploadArtworkCenterListAction()
    {
        $this->initAction();

        $this->responseArray = $this->cmsUploadArtworkCenterManager->getCmsUploadArtworkCenterList();

        return $this->responseArray;
    }

    /**
     * @author Employee Id: 5460
     * Description : Get the list of all upload artwork centers using ajax.
     *
     * @Route("/list-ajax/{page}", name="office_brain_cmsbundle_uploadartworkcenteradmin_pagelistajax",
     * options={"expose"=true},
     * requirements={ "page"="\d+"},
     * defaults={ "page"=1})
     *
     * @Method("POST")
     * @Template("OfficeBrainCustomBundleCmsBundle:UploadArtworkCenterAdmin:uploadArtworkCenterListAjax.html.twig")
     *
     * @return array
     */
    public function uploadArtworkCenterListAjaxAction()
    {
        $this->initAction();
        
        $this->responseArray = $this->cmsUploadArtworkCenterManager->getCmsUploadArtworkCenterList();

        return $this->responseArray;
    }
    


    /**
     * @author Employee Id: 5460
     *
     * Description : Ajax base cms upload artwork center search
     *
     * @Route("/search/{page}", name="office_brain_cmsbundle_uploadartworkcenteradmin_uploadartworkcentersearch",
     * requirements={"page"="\d+"},
     * options={"expose"=true},
     * defaults={"page"=1})
     *
     * @Method("POST")
     * @Template("OfficeBrainCustomBundleCmsBundle:UploadArtworkCenterAdmin:uploadArtworkCenterListAjax.html.twig")
     */
    public function cmsUploadArtworkCenterSearchAction()
    {
    	$this->initAction();
    
    	$this->responseArray = $this->cmsUploadArtworkCenterManager->searchCmsUploadArtworkCenter();
    
    	return $this->responseArray;
    }    


    /**
     * @author Employee Id: 5460
     * Description : Use to submit guest user info form.
     * @param 1 : No paramater
     * @return type : Form view and data.
     * @throws Exception: Null
     *
     * @Route("/upload-artwork-center-detail/{id}",
     * name="office_brain_cmsbundle_uploadartworkcenteradmin_uploadartworkcenterdetail",
     * options={"expose"=true}
     * )
     * @Template()
     *
     */
    public function uploadArtworkCenterDetailsAction($id)
    {
        $this->initAction();
        
        $this->responseArray = $this->cmsUploadArtworkCenterManager->getCmsUploadArtworkCenterDetail($id);

        return $this->responseArray;
    }    

    /**
     * @author Employee Id: 5460
     *
     * Desciption: download file of upload_artwork_center
     *
     * @param product_id.
     *
     * @return Response
     *
     * @Route("/upload-artwork-center-file/{id}",
     * 	name="office_brain_cmsbundle_uploadartworkcenteradmin_uploadartworkcenter_file",
     *  options={"expose"=true}
     * )
     */
    public function uploadArtworkCenterDownloadAction($id)
    {
        $this->initAction();
    	$responseFile = $this->cmsUploadArtworkCenterManager->getCmsUploadArtworkCenterFile($id);
    	
    	if($responseFile['artwork_files'] > 1)
    	{
    		return $this->redirect($responseFile['file_url']);
    	}
    	else
    	{    	
	        return new Response(
	        		$responseFile['file_content'],
	        		200,
	        		array(
	        				'Content-Type'        => $responseFile['mime_type'],
	        				'Content-Disposition' => 'attachment; filename="'.$responseFile['file_name'].'"'
	        		)
	        );    		
    	}
    }  
    

    /**
     * @author Employee Id: 5460
     * Description : This function will delete the uploaded artwork
     * @Route("/upload-artwork-center-delete",
     * name="office_brain_cmsbundle_uploadartworkcenteradmin_uploadartworkcenter_delete",
     * options={"expose"=true}
     * )
     */
    public function deleteAction(){
    	$this->initAction();
    	$uploadedArtworkId = $this->request->get('uploadedArtworkId');
    	$deleteResult = $this->cmsUploadArtworkCenterManager->delete($uploadedArtworkId);
        
    	return new JsonResponse($deleteResult);
    }
}
