<?php
namespace OfficeBrain\Bundle\RequestInfoBundle\Manager\Extended;

use OfficeBrain\Bundle\RequestInfoBundle\Manager\AbstractManager\RequestInfoAbstract;

class RequestInfoGuestExtended extends RequestInfoAbstract
{
    /**
	 * @author Employee Id: 4203
	 * OB eCommerce Product - Requestinfo
	 * Initialize the required variable on class load
	*/
	
	public function __construct($entityManager, $request, $twigManager, $sessionManager, $productDetailManager, $userDetailManager, $emailManager, $paginatorManager)
	{
		parent::__construct($entityManager, $request, $twigManager, $sessionManager, $productDetailManager, $userDetailManager, $emailManager, $paginatorManager);
	}
	
	public function __destruct()
	{
		parent::__destruct();
	}
	
	/**
	 * @author Employee Id: 4203
	 * OB eCommerce Product - Requestinfo
	 * To set the product in session 
	 * @param array object data
	 * return status in array
	 */
	public function setRequestInfo($data)
	{
	    $saveData=array();
		$config=$this->request->get('project_setting');
        $productId=$data->product_id;
        $productDetail=$this->getProductDetailById($productId, $config['culture_code']);
        $productDetail[$productId]['attribute']=array();
		$multiple=$config['configuration_rule']['transaction']['request_info']['multiple_product'];
		if ($multiple == 1) {
			$this->sessionManager->setProductToSession($productDetail[$productId],'request_info');
			return array('status'=>'ADD_SUCCESS_IN_SESSION');
			//$this->session->getProductFromSession('request_info');
		} else {
			$saveData['request_info']['guest_id']=0;
			$saveData['request_info']['user_id']=$config['user_id'];
            $saveData['request_info']['note']=$data->getNote();
            $saveData['request_info']['erp_id']=$data->getErpId();
            $saveData['request_info']['created_uid']=$config['user_id'];
			$saveData['request_info']['instance_type']=$config['instance_type'];
			$saveData['request_info']['instance_id']=$config['instance_id'];
			$saveData['request_info']['state']=$data->getState();
            $saveData['request_info']['culture']=$config['culture_code'];
			$saveData['request_info']['distributor']=$data->getDistributor();
			
			$saveData['product_info']['product_id']=(isset($productDetail[$productId]['product_id'])  && $productDetail[$productId]['product_id']!='') ? $productDetail[$productId]['product_id']: NULL;
			$saveData['product_info']['culture_product_id']=(isset($productDetail[$productId]['culture_product_id'])  && $productDetail[$productId]['culture_product_id']!='') ? $productDetail[$productId]['culture_product_id']: NULL;
			$saveData['product_info']['line_id']=(isset($productDetail[$productId]['brand']['id'])  && $productDetail[$productId]['brand']['id']!='') ? $productDetail[$productId]['brand']['id']: NULL;
			$saveData['product_info']['line_name']=(isset($productDetail[$productId]['brand']['name'])  && $productDetail[$productId]['brand']['name']!='') ? $productDetail[$productId]['brand']['name']: NULL;
			$saveData['product_info']['currency_id']=(isset($productDetail[$productId]['currency']['id'])  && $productDetail[$productId]['currency']['id']!='') ? $productDetail[$productId]['currency']['id']: NULL;
			$saveData['product_info']['currency_name']=(isset($productDetail[$productId]['currency']['name'])  && $productDetail[$productId]['currency']['name']!='') ? $productDetail[$productId]['currency']['name']: NULL;
			$saveData['product_info']['currency']=(isset($productDetail[$productId]['currency']['currency'])  && $productDetail[$productId]['currency']['currency']!='') ? $productDetail[$productId]['currency']['currency']: NULL;
			$saveData['product_info']['currency_symbol']=(isset($productDetail[$productId]['currency']['symbol'])  && $productDetail[$productId]['currency']['symbol']!='') ? $productDetail[$productId]['currency']['symbol']: NULL;
			$saveData['product_info']['product_slug']=(isset($productDetail[$productId]['basic_information']['slug'])  && $productDetail[$productId]['basic_information']['slug']!='') ? $productDetail[$productId]['basic_information']['slug']: NULL;
			$saveData['product_info']['product_name']=(isset($productDetail[$productId]['basic_information']['title'])  && $productDetail[$productId]['basic_information']['title']!='') ? $productDetail[$productId]['basic_information']['title']: NULL;
			$saveData['product_info']['product_sku']=(isset($productDetail[$productId]['basic_information']['sku_number'])  && $productDetail[$productId]['basic_information']['sku_number']!='') ? $productDetail[$productId]['basic_information']['sku_number']: NULL;
			$saveData['product_info']['product_description']=(isset($productDetail[$productId]['basic_information']['description'])  && $productDetail[$productId]['basic_information']['description']!='') ? $productDetail[$productId]['basic_information']['description']: NULL;
			$saveData['product_info']['product_thumb_image']='';
			$saveData['product_info']['product_image']=(isset($productDetail[$productId]['basic_information']['default_image_url'])  && $productDetail[$productId]['basic_information']['default_image_url']!='') ? $productDetail[$productId]['basic_information']['default_image_url']: NULL;
			$saveData['product_info']['product_supplier_id']=(isset($productDetail[$productId]['supplier']['supplier_id'])  && $productDetail[$productId]['supplier']['supplier_id']!='') ? $productDetail[$productId]['supplier']['supplier_id']: NULL;
			$saveData['product_info']['created_uid']=$config['user_id'];
			$saveData['product_info']['instance_type']=$config['instance_type'];
			$saveData['product_info']['instance_id']=$config['instance_id'];
			$saveData['product_info']['price_unit']=$productDetail[$productId]['price_unit'];

			$saveData['supplier_info']['supplier_id']=$productDetail[$productId]['supplier']['supplier_id'];
			$saveData['supplier_info']['supplier_name']=$productDetail[$productId]['supplier']['name'];
			$saveData['supplier_info']['code']=(isset($productDetail[$productId]['supplier']['code'])  && $productDetail[$productId]['supplier']['code']!='') ? $productDetail[$productId]['supplier']['code']: NULL;
			$saveData['supplier_info']['email_address']=(isset($productDetail[$productId]['supplier']['email_address'])  && $productDetail[$productId]['supplier']['email_address']!='') ? $productDetail[$productId]['supplier']['email_address']: NULL;
			$saveData['supplier_info']['website']=(isset($productDetail[$productId]['supplier']['website'])  && $productDetail[$productId]['supplier']['website']!='') ? $productDetail[$productId]['supplier']['website']: NULL;
			$saveData['supplier_info']['image']=(isset($productDetail[$productId]['supplier']['image'])  && $productDetail[$productId]['supplier']['image']!='') ? $productDetail[$productId]['supplier']['image']: NULL;
			$saveData['supplier_info']['fax']=(isset($productDetail[$productId]['supplier']['contact_information']['fax'])  && $productDetail[$productId]['supplier']['contact_information']['fax']!='') ? $productDetail[$productId]['supplier']['contact_information']['fax']: NULL;
			$saveData['supplier_info']['mobile']=(isset($productDetail[$productId]['supplier']['contact_information']['mobile'])  && $productDetail[$productId]['supplier']['contact_information']['mobile']!='') ? $productDetail[$productId]['supplier']['contact_information']['mobile']: NULL;
			$saveData['supplier_info']['telephone']=(isset($productDetail[$productId]['supplier']['contact_information']['telephone'])  && $productDetail[$productId]['supplier']['contact_information']['telephone']!='') ? $productDetail[$productId]['supplier']['contact_information']['telephone']: NULL;
				
			$saveData['product_pricing']['quantity']=(isset($productDetail[$productId]['pricing'])  && $productDetail[$productId]['pricing']['decorative']!='') ? $productDetail[$productId]['pricing']['decorative']: NULL;
			
			$saveData['product_pricing']['created_uid']=$config['user_id'];
			$saveData['product_pricing']['instance_type']=$config['instance_type'];
			$saveData['product_pricing']['instance_id']=$config['instance_id'];
			
			$saveData['product_attribute']['attribute']=(isset($productDetail[$productId]['attributes'])  && $productDetail[$productId]['attributes']!='') ? $productDetail[$productId]['attributes']: NULL;
			
			$saveData['product_attribute']['created_uid']=$config['user_id'];
			$saveData['product_attribute']['instance_type']=$config['instance_type'];
			$saveData['product_attribute']['instance_id']=$config['instance_id'];
			
			$this->sessionManager->setSessionParameter('request_info_single',$saveData);
			return array('status'=>'ADD_SUCCESS_SINGLE_GUEST');
		}
	}
	
	/**
	 * @author Employee Id: 4203
	 * OB eCommerce Product - Requestinfo
	 * To get form detail of guest user.
	 * @param array object data
	 * return status array
	 */
	public function setGuestInfo($data)
	{
		$guestInfo=array();
		$user=0;
		$config=$this->request->get('project_setting');
		if($this->sessionManager->has('request_info_single')){
			$guestInfo=$this->sessionManager->getSessionParameter('request_info_single');
		}
		$guestInfo['form_data']['first_name']=$data->getFirstName();
		$guestInfo['form_data']['email']=$data->getEmail();
		$guestInfo['form_data']['zipcode']=$data->getZipcode();
		$guestInfo['form_data']['phone']=$data->getPhone();
		$guestInfo['form_data']['companyName']=$data->getCompanyName();
		$guestInfo['form_data']['instance_type']=$config['instance_type'];
		$guestInfo['form_data']['instance_id']=$config['instance_id'];
		$status = $this->entityManager->getRepository('OfficeBrainRequestInfoBundle:RequestInfo')->setRequestInfoSingleRecord($guestInfo,$user);
		
		// Add email code here
		
        $this->sessionManager->removeSession('request_info_single');
		return $status;
	}
	
	/**
	 * @author Employee Id: 4203
	 * OB eCommerce Product - Requestinfo
	 * To get single record by id from request info
	 * @param null
	 * return array object data of request info
	 */
	public function getRequestInfoDetailById()
	{
		return $this->entityManager->getRepository('OfficeBrainRequestInfoBundle:RequestInfo')->getRequestInfoDetailById($this->request->get('request_info_id'));
	}
	
	/**
	 * @author Employee Id: 4203
	 * OB eCommerce Product - Requestinfo
	 * To prevent method not found exception.
	 * @param null
	 * return null
	 */
	public function getRequestInfoList()
	{
	}
	
	public function setCommentRequestInfo($data)
	{
		$config = $this->request->get('project_setting');
		return $this->entityManager->getRepository('OfficeBrainRequestInfoBundle:CommentRequestInfo')->setRequestComment($data,$config);
	}
	
	public function getCommentRequestInfoList()
	{
		return $this->entityManager->getRepository('OfficeBrainRequestInfoBundle:CommentRequestInfo')->getCommentRequestInfoDetailById($this->request->get('request_info_id'));
	}
}