<?php

namespace OfficeBrain\Bundle\QuoteBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * QuoteProductImprintAreaRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class QuoteProductImprintAreaRepository extends EntityRepository
{
	protected $projectSetting;
	protected $instanceId;
	protected $instanceType;
	protected $cultureId;
	protected $cultureCode;
	protected $paginatorService;
	protected $projectSettingService;
	protected $userType;
	protected $userId;
	protected $userManager;
	
	public function getPaginatorService()
	{
		return $this->paginatorService;
	}
	
	public function setPaginatorService($paginatorService)
	{
		$this->paginatorService = $paginatorService;
	}
	
	public function setUserManager($userManager)
	{
		$this->userManager = $userManager;
	}
	
	public function setCoreManager($coreManager){
		$this->coreManager = $coreManager;
	}
	
	public function getProjectSetting()
	{
		return $this->paginatorService;
	}
	
	public function setProjectSetting($projectSetting)
	{
		$this->projectSetting = $projectSetting;
		$this->prepareProjectSettingData();
	}
	
	public function setProjectUserData($userData)
	{
		$this->userObj = $userData;
	}
	
	public function prepareProjectSettingData()
	{
		$this->userId = $this->projectSetting['user_id'];
		$this->userType = $this->projectSetting['user_type'];
		$this->createdUid = $this->upatedUid = $this->userId;
		$this->instanceId = $this->projectSetting['instance_id'];
		$this->instanceType = $this->projectSetting['instance_type'];
		$this->cultureId = $this->projectSetting['culture_id'];
		$this->cultureCode = $this->projectSetting['culture_code'];
	}
	
	/**
	 * @author Employee Id: 4248
	 * OB eCommerce Product - Quotelist
	 * Function created for define a common querybuilder object
	 * @param integer $userId
	 * @return number
	 */
	public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainQuoteBundle:QuoteProductImprintArea')->createQueryBuilder('qpia');
	}
	
	public function setQuoteProductImprint($productData,$itemLineObj)
	{
		if(array_key_exists('imprint',$productData)){
			if(count($productData['imprint'])>0 && $productData['imprint']!='null'){
				foreach($productData['imprint'] as $key=>$imprintDetail){
					$imprintAreaId=explode(':',$key);
					$quoteProductImprintArea = new QuoteProductImprintArea();
					$quoteProductImprintArea->setQuoteItemLineId($itemLineObj);
					$quoteProductImprintArea->setImprintAreaId($imprintAreaId[1]);
					$quoteProductImprintArea->setImprintAreaMethodId($imprintDetail['imprint_method_id']);
					(isset($imprintDetail['no_of_color'])? $quoteProductImprintArea->setImprintAreaNoofColor($imprintDetail['no_of_color']) : $quoteProductImprintArea->setImprintAreaNoofColor(0));
					$em = $this->getEntityManager();
					$em->persist($quoteProductImprintArea);
					$em->flush();
					
					if(array_key_exists('selected_colors',$imprintDetail)){
						if(count($imprintDetail['selected_colors'])>0){
							$this->setQuoteProductImprintColor($quoteProductImprintArea,$imprintDetail['selected_colors'], $em);
						}
					}
					if(array_key_exists('art_work_text',$imprintDetail)){
						if(count($imprintDetail['art_work_text'])>0){
							$this->setQuoteProductImprintTextArtwork($quoteProductImprintArea,$imprintDetail['art_work_text'], $em);
						}
					}
				}
			}
		}
	}
	
	public function setQuoteProductImprintColor($quoteProductImprintAreaObj,$saveData,$em){
	
		if(count($saveData)>0){
			foreach($saveData as $qpica)
			{	
				$quoteProductImprintColor = new QuoteProductImprintColor();
				$quoteProductImprintColor->setImprintAreaId($quoteProductImprintAreaObj);
				$quoteProductImprintColor->setIsPmsColor($qpica['is_pms']);
				//$quoteProductImprintColor->setColorName(isset($qpica['color_code'])?$qpica['color_code']:'');  //color code
				if($qpica['is_pms'] == 1){
					$quoteProductImprintColor->setColorName(isset($qpica['pms_color']['pms_color_code'])? $qpica['pms_color']['pms_color_code'] :'');  //color code
				}else{
					$quoteProductImprintColor->setColorName($qpica['color_id']);  //color code
				}
				$quoteProductImprintColor->setColorId($qpica['color_id']);
				//$quoteProductImprintColor->setPrice(isset($qpica['price'])?$qpica['price']:'');
				$quoteProductImprintColor->setPrice('');
				$em->persist($quoteProductImprintColor);
				$em->flush();
			}
		}
	}
	
	public function setQuoteProductImprintTextArtwork($quoteProductImprintAreaObj,$saveData,$em){

		if(count($saveData)>0)
		{
			if(array_key_exists('active_tab_id', $saveData) && $saveData['active_tab_id']==1){
				if($saveData['mail_sent']==0){
					for($i=0; $i<count($saveData['logo']); $i++){
					$str = $saveData['logo'][$i];
					$logoName=substr(strrchr($str,'/'),strpos(strrchr($str,'/'),'/')+1);
					$logoExtension=substr($logoName,strpos($logoName,'.')+1);
					
					$quoteProductImprintTextArtwork = new QuoteProductImprintTextArtWork();
					$quoteProductImprintTextArtwork->setImprintAreaId($quoteProductImprintAreaObj);
					$quoteProductImprintTextArtwork->setImprintText('');
					$quoteProductImprintTextArtwork->setLogoName($logoName);
					$quoteProductImprintTextArtwork->setLogoExtension($logoExtension);
					$quoteProductImprintTextArtwork->setLogoPath($saveData['logo'][$i]);
					$quoteProductImprintTextArtwork->setIsLogoSendAfterOrder($saveData['mail_sent']);
					$quoteProductImprintTextArtwork->setEmailForLogo($saveData['email']);
					$quoteProductImprintTextArtwork->setArtWorkLogoTabType($saveData['active_tab_id']);
					$em->persist($quoteProductImprintTextArtwork);
					$em->flush();
					}
				}else{
					$quoteProductImprintTextArtwork = new QuoteProductImprintTextArtWork();
					$quoteProductImprintTextArtwork->setImprintAreaId($quoteProductImprintAreaObj);
					$quoteProductImprintTextArtwork->setImprintText('');
					$quoteProductImprintTextArtwork->setLogoName('');
					$quoteProductImprintTextArtwork->setLogoExtension('');
					$quoteProductImprintTextArtwork->setLogoPath('');
					$quoteProductImprintTextArtwork->setIsLogoSendAfterOrder($saveData['mail_sent']);
					$quoteProductImprintTextArtwork->setEmailForLogo($saveData['email']);
					$quoteProductImprintTextArtwork->setArtWorkLogoTabType($saveData['active_tab_id']);
					$em->persist($quoteProductImprintTextArtwork);
					$em->flush();
				}
			}
			
			if(array_key_exists('active_tab_id', $saveData) && $saveData['active_tab_id']==2){
				for($i=0; $i<count($saveData['text']); $i++){
					$quoteProductImprintTextArtwork = new QuoteProductImprintTextArtWork();
					$quoteProductImprintTextArtwork->setImprintAreaId($quoteProductImprintAreaObj);
					$quoteProductImprintTextArtwork->setImprintText($saveData['text'][$i]);
					$quoteProductImprintTextArtwork->setLogoName('');
					$quoteProductImprintTextArtwork->setLogoExtension('');
					$quoteProductImprintTextArtwork->setLogoPath('');
					$quoteProductImprintTextArtwork->setIsLogoSendAfterOrder($saveData['mail_sent']);
					$quoteProductImprintTextArtwork->setEmailForLogo($saveData['email']);
					$quoteProductImprintTextArtwork->setArtWorkLogoTabType($saveData['active_tab_id']);
					$em->persist($quoteProductImprintTextArtwork);
					$em->flush();
				}
			}
			
			if(array_key_exists('active_tab_id', $saveData) && $saveData['active_tab_id']==3){
				if($saveData['mail_sent']==0){
					for($i=0; $i<count($saveData['logo']); $i++){
						$str = $saveData['logo'][$i];
						$logoName=substr(strrchr($str,'/'),strpos(strrchr($str,'/'),'/')+1);
						$logoExtension=substr($logoName,strpos($logoName,'.')+1);
							
						$quoteProductImprintTextArtwork = new QuoteProductImprintTextArtWork();
						$quoteProductImprintTextArtwork->setImprintAreaId($quoteProductImprintAreaObj);
						$quoteProductImprintTextArtwork->setImprintText($saveData['text'][$i]);
						$quoteProductImprintTextArtwork->setLogoName($logoName);
						$quoteProductImprintTextArtwork->setLogoExtension($logoExtension);
						$quoteProductImprintTextArtwork->setLogoPath($saveData['logo'][$i]);
						$quoteProductImprintTextArtwork->setIsLogoSendAfterOrder($saveData['mail_sent']);
						$quoteProductImprintTextArtwork->setEmailForLogo($saveData['email']);
						$quoteProductImprintTextArtwork->setArtWorkLogoTabType($saveData['active_tab_id']);
						$em->persist($quoteProductImprintTextArtwork);
						$em->flush();
					}
				}else{
					$quoteProductImprintTextArtwork = new QuoteProductImprintTextArtWork();
					$quoteProductImprintTextArtwork->setImprintAreaId($quoteProductImprintAreaObj);
					$quoteProductImprintTextArtwork->setImprintText('');
					$quoteProductImprintTextArtwork->setLogoName('');
					$quoteProductImprintTextArtwork->setLogoExtension('');
					$quoteProductImprintTextArtwork->setLogoPath('');
					$quoteProductImprintTextArtwork->setIsLogoSendAfterOrder($saveData['mail_sent']);
					$quoteProductImprintTextArtwork->setEmailForLogo($saveData['email']);
					$quoteProductImprintTextArtwork->setArtWorkLogoTabType($saveData['active_tab_id']);
					$em->persist($quoteProductImprintTextArtwork);
					$em->flush();
				}
			}
		}
	}
	
	/*  To Remove this method after testing.
	 * public function getQuoteProductImprintAreaByIdVal($productData)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder ->where('qpia.quoteItemLineId  =:quote_item_line_id ')
		->setParameter('quote_item_line_id', $productData['item_line_id']);
		
	
		return $queryBuilder->getQuery()->getOneOrNullResult();
	}
	 */
	public function removeQuoteProductImprintArea($quoteProductImprintArea)
	{
		if(count($quoteProductImprintArea)>0){
			foreach($quoteProductImprintArea as $obj){
				$this->_em->remove($obj);
			}
			$this->_em->flush();
			return 'SUCCESS';
		}
	}
}
