<?php

namespace OfficeBrain\Bundle\RequestQuoteBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * RequestQuoteMasterRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class RequestQuoteMasterRepository extends EntityRepository
{
	
	protected $projectSetting;
	protected $paginatorService;
	protected $projectSettingService;
	
	private $request;
	
	
	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();
	}
	
	
	/**
	 * To get the request object
	 */
	public function getRequestObj(){
		return $this->request;
	}
	
	/**
	 * To set the request object
	 */
	public function setRequestObj($request){
		$this->request=$request;
	}
	
	public function prepareProjectSettingData()
	{
		$this->userId = $this->projectSetting['user_id'];
		$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->pms = $this->projectSetting['configuration_rule']['transaction']['request_quote']['product_detail_popup']['option']['pms_color']['status'];
	}	 
	
	/**
	 * @author Employee Id: 4217
	 * OB eCommerce Product - RequestQuote
	 * Function created for define a common querybuilder object
	 * @param integer $userId
	 * @return number
	 */
	public function getQueryBuilder()
	{
		return $this->getEntityManager()->getRepository('OfficeBrainRequestQuoteBundle:RequestQuoteMaster')->createQueryBuilder('r');
		
	}
	
	
	/**
	 * 4248
	 * To push all request quote data in database using TCL
	 */
	public function setRequestQuoteSingleRecord($saveData,$user)
	{	
		$em=$this->getEntityManager();	 
		$requestQuoteMaster = new RequestQuoteMaster();
		$requestQuoteMaster->setGuestId($saveData['request_quote']['guest_id']);
		$requestQuoteMaster->setUserId($saveData['request_quote']['user_id']);
		$requestQuoteMaster->setUserType($saveData['request_quote']['user_type']);
		$requestQuoteMaster->setCreatedUid($saveData['request_quote']['created_uid']);
		$requestQuoteMaster->setInstanceType($saveData['request_quote']['instance_type']);
		$requestQuoteMaster->setInstanceId($saveData['request_quote']['instance_id']);
		$requestQuoteMaster->setNote($saveData['request_quote']['note']);
        $requestQuoteMaster->setCulture($saveData['request_quote']['culture']);
		$requestQuoteMaster->setPrefferedState($saveData['request_quote']['preffered_state']);
		$requestQuoteMaster->setPrefferedDistributorId($saveData['request_quote']['preffered_distributor_id']);
		$requestQuoteMaster->setZipCode($saveData['request_quote']['zip_code']);
		if(!empty($saveData['request_quote']['on_hand_date'])){
			$requestQuoteMaster->setOnHandDate(new \DateTime($saveData['request_quote']['on_hand_date']));
		}
		$requestQuoteMaster->setCouponId($saveData['request_quote']['coupon_id']);
		$requestQuoteMaster->setIsMailSent($saveData['request_quote']['is_mail_sent']);
		$requestQuoteMaster->setSecretKey($saveData['request_quote']['secret_key']);
		$requestQuoteMaster->setQuoteId($saveData['request_quote']['quote_id']);
		if(isset($saveData['request_quote']['erp_id']) && $saveData['request_quote']['erp_id'])
        {
            $requestQuoteMaster->setErpId($saveData['request_quote']['erp_id']);
        }
		$em->getConnection()->beginTransaction();
		
		try 
		{
			$em->persist($requestQuoteMaster);
			$em->flush();
            
			// One to One
			if($this->userId > 0)
			{
				// Temp Change
				$this->setRequestQuoteBillingDetail($requestQuoteMaster,$saveData,$em);
			}
			// One to Many
			$this->setRequestQuoteItemLine($requestQuoteMaster,$saveData['request_quote_item_line'],$em);
			$em->getConnection()->commit();
		} 
		catch (\Exception $e) 
		{
			$em->getConnection()->rollback();
			$em->close();
		
			throw $e;
		}		
		return array("status"=>"success","data"=>$requestQuoteMaster);
	}
	
	
	/**
	 * 4248
	 * To push all request quote item line data in database using TCL
	 */
	public function setRequestQuoteItemLine($requestQuoteMaster,$saveData,$em){
		if(count($saveData)>0){
			foreach($saveData as $ild){

				$requestQuoteItemLine = new RequestQuoteItemLine();
				$requestQuoteItemLine->setRequestQuoteMasterId($requestQuoteMaster);
				$requestQuoteItemLine->setProductId($ild['product_id']);

//				Need to Change and Uncomment				
// 				if($productInput[$data['product_id']]['paper_proof'] !='null' && count($productInput[$data['product_id']]['paper_proof'])>0) {
// 					$orderItemLine->setIsPaperProof(true);
// 					$orderItemLine->setEmailForPaperProof($productInput[$data['product_id']]['paper_proof']['email']);
// 				}else{
// 					$orderItemLine->setIsPaperProof(false);
// 				}
				
				$requestQuoteItemLine->setCultureProductId($ild['culture_product_id']);
				$requestQuoteItemLine->setLineId($ild['line_id']);
				$requestQuoteItemLine->setLineName($ild['line_name']);
				$requestQuoteItemLine->setSupplierId($ild['supplier_id']);
				$requestQuoteItemLine->setCatalogYear($ild['catalog_year']);
				$requestQuoteItemLine->setCurrencyId($ild['currency_id']);
				$requestQuoteItemLine->setCurrencyName($ild['currency_name']);
				$requestQuoteItemLine->setCurrency($ild['currency']);
// 				$requestQuoteItemLine->setCurrencySymbol($ild['currency_symbol']);
				$requestQuoteItemLine->setProductName($ild['product_name']);
				$requestQuoteItemLine->setProductSku($ild['product_sku']);
				$requestQuoteItemLine->setProductSlug($ild['product_slug']);
				$requestQuoteItemLine->setProductThumbImage($ild['product_thumb_image']);
				$requestQuoteItemLine->setProductImage($ild['product_image']);
				$requestQuoteItemLine->setProductNote($ild['product_note']);
				$requestQuoteItemLine->setProductThumbImage($ild['product_thumb_image']);
				$requestQuoteItemLine->setIsSendReviewLink(isset($ild['is_send_review_link']) && $ild['is_send_review_link'] != '' ? $ild['is_send_review_link'] : 0);
				$requestQuoteItemLine->setIsFeedbackPosted(isset($ild['is_feedback_posted']) && $ild['is_feedback_posted'] != '' ? $ild['is_feedback_posted'] : 0);
				$requestQuoteItemLine->setIsComplete($ild['isComplete']);
				$requestQuoteItemLine->setOrderType($ild['order_type']);
				$requestQuoteItemLine->setPriceUnit($ild['price_unit']);
				$requestQuoteItemLine->setExtraColor($ild['extra_color']);
				$em->persist($requestQuoteItemLine);
                $em->flush();
                $requestQuoteMaster->addRequestQuoteItemLine($requestQuoteItemLine);
                
				// One to One
				$this->setRequestQuoteProductSupplier($requestQuoteItemLine,$ild['supplier'],$em); // Here is issue
				
				// One to Many
				$this->setRequestQuoteProductCharges($requestQuoteItemLine,$ild['charges'],$em);
				$this->setRequestQuoteProductImprintArea($requestQuoteItemLine,$ild['imprint_area'],$em);
				$this->setRequestQuoteProduct($requestQuoteItemLine,$ild['product'],$em);
			}
		}
	}
	
	/**
	 * 4248
	 * To push all request quote product data in database using TCL
	 */
	public function setRequestQuoteProduct($requestQuoteItemLine,$saveData,$em)
	{
		if(count($saveData)>0)
		{
			foreach($saveData as $rqp)
			{
				$requestQuoteProduct = new RequestQuoteProduct();
				$requestQuoteProduct->setRequestQuoteItemLineId($requestQuoteItemLine);
				$requestQuoteProduct->setOrderMasterId($rqp['order_master_id']);
				$requestQuoteProduct->setProductId($rqp['product_id']);
				$requestQuoteProduct->setCultureProductId($rqp['culture_product_id']);
				$em->persist($requestQuoteProduct);
				$em->flush();
                $requestQuoteItemLine->addRequestQuoteProduct($requestQuoteProduct);

                //SHIPPING DETAIL WILL BE EMPTY IF SHIPPING IS DISABLED
                if(is_array($rqp['shipping_detail']) && count($rqp['shipping_detail'])>0){
	                // One to One
	               	$this->setRequestQuoteShippingDetail($requestQuoteProduct,$rqp['shipping_detail'],$em);
                }
                
				// Below function call is commented by OBDEV-4248 As this function is not defined in any file.;
				//$this->addRequestQuoteProductVariationMaster(); 
				// One to Many
				$this->setRequestQuoteVariationMaster($requestQuoteProduct,$rqp['variation_master'],$em);
				
			}
		}
	}
	
	/**
	 * 4248
	 * To push all request quote variation master data in database using TCL
	 */	
	public function setRequestQuoteVariationMaster($requestQuoteProduct,$saveData,$em){
		if(count( $saveData)>0)
		{
			foreach( $saveData as $rqvm)
			{		
				$requestQuoteVariationMaster = new RequestQuoteVariationMaster();
				$requestQuoteVariationMaster->setRequestQuoteProductId($requestQuoteProduct);
				$requestQuoteVariationMaster->setAttributeId($rqvm['attribute_id']);
				$requestQuoteVariationMaster->setAttributeValueId($rqvm['attribute_value_id']);
				$em->persist($requestQuoteVariationMaster);
				$em->flush();
                $requestQuoteProduct->addRequestQuoteVariationMaster($requestQuoteVariationMaster);
				// One to One
				$this->setRequestQuoteVariationMapping($requestQuoteVariationMaster,$rqvm,$em);
			}
		}
		
	}
	
	/**
	 * 4248
	 * To push all request quote Variation Mapping data in database using TCL
	 */	
	public function setRequestQuoteVariationMapping($requestQuoteVariationMaster,$saveData,$em)
	{
		$requestQuoteVariationMapping = new RequestQuoteVariationMapping();
		$requestQuoteVariationMapping->setVariationMasterId($requestQuoteVariationMaster);
		$em->persist($requestQuoteVariationMapping);
		$em->flush();
		$requestQuoteVariationMaster->setRequestQuoteVariationMapping($requestQuoteVariationMapping);
		// One to Many
		if(isset($saveData['variation_detail']))
		{
			$this->setRequestQuoteVariationDetail($requestQuoteVariationMapping,$saveData['variation_detail'],$em);
		}
		$this->setRequestQuoteVariationQuantity($requestQuoteVariationMapping,$saveData['variation_quantity'],$em);
	}
	
	/**
	 * 4248
	 * To push all request quote variation detail in database using TCL
	 */	
	public function setRequestQuoteVariationDetail($requestQuoteVariationMapping,$saveData,$em){
		if(count($saveData)>0)
		{
			foreach($saveData as $rqvd)
			{
				foreach($rqvd as $rqvda)
				{
					$requestQuoteVariationDetail = new RequestQuoteVariationDetail();
                    $requestQuoteVariationDetail->setVariationMappingId($requestQuoteVariationMapping);
					$requestQuoteVariationDetail->setAttributeId($rqvda['attribute_id']);
					$requestQuoteVariationDetail->setAttributeValueId($rqvda['attribute_value_id']);
					$em->persist($requestQuoteVariationDetail);
					$em->flush();
                    
					$requestQuoteVariationMapping->addRequestQuoteVariationDetail($requestQuoteVariationDetail);
				}
			}
		}
		
	}
	
	/**
	 * 4248
	 * To push all request quote variation quantity in database using TCL
	 */	
	public function setRequestQuoteVariationQuantity($requestQuoteVariationMapping,$saveData,$em){
		
		if(count($saveData)>0)
		{
			foreach($saveData as $rqvq)
			{		
				$requestQuoteVariationQuantity = new RequestQuoteVariationQuantity();
				$requestQuoteVariationQuantity->setVariationMappingId($requestQuoteVariationMapping);
				$requestQuoteVariationQuantity->setQuantity($rqvq['quantity']);
				$requestQuoteVariationQuantity->setUnitPrice($rqvq['unit_price']);
				$em->persist($requestQuoteVariationQuantity);
				$em->flush();
                $requestQuoteVariationMapping->addRequestQuoteVariationQuantity($requestQuoteVariationQuantity);
			}
		}
		
		
	}
	
	/**
	 * 4248
	 * To push all request quote product charges in database using TCL
	 */
	public function setRequestQuoteProductCharges($requestQuoteItemLine,$saveData,$em){

		if(count($saveData)>0)
		{

			foreach($saveData as $rqpc)
			{
				$requestQuoteProductCharges = new RequestQuoteProductCharges();
				$requestQuoteProductCharges->setRequestQuoteItemLineId($requestQuoteItemLine);
				$requestQuoteProductCharges->setChargesType($rqpc['charges_type']);
				$requestQuoteProductCharges->setChargesAmount($rqpc['charges_amount']);
				$em->persist($requestQuoteProductCharges);
				$em->flush();
                $requestQuoteItemLine->addRequestQuoteProductCharge($requestQuoteProductCharges);
			}
		}	
	}
	
	/**
	 * 4248
	 * To push all request quote product imprint color in database using TCL
	 */	
	public function setRequestQuoteProductImprintColor($requestQuoteProductImprintArea,$saveData,$em){

		if(count($saveData)>0){
			foreach($saveData as $rqpica)
			{
				$requestQuoteProductImprintColor = new RequestQuoteProductImprintColor();
				$requestQuoteProductImprintColor->setImprintAreaRequestId($requestQuoteProductImprintArea);
				$requestQuoteProductImprintColor->setIsPmsColor($rqpica['is_pms']);
				if($rqpica['is_pms']==1 && $this->pms == 1){
					$requestQuoteProductImprintColor->setColorCode(isset($rqpica['pms_color']['pms_color_code'])?$rqpica['pms_color']['pms_color_code']:'');
					// Temp Change
					$requestQuoteProductImprintColor->setColorId($rqpica['pms_color']['pms_color_hashkey']);
				}else{
					$requestQuoteProductImprintColor->setColorCode(isset($rqpica['color_code'])?$rqpica['color_code']:'');
					$requestQuoteProductImprintColor->setColorId($rqpica['color_id']);
				}
				$requestQuoteProductImprintColor->setPrice(isset($rqpica['price'])?$rqpica['price']:'0.00');
				$em->persist($requestQuoteProductImprintColor);
				$em->flush();
                $requestQuoteProductImprintArea->addRequestQuoteProductImprintColor($requestQuoteProductImprintColor);
			}
		}
	}
	
	/**
	 * 4248
	 * To push all request quote product imprint text artwork in database using TCL
	 */	
	public function setRequestQuoteProductImprintTextArtwork($requestQuoteProductImprintArea,$saveData,$em){
		if(count($saveData)>0)
		{
			foreach($saveData as $rqpita)
			{
				if($rqpita['mail_sent']==0)
				{
					if(array_key_exists('active_tab_id', $rqpita) && ($rqpita['active_tab_id'] == 1 || $rqpita['active_tab_id'] == 3))
					{
						if(count($rqpita['logo'])>0)
						{
							foreach ($rqpita['logo'] as $artworklogo)
							{
								$logoName=substr(strrchr($artworklogo,'/'),strpos(strrchr($artworklogo,'/'),'/')+1);
								$logoExtension=substr($logoName,strpos($logoName,'.')+1);
								$requestQuoteProductImprintTextArtwork = new RequestQuoteProductImprintTextArtwork();
								$requestQuoteProductImprintTextArtwork->setImprintAreaRequestId($requestQuoteProductImprintArea);
								$requestQuoteProductImprintTextArtwork->setImprintText('');
								$requestQuoteProductImprintTextArtwork->setLogoName(isset($logoName)?$logoName:'');
								$requestQuoteProductImprintTextArtwork->setLogoExtension(isset($logoExtension)?$logoExtension:'');
								$requestQuoteProductImprintTextArtwork->setLogoPath(isset($artworklogo)?$artworklogo:'');
								$requestQuoteProductImprintTextArtwork->setIsLogoSendAfterOrder('');
								$requestQuoteProductImprintTextArtwork->setEmailForLogo('');
								$em->persist($requestQuoteProductImprintTextArtwork);
								$em->flush();
								$requestQuoteProductImprintArea->addRequestQuoteProductImprintTextArtwork($requestQuoteProductImprintTextArtwork);
							}
						}
					}
					if (array_key_exists('active_tab_id', $rqpita) && ($rqpita['active_tab_id'] == 2 || $rqpita['active_tab_id'] == 3))
					{
						if(count($rqpita['text'])>0)
						{
							foreach ($rqpita['text'] as $artworktext)
							{
								$requestQuoteProductImprintTextArtwork = new RequestQuoteProductImprintTextArtwork();
								$requestQuoteProductImprintTextArtwork->setImprintAreaRequestId($requestQuoteProductImprintArea);
								$requestQuoteProductImprintTextArtwork->setImprintText(isset($artworktext)?$artworktext:'');
								$requestQuoteProductImprintTextArtwork->setLogoName('');
								$requestQuoteProductImprintTextArtwork->setLogoExtension('');
								$requestQuoteProductImprintTextArtwork->setLogoPath('');
								$requestQuoteProductImprintTextArtwork->setIsLogoSendAfterOrder('');
								$requestQuoteProductImprintTextArtwork->setEmailForLogo('');
								$em->persist($requestQuoteProductImprintTextArtwork);
								$em->flush();
								$requestQuoteProductImprintArea->addRequestQuoteProductImprintTextArtwork($requestQuoteProductImprintTextArtwork);
							}
						}
					}
				}
				else
				{
					$requestQuoteProductImprintTextArtwork = new RequestQuoteProductImprintTextArtwork();
					$requestQuoteProductImprintTextArtwork->setImprintAreaRequestId($requestQuoteProductImprintArea);
					$requestQuoteProductImprintTextArtwork->setImprintText('');
					$requestQuoteProductImprintTextArtwork->setLogoName('');
					$requestQuoteProductImprintTextArtwork->setLogoExtension('');
					$requestQuoteProductImprintTextArtwork->setLogoPath('');
					$requestQuoteProductImprintTextArtwork->setIsLogoSendAfterOrder($rqpita['mail_sent']);
					$requestQuoteProductImprintTextArtwork->setEmailForLogo(isset($rqpita['email'])?$rqpita['email']:'');
					$em->persist($requestQuoteProductImprintTextArtwork);
					$em->flush();
					$requestQuoteProductImprintArea->addRequestQuoteProductImprintTextArtwork($requestQuoteProductImprintTextArtwork);
				}
				
			}
		}		
	}

	/**
	 * 4248
	 * To push all request quote billing detail in database using TCL
	 */
	public function setRequestQuoteBillingDetail($requestQuoteMaster,$saveData,$em){
		$requestQuoteBillingDetail = new RequestQuoteBillingDetail();
		$requestQuoteBillingDetail->setRequestQuoteMasterId($requestQuoteMaster);
        $requestQuoteBillingDetail->setContactbookId($saveData['request_quote_billing_detail']['contactbook_id']);
		$requestQuoteBillingDetail->setName($saveData['request_quote_billing_detail']['name']);
		$requestQuoteBillingDetail->setEmail($saveData['request_quote_billing_detail']['email']);
		$requestQuoteBillingDetail->setStreet1($saveData['request_quote_billing_detail']['street1']);
		$requestQuoteBillingDetail->setStreet2($saveData['request_quote_billing_detail']['street2']);
		$requestQuoteBillingDetail->setCountryId($saveData['request_quote_billing_detail']['country_id']);
		$requestQuoteBillingDetail->setCountryName($saveData['request_quote_billing_detail']['country_name']);
		$requestQuoteBillingDetail->setStateId($saveData['request_quote_billing_detail']['state_id']);
		$requestQuoteBillingDetail->setStateName($saveData['request_quote_billing_detail']['state_name']);
		$requestQuoteBillingDetail->setCityId($saveData['request_quote_billing_detail']['city_id']);
		$requestQuoteBillingDetail->setCityName($saveData['request_quote_billing_detail']['city_name']);
		$requestQuoteBillingDetail->setZipCode($saveData['request_quote_billing_detail']['zip_code']);
		$requestQuoteBillingDetail->setExtension($saveData['request_quote_billing_detail']['extension']);
		$requestQuoteBillingDetail->setPhone($saveData['request_quote_billing_detail']['phone']);
		$requestQuoteBillingDetail->setFax($saveData['request_quote_billing_detail']['fax']);
		$requestQuoteBillingDetail->setWebsite($saveData['request_quote_billing_detail']['website']);
		$requestQuoteBillingDetail->setCompanyName($saveData['request_quote_billing_detail']['company_name']);
		$requestQuoteBillingDetail->setCompanyNumber($saveData['request_quote_billing_detail']['company_number']);
		$em->persist($requestQuoteBillingDetail);
		$em->flush();
        $requestQuoteMaster->setRequestQuoteBillingDetail($requestQuoteBillingDetail);
	}
	
	/**
	 * 4248
	 * To push all request quote shipping detail in database using TCL
	 */
	public function setRequestQuoteShippingDetail($requestQuoteProduct,$saveData,$em){
		$requestQuoteShippingDetail = new RequestQuoteShippingDetail();
		$requestQuoteShippingDetail->setRequestQuoteProductId($requestQuoteProduct);
		$requestQuoteShippingDetail->setShippingType($saveData['shipping_type']);
		$requestQuoteShippingDetail->setServiceType($saveData['service_type']);
		$requestQuoteShippingDetail->setShipperAccount($saveData['shipper_account']);
		$requestQuoteShippingDetail->setShippingCharge($saveData['shipping_charge']);
		$requestQuoteShippingDetail->setName($saveData['name']);
		$requestQuoteShippingDetail->setEmail($saveData['email']);
		$requestQuoteShippingDetail->setStreet1($saveData['street1']);
		$requestQuoteShippingDetail->setStreet2($saveData['street2']);
		$requestQuoteShippingDetail->setCountryId($saveData['country_id']);
		$requestQuoteShippingDetail->setCountryName($saveData['country_name']);
		$requestQuoteShippingDetail->setStateId($saveData['state_id']);
		$requestQuoteShippingDetail->setStateName($saveData['state_name']);
		$requestQuoteShippingDetail->setCityId($saveData['city_id']);
		$requestQuoteShippingDetail->setCityName($saveData['city_name']);
		$requestQuoteShippingDetail->setZipCode($saveData['zip_code']);
		$requestQuoteShippingDetail->setExtension($saveData['extension']);
		$requestQuoteShippingDetail->setPhone($saveData['phone']);
		$requestQuoteShippingDetail->setFax($saveData['fax']);
		$requestQuoteShippingDetail->setWebsite($saveData['website']);
		$requestQuoteShippingDetail->setCompanyName($saveData['company_name']);
		$requestQuoteShippingDetail->setCompanyNumber($saveData['company_number']);
		$requestQuoteShippingDetail->setCompanyNumber($saveData['company_number']);
		if($saveData['on_hand_date'] != ''){
			$requestQuoteShippingDetail->setOnHandDate(new \DateTime($saveData['on_hand_date']));
		}
		// Temp Change - for guest user keep below field
		//echo "++".$saveData['request_quote']['guest_id'] . "nish"; die;
		/* if($this->userId == 0)
		{
			$requestQuoteShippingDetail->setGuestId($saveData['request_quote']['guest_id']);
		}*/
		$em->persist($requestQuoteShippingDetail);
		$em->flush();
		$requestQuoteProduct->setRequestQuoteShippingDetail($requestQuoteShippingDetail);
	}	

	/**
	 * 4248
	 * To push all request quote Product imprint Area in database using TCL
	 */
	public function setRequestQuoteProductImprintArea($requestQuoteItemLine,$saveData,$em){
		
		if(count($saveData)>0)
		{
			foreach($saveData as $rqpia)
			{
				$requestQuoteProductImprintArea = new RequestQuoteProductImprintArea();
				$requestQuoteProductImprintArea->setRequestQuoteItemLineId($requestQuoteItemLine);
				$requestQuoteProductImprintArea->setImprintAreaId($rqpia['imprint_area_id']);
				$requestQuoteProductImprintArea->setImprintAreaMethodId($rqpia['imprint_method_id']);
				$requestQuoteProductImprintArea->setImprintAreaNoofColor($rqpia['no_of_color']);
		
				$em->persist($requestQuoteProductImprintArea);
				$em->flush();
				$requestQuoteItemLine->addRequestQuoteProductImprintArea($requestQuoteProductImprintArea);
				
				$this->setRequestQuoteProductImprintColor($requestQuoteProductImprintArea,$rqpia['imprint_color'], $em);
				$this->setRequestQuoteProductImprintTextArtwork($requestQuoteProductImprintArea,$rqpia['imprint_art_work_detail'], $em);
			}
		}
	}
	
	/**
	 * 4248
	 * To push all request quote product supplier in database using TCL
	 */	
	
	public function setRequestQuoteProductSupplier($requestQuoteItemLine,$saveData,$em){
		if(count($saveData)>0)
		{
			$requestQuoteProductSupplier = new RequestQuoteProductSupplier();
			$requestQuoteProductSupplier->setRequestQuoteItemLineId($requestQuoteItemLine);
			$requestQuoteProductSupplier->setSupplierId($saveData['supplier_id']);
			$requestQuoteProductSupplier->setSupplierName($saveData['supplier_name']);
			$requestQuoteProductSupplier->setCode($saveData['code']);
			$requestQuoteProductSupplier->setEmailAddress($saveData['email_address']);
			$requestQuoteProductSupplier->setWebsite($saveData['website']);
			$requestQuoteProductSupplier->setImage($saveData['image']);
			$requestQuoteProductSupplier->setFax($saveData['fax']);
			$requestQuoteProductSupplier->setMobile($saveData['mobile']);
			$requestQuoteProductSupplier->setTelephone($saveData['telephone']);
			$em->persist($requestQuoteProductSupplier);
			$em->flush();
			$requestQuoteItemLine->setRequestQuoteProductSupplier($requestQuoteProductSupplier);
		}
	}
	
	public function getRequestQuoteAdminList($page,$recordsPerPage)
	{    
	    $queryBuilder = $this->getQueryBuilder();
	    $queryBuilder->where('r.deletedAt IS NULL')
	    			 ->andWhere('r.instanceId = :instanceId')
	    			->innerJoin('r.requestQuoteItemLine', 'rqi') //Here i put join due to check is_complete =1 in itemline entity.
	    			->andWhere('rqi.isComplete = :isComplete')
	    			->setParameter('instanceId', $this->instanceId)
	    			->setParameter('isComplete', 1)
	    			->andWhere('r.prefferedDistributorId = :disributorId')
	    			->setParameter('disributorId', $this->userId);
		$queryBuilder->orderBy('r.id', 'DESC');
	    
		return $this->paginatorService->paginate($queryBuilder, $page, $recordsPerPage);
	}
	
	/**
	 * To get request Info product data for particular user
	 */
	public function getTotalCountUserWise($flag)
	{
 		$queryBuilder = $this->getQueryBuilder();
 		$queryBuilder->select('count(r.id)');
 		$queryBuilder->where('r.deletedAt IS NULL AND r.instanceId = :instanceId')
 		->innerJoin('r.requestQuoteItemLine', 'rqi') //Here i put join due to check is_complete =1 in itemline entity.
 		->andWhere('rqi.isComplete = :isComplete')
 		->setParameter('isComplete', 1)
 		->setParameter('instanceId', $this->instanceId);
        if ($flag == 'user') {
            $queryBuilder->andWhere('r.userId = :userId')
                ->setParameter('userId', $this->userId);
        }

 		return $queryBuilder->getQuery()->getSingleScalarResult();
	}
	
	
	/**
	 * @author Employee Id: 410175
	 * OB eCommerce Product - RequestQuote
	 * Function created for define a common querybuilder object
	 * @param integer userId
	 * @return resultset 
	 */
	public function getRequestQuoteList($userId,$page,$recordsPerPage)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('r.deletedAt IS NULL AND r.instanceId = :instanceId')
		->innerJoin('r.requestQuoteItemLine', 'rqi') // Here i put join due to check is_complete =1 in itemline entity.
		->orderBy('r.id', 'DESC')
		->andWhere('rqi.isComplete = :isComplete')
		->andWhere('r.userId = :userId')
		->setParameter('isComplete', 1)
		->setParameter('userId', $userId)
		->setParameter('instanceId', $this->instanceId);
		return $this->paginatorService->paginate($queryBuilder, $page, $recordsPerPage);
		//return $queryBuilder->getQuery()->getResult();
	}
	
	/**
	 * To get request quote detail by id
	 */
	public function getRequestQuoteDetailById($infoId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder ->where('r.id = :infoId')
					->andWhere('r.deletedAt IS NULL')
			 		->setParameter('infoId', $infoId);
		
		return $queryBuilder->getQuery()->getOneOrNullResult();
		
	}
	/**
	 * @author Employee Id: 410175
	 * OB eCommerce Product - RequestQuote
	 * Function created to delete Request Quote By Id
	 * @param integer id
	 * @return resultset
	 */
	public function deleteRequestQuote($requestQuoteId)
	{
		$em = $this->getEntityManager();
		$requestQuote = $this->getRequestQuoteDetailById($requestQuoteId);
		$requestQuote->setDeletedAt(new \DateTime());
		$em->persist($requestQuote);
		$em->flush();
		
		return $requestQuote;
	}

	/**
	 * @author Employee Id: 4248
	 * OB eCommerce Product - RequestQuote
	 * Function created for define a common querybuilder object
	 * @param integer userId
	 * @return resultset
	 */
	public function getGuestUserRequestQuoteList($guestId)
	{
		$queryBuilder = $this->getQueryBuilder();
		$queryBuilder->where('r.deletedAt IS NULL')
		->innerJoin('r.requestQuoteItemLine', 'rqi') // Here i put join due to check is_complete =1 in itemline entity.
		->orderBy('r.id', 'DESC')
		->andWhere('rqi.isComplete = :isComplete')
		->andWhere('r.guestId = :guestId')
		->setParameter('isComplete', 1)
		->setParameter('guestId', $guestId)
		;
		return $queryBuilder->getQuery()->getResult();
	}	
	
}
