403Webshell
Server IP : 103.234.187.230  /  Your IP : 216.73.216.216
Web Server : Apache
System : Linux lserver42043-ind.megavelocity.net 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/junkdata/holidays.tripjack.comOLDSEP11bak/application/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/junkdata/holidays.tripjack.comOLDSEP11bak/application/models/HotelMaster.php
<?php

class Travel_Model_HotelMaster
{

    protected $db = NULL;
    public $intId = NULL;
    protected $objHelperGeneral;
    protected $SecurityKey;
    protected $TrxCurrency;

    /*     * ************************************ */

    public function __construct()
    {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $this->baseUrl = $request->getScheme() . '://' . $request->getHttpHost();
        $this->db = Zend_Db_Table::getDefaultAdapter();
        $this->_session = new Zend_Session_Namespace('User');
        //$this->TrxCurrency = $this->_session->data['TrxCurrency'];
        $this->TrxCurrency =  ($_SESSION['User']['AgentCurrency'] > 0) ? $_SESSION['User']['AgentCurrency'] : $this->_session->data['TrxCurrency'];
        $this->SecurityKey = $this->_session->data['SecurityKey'];
        $this->MasterAgencySysId = $this->_session->data['MasterAgencySysId'];
        $this->gtxagencysysid = $this->_session->data['AgencySysId'];
                                
    

    }

    public function __destruct()
    {
        $this->db->closeConnection();
    }

    public function getHotel($destinationId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $markupDetailsArray = array(), $starFilterValue = NULL, $nameFilterValue = NULL)
    {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        $destinationId = trim($destinationId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';

        if ($filterType == 2) {
            if ($starFilterValue == 1) {
                $order = 'StarRating ASC';
            } else {
                $order = 'StarRating DESC';
            }
        } else if ($filterType == 1) {
            if ($nameFilterValue == 1) {
                $order = 'packageNameUrl ASC';
            } else {
                $order = 'packageNameUrl DESC';
            }
        }
        $limit = '';
        if($this->MasterAgencySysId == 103509){
//            $limit = 'limit 40';
        }
        $response = array();
        $sql = "select * FROM $table A WHERE DestinationsId = $destinationId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by $order $limit ";

        $res = $this->db->query($sql)->fetchAll();
        $totalAdult = (int) $adults + (int) $child + (int) $infent;


        $Adult = (int) $adults;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $roomJsonInfoNew = array();
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        if (count($res) > 0) {
            foreach ($res as $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                $checkPlan = $RoomInfoArray = array();
                $RoomInfo = $longJson['RoomInfo'];
                foreach ($RoomInfo as $riKey => $riVal) {
                    $RoomInfoArray[$riVal['RoomType']] = $riVal;
                }
                $checkDuplicateDate = array();

                foreach ($longJson['PriceAdditional'] as $priceVal) {
                    if ($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114') {
                        if ($priceVal['MPTitle'] == 'EP') {
                            $priceVal['MPTitle'] = 'RO';
                        }
                        if ($priceVal['MPTitle'] == 'CP') {
                            $priceVal['MPTitle'] = 'BB';
                        }
                        if ($priceVal['MPTitle'] == 'AP') {
                            $priceVal['MPTitle'] = 'FB';
                        }
                        if ($priceVal['MPTitle'] == 'MAP') {
                            $priceVal['MPTitle'] = 'HB';
                        }
                    }
                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
                        if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
                            $remainAdults = (int) $adults;
                            $remainChilds = (int) $child;
                            $remainInfent = (int) $infent;
                            $RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
                            //                            echo "<pre>";print_r($RoomInfoForRoom);die;    
                            $roomJsonInfoNew = array();
                            for ($imr = 1; $imr <= $adults; $imr++) {
                                $FillAdult = $FillAdultExtra = $FillChild = $FillInfent = 0;

                                if (($remainAdults + $remainChilds + $remainInfent) > 0) {
                                    //                                echo $remainAdults.'-';
                                    if ($remainAdults > 0) {
                                        if ($remainAdults < $RoomInfoForRoom['MAdult']) {
                                            if ($remainAdults < $RoomInfoForRoom['Adult']) {
                                                $FillAdult = $remainAdults;
                                            } else {
                                                $FillAdult = $RoomInfoForRoom['Adult'];
                                                $FillAdultExtra = $remainAdults - $RoomInfoForRoom['Adult'];
                                            }
                                        } else {
                                            $FillAdult = $RoomInfoForRoom['Adult'];

                                            if (($FillAdult) != ($remainAdults - $FillAdult)) {
                                                $FillAdultExtra = $RoomInfoForRoom['MAdult'] - $RoomInfoForRoom['Adult'];
                                            }
                                        }
                                    }
                                    if ($remainChilds > 0) {
                                        if ($remainChilds < $RoomInfoForRoom['MChild']) {
                                            $FillChild = $remainChilds;
                                        } else {
                                            $FillChild = $RoomInfoForRoom['MChild'];
                                        }
                                    }
                                    if ($remainInfent > 0) {
                                        if ($remainInfent > 3) {
                                            $FillInfent = 3;
                                        } else {
                                            $FillInfent = $remainInfent;
                                        }
                                    }
                                    if (($FillAdult + $FillAdultExtra + $FillChild) > $RoomInfoForRoom['TGuest']) {

                                        $Extrapax = ($FillAdult + $FillAdultExtra + $FillChild) - $RoomInfoForRoom['TGuest'];
                                        //                                        echo $Extrapax.'-';
                                        if (($FillChild + $FillAdultExtra) >= $Extrapax) {
                                            if ($FillAdultExtra > 0) {
                                                $Extrapax = $Extrapax - $FillAdultExtra;
                                                $FillAdultExtra = 0;
                                            }
                                            if ($FillChild >= $Extrapax) {
                                                $FillChild = $FillChild - $Extrapax;
                                            }
                                        } else if ($FillChild >= $Extrapax) {
                                            $FillChild = $FillChild - $Extrapax;
                                            //                                        }else if($FillAdult>=$Extrapax){
                                            //                                            $FillAdult = $FillAdult - $Extrapax;

                                        } else if ($FillAdultExtra >= $Extrapax) {
                                            $FillAdultExtra = $FillAdultExtra - $Extrapax;
                                        }
                                    } else {
                                    }

                                    if ($FillAdult > 0) {
                                        $roomJsonInfoNew[$imr]['Adult'] = $FillAdult;
                                    }
                                    if ($FillAdultExtra > 0) {
                                        $roomJsonInfoNew[$imr]['AdultExtra'] = $FillAdultExtra;
                                    }
                                    if ($FillChild > 0) {
                                        $roomJsonInfoNew[$imr]['Child'] = $FillChild;
                                    }
                                    if ($FillInfent > 0) {
                                        $roomJsonInfoNew[$imr]['Infent'] = $FillInfent;
                                    }

                                    $remainAdults = $remainAdults - $FillAdult - $FillAdultExtra;
                                    $remainChilds = $remainChilds - $FillChild;
                                    $remainInfent = $remainInfent - $FillInfent;
                                }
                            }
                            //                            echo "<pre>";print_r($roomJsonInfoNew);die;

                            $checkPlan['category']['Name'] = $priceVal['Title'];
                            $checkPlan['category']['HotelName'] = $longJson['Title'];
                            $checkPlan['category']['Stars'] = $longJson['Stars'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['RoomInfo'] = $RoomInfoForRoom;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
                            $getPriceF = $getMarkupF = 0;
                            foreach ($roomJsonInfoNew as $paxKey => $paxVal) {
                                $adultsR = (int)$paxVal['Adult'];
                                $AdultExtraR = (int)$paxVal['AdultExtra'];
                                $childR = (int)$paxVal['Child'];
                                $infentR = (int)$paxVal['Infent'];
                                $totalAdultR = (int) $adultsR + (int) $childR + (int) $infentR;

                                $ChildWithBedR = 0;
                                $ChildWithOutBedR = (int) $childR;
                                $getPrice = $getMarkup = $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;

                                if ((float) $priceVal['B2BMarkup'] > 0) {
                                    if ($priceVal['MarkType'] == 1) {
                                        if ($priceVal['IsAllowMarkupSOC'] == 1) {
                                            $MarkupNSOC =  (float) ((float) $priceVal['NSOC'] * ($priceVal['B2BMarkup']) / 100);
                                        }
                                        if ($priceVal['IsAllowMarkupDOC'] == 1) {
                                            $MarkupNDOC = (float) ((float) $priceVal['NDOC'] * ($priceVal['B2BMarkup']) / 100);
                                        }
                                        if ($priceVal['IsAllowMarkupEBC'] == 1) {
                                            $MarkupNEBC = (float) ((float) $priceVal['NEBC'] * ($priceVal['B2BMarkup']) / 100);
                                        }
                                        if ($priceVal['IsAllowMarkupEWBC'] == 1) {
                                            $MarkupNEWBC = (float) ((float) $priceVal['NEWBC'] * ($priceVal['B2BMarkup']) / 100);
                                        }
                                        if ($priceVal['IsAllowMarkupEWOBC'] == 1) {
                                            $MarkupNEWOBC = (float) ((float) $priceVal['NEWOBC'] * ($priceVal['B2BMarkup']) / 100);
                                        }
                                    } else {
                                        $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
                                    }
                                }
                                if ($adultsR > 0) {
                                    if ($adultsR == 1) {
                                        $getPrice += (float) $priceVal['NSOC'];
                                        $getMarkup += (float) $MarkupNSOC;
                                    } else {
                                        $getPrice += (float) $priceVal['NDOC'];
                                        $getMarkup += (float) $MarkupNDOC;
                                    }
                                }
                                if ($AdultExtraR > 0) {
                                    $getPrice += (float) ($priceVal['NEBC']) * $AdultExtraR;
                                    $getMarkup += (float) $MarkupNEBC * $AdultExtraR;
                                }
                                if ($childR > 0) {
                                    if ($ChildWithBedR > 0) {
                                        $getPrice += (float) ($priceVal['NEWBC']) * $ChildWithBedR;
                                        $getMarkup += (float) $MarkupNEWBC * $ChildWithBedR;
                                    }
                                    if ($ChildWithOutBedR > 0) {
                                        $getPrice += (float) ($priceVal['NEWOBC']) * $ChildWithOutBedR;
                                        $getMarkup += (float) $MarkupNEWOBC * $ChildWithOutBedR;
                                    }
                                }
                                $getPriceF = $getPriceF + $getPrice;
                                $getMarkupF = $getMarkupF + $getMarkup;
                            }
                            $exchangerate = 1;
                            if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                            }
                            $getPriceF = $getPriceF * $exchangerate;
                            $getMarkupF = $getMarkupF * $exchangerate;
                            //echo "<pre>";print_r($getPriceF);die;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Markup'][] = $getMarkupF;
                            //                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
                        }
                    }
                }

                $datetime1 = new DateTime($checkInDate);
                $datetime2 = new DateTime($checkOutDate);
                $interval = $datetime1->diff($datetime2);
                $totalNight = (int) $interval->format('%a');
                $countval = array();
                $finalArray = array();
                $Price = $Markup = 0;
                $defaultRoomType = $defaultMealPlanType = '';
                foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                    foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                        $i = 0;
                        foreach ($SUBVal as $keyItem => $checkRNd) {
                            $countval[$i] = count($checkRNd["CreateDate"]);
                            if ($countval[$i] == $totalNight) {
                                $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                $finalArray['category']['HotelName'] = $longJson['Title'];
                                $finalArray['category']['Stars'] = $longJson['Stars'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['AminitiesMask'] = $checkRNd['AminitiesMask'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['priceVal'] = $checkRNd['priceVal'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomInfo'] = $checkRNd['RoomInfo'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];

                                $mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                $mmarkupValue = array_sum($checkRNd['Markup']) / count($checkRNd['Markup']);

                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $mPrice;
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'] = $mmarkupValue;

                                if ($Price == 0 || $Price > $mPrice) {
                                    $Price = $mPrice;
                                    $Markup = $mmarkupValue;
                                    $finalArray['category']['defaultRoomType'] = $SUBkey;
                                    $finalArray['category']['defaultMealPlanType'] = $keyItem;
                                    $finalArray['category']['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
                                }
                            }
                            $i++;
                        }
                    }
                }
                //                echo "<pre>";print_r($finalArray);die;
                if (!empty($finalArray) && $Price > 0) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'adults' => $adults,
                        'child' => $child,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'Address' => $longJson['Address'],
                        'Area' => $longJson['Area'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => (int) $Price,
                        'Markup' => (int) $Markup,
                        'defaultRoomType' => (int) $defaultRoomType,
                        'defaultMealPlanType' => (int) $defaultMealPlanType,
                    );
                }
            }
        }
        return $response;
    }
    public function getHotelInv($destinationId, $table, $checkInDate, $checkOutDate, $checkInDate2, $checkOutDate2, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $markupDetailsArray = array(), $starFilterValue = NULL, $nameFilterValue = NULL)
    {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        $destinationId = trim($destinationId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';

        if ($filterType == 2) {
            if ($starFilterValue == 1) {
                $order = 'StarRating ASC, MinPrice ASC';
            } else {
                $order = 'StarRating DESC, MinPrice ASC';
            }
        } else if ($filterType == 1) {
            if ($nameFilterValue == 1) {
                $order = 'packageNameUrl ASC';
            } else {
                $order = 'packageNameUrl DESC';
            }
        }
        $limit = '';
        if($this->MasterAgencySysId == 103509){
//            $limit = 'limit 40';
        }
        $response = array();
// }        if($this->_session->data['AgencySysId'] == 105050){
//            die('here');    
//       
        $sql = "select PkgSysId,GTXPkgId,DestinationsId,Destinations,IsFeatured,ItemType,PackageType,PackageSubType,LongJsonInfo FROM $table A WHERE DestinationsId = $destinationId AND ((ItemType = 2) OR (ItemType = 1 AND PackageSubType = 2))  AND IsActive = '1' and IsMarkForDel = '0' order by $order $limit ";
        $res = $this->db->query($sql)->fetchAll();
        
        $totalAdult = (int) $adults + (int) $child + (int) $infent;

        
        $Adult = (int) $adults;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $roomJsonInfoNew = array();
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        $datetime1 = new DateTime($checkInDate);
        $datetime2 = new DateTime($checkOutDate);
        $interval = $datetime1->diff($datetime2);
        $totalNight = $totalNight1 = (int) $interval->format('%a');
        
        
        $datetime12 = new DateTime($checkInDate2);
        $datetime22 = new DateTime($checkOutDate2);
        $interval2 = $datetime12->diff($datetime22);
        $totalNight2 = (int) $interval2->format('%a');
        if($totalNight2 > 0){
            $totalNight = $totalNight + $totalNight2;
        }
        if (count($res) > 0) {
            foreach ($res as $keyr => $row) {
//                if($row['GTXPkgId'] != 547773){
//                    continue;
//                }
                
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                $checkPlan = $RoomInfoArray = array();
                $RoomInfo = $longJson['RoomInfo'];
                foreach ($RoomInfo as $riKey => $riVal) {
                    $RoomInfoArray[$riVal['RoomType']] = $riVal;
                }
                // if($keyr == 14){
//                     echo"<pre>";print_r($longJson);die;
                //         }
                $checkDuplicateDate = array();
                $ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
                $TransferData = $OtherChargesData = array();
                foreach ($ExtraServices as $key => $value) {
                    if ($value['ServiceType'] == 1) {
                        $TransferData[] = $value;
                    } else {
                        $OtherChargesData[] = $value;
                    }
                }
                $MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
                if ($totalNight1 < $MinStayNights) {
                    $longJson['PriceAdditional'] = array();
                }
                if ($totalNight2 > 0 && $totalNight2 < $MinStayNights) {
                    $longJson['PriceAdditional'] = array();
                }
                
                if ($row['ItemType'] == 2) {
                                
                    foreach ($longJson['PriceAdditional'] as $priceVal) {
                        
                        if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) { 
                                
                            if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
                                
                                $RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
                                
                                $roomMinAdult = (int)$RoomInfoForRoom['Adult'];
                                $roomMaxAdult = (int)$RoomInfoForRoom['MAdult'];
                                $roomMinChild = (int)$RoomInfoForRoom['Child'];
                                $roomMaxChild = (int)$RoomInfoForRoom['MChild'];
                                $roomMaxGuest = (int)$RoomInfoForRoom['TGuest'];

                                $checkPlan['category']['Name'] = $priceVal['Title'];
                                $checkPlan['category']['HotelName'] = $longJson['Title'];
                                $checkPlan['category']['Stars'] = $longJson['Stars'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['RoomInfo'] = $RoomInfoForRoom;
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
                                $getPriceF = 0;
                                $checkR = 0;
                                $totalAdultss = $totalChildss = 0;
                                if($longJson['PropertyType'] == 11){
                                    foreach ($roomJsonInfo as $paxKey => $paxVal) {
                                        $adults = (int)$paxVal['Adult'];
                                        $child = (int)$paxVal['Child'];
                                        $totalAdultss = $totalAdultss + $adults;
                                        $totalChildss = $totalChildss + $child;
                                    }
                                    
                                    if (((int) $totalAdultss + (int) $totalChildss) > $roomMaxGuest) {
                                        $checkR = 1;
                                    }
                                    
                                    $getPrice = (float) $priceVal['NDOC'];
                                    $getPriceF = $getPriceF + $getPrice;
                                }else{
                                    foreach ($roomJsonInfo as $paxKey => $paxVal) {
                                        $adults = (int)$paxVal['Adult'];
                                        $child = (int)$paxVal['Child'];
                                        $infent = (int)$paxVal['Infent'];
                                        $totalAdultss = $totalAdultss + $adults;
                                        $totalChildss = $totalChildss + $child;
                                        $totalAdult = (int) $adults + (int) $child + (int) $infent;

                                        $totalRoomPax = (int) $adults + (int) $child;

                                        if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
                                            $checkR = 1;
                                        }

                                        $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                        $childAgeArray = array();
                                        for ($ic = 1; $ic <= $child; $ic++) {
                                            $childAge = $paxVal['ChildAge_' . $ic];
                                            $childAgeArray[] = $childAge;
                                        }
                                        sort($childAgeArray);

                                        if ($totalRoomPax == 1) {
                                            $adultPrice = (float) $priceVal['NSOC'];
                                        } else if ($totalRoomPax > 1) {
                                            $adultPrice = (float) $priceVal['NDOC'];
                                            $adultsExtra = (int)($adults - $roomMinAdult);
                                            if ($adultsExtra < 0) {
                                                $adultsExtra = 0;
                                            }

                                            $childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
                                            if ($adultsExtra > 0) {
                                                $adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
                                            }

                                            if ($childExtra > 0) {

                                                $ChildWithBed = $ChildWithOutBed = 0;
                                                for ($che = 0; $che < $childExtra; $che++) {
                                                    $childAge = (int)$childAgeArray[$che];
                                                    if ($childAge >= $priceVal['FCAT']) {
                                                        $ChildWithBed++;
                                                    } else {
                                                        $ChildWithOutBed++;
                                                    }
                                                }
                                                $childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
                                                $childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
                                            }
                                        }
                                        $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;

                                        $getPriceF = $getPriceF + $getPrice;
                                    }
                                }
                                $exchangerate = 1;
                                if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                    $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                }
                                $getPriceF = $getPriceF * $exchangerate;
                                //echo "<pre>";print_r($getPriceF);die;
                                if ($getPriceF > 0) {
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                                }
                                
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $totalAdultss;
                                $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $totalChildss;
                                //                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
                            }
                            
                        }
                                       
                        if(!empty($checkInDate2) && !empty($checkOutDate2)){
                            if ($priceVal['CreateDate'] >= $checkInDate2 && $priceVal['CreateDate'] < $checkOutDate2) {
                                if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {

                                    $RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
                                    //echo "<pre>";print_r($RoomInfoForRoom);die;
                                    $roomMinAdult = $RoomInfoForRoom['Adult'];
                                    $roomMaxAdult = $RoomInfoForRoom['MAdult'];
                                    $roomMinChild = $RoomInfoForRoom['Child'];
                                    $roomMaxChild = $RoomInfoForRoom['MChild'];
                                    $roomMaxGuest = $RoomInfoForRoom['TGuest'];

                                    $checkPlan['category']['Name'] = $priceVal['Title'];
                                    $checkPlan['category']['HotelName'] = $longJson['Title'];
                                    $checkPlan['category']['Stars'] = $longJson['Stars'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['RoomInfo'] = $RoomInfoForRoom;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
                                    $getPriceF = 0;
                                    $checkR = 0;
                                    $totalAdultss = $totalChildss = 0;
                                    foreach ($roomJsonInfo as $paxKey => $paxVal) {
                                        $adults = (int)$paxVal['Adult'];
                                        $child = (int)$paxVal['Child'];
                                        $infent = (int)$paxVal['Infent'];
                                        $totalAdultss = $totalAdultss + $adults;
                                        $totalChildss = $totalChildss + $child;
                                        $totalAdult = (int) $adults + (int) $child + (int) $infent;

                                        $totalRoomPax = (int) $adults + (int) $child;

                                        if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
                                            $checkR = 1;
                                        }
                                        $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                        $childAgeArray = array();
                                        for ($ic = 1; $ic <= $child; $ic++) {
                                            $childAge = $paxVal['ChildAge_' . $ic];
                                            $childAgeArray[] = $childAge;
                                        }
                                        sort($childAgeArray);

                                        if ($totalRoomPax == 1) {
                                            $adultPrice = (float) $priceVal['NSOC'];
                                        } else if ($totalRoomPax > 1) {
                                            $adultPrice = (float) $priceVal['NDOC'];
                                            $adultsExtra = (int)($adults - $roomMinAdult);
                                            if ($adultsExtra < 0) {
                                                $adultsExtra = 0;
                                            }

                                            $childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
                                            if ($adultsExtra > 0) {
                                                $adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
                                            }

                                            if ($childExtra > 0) {

                                                $ChildWithBed = $ChildWithOutBed = 0;
                                                for ($che = 0; $che < $childExtra; $che++) {
                                                    $childAge = (int)$childAgeArray[$che];
                                                    if ($childAge >= $priceVal['FCAT']) {
                                                        $ChildWithBed++;
                                                    } else {
                                                        $ChildWithOutBed++;
                                                    }
                                                }
                                                $childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
                                                $childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
                                            }
                                        }
                                        $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;

                                        $getPriceF = $getPriceF + $getPrice;
                                    }
                                    $exchangerate = 1;
                                    if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                        $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                    }
                                    $getPriceF = $getPriceF * $exchangerate;
                                    //echo "<pre>";print_r($getPriceF);die;
                                    if ($getPriceF > 0) {
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                                    }

                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $totalAdultss;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $totalChildss;
                                    //                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
                                }
                            }
                        }
                        
                    }
                   
                $countval = array();
                $finalArray = array();
                $Price = $Markup = 0;
                $defaultRoomType = $defaultMealPlanType = '';
                foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                    foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                        $i = 0;

                        foreach ($SUBVal as $keyItem => $checkRNd) {
                            $checkR = array_sum($checkRNd['checkR']);
                            $countval[$i] = count($checkRNd["CreateDate"]);
                            $countvalP[$i] = count($checkRNd["Price"]);
                            if ($countval[$i] == $totalNight && $countvalP[$i] == $totalNight && $checkR == 0) {
                                $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                $finalArray['category']['HotelName'] = $longJson['Title'];
                                $finalArray['category']['Stars'] = $longJson['Stars'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['AminitiesMask'] = $checkRNd['AminitiesMask'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['priceVal'] = $checkRNd['priceVal'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomInfo'] = $checkRNd['RoomInfo'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];

                                $mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                $mmarkupValue = 0;
                                if ((float) $checkRNd['B2BMarkup'] > 0) {
                                    if ($checkRNd['MarkType'] == 1) {
                                        $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                    } else {
                                        $mmarkupValue = $checkRNd['B2BMarkup'];
                                    }
                                }

                                // $mPrice = $mPrice + $mmarkupValue;
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $mPrice;
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'] = $mmarkupValue;
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'] = array_sum($checkRNd['adults']) / count($checkRNd['adults']);
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['child'] = array_sum($checkRNd['child']) / count($checkRNd['child']);

                                if ($Price == 0 || $Price > $mPrice) {
                                    $Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                    $markupValue = 0;
                                    if ((float) $checkRNd['B2BMarkup'] > 0) {
                                        if ($checkRNd['MarkType'] == 1) {
                                            $markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
                                        } else {
                                            $markupValue = $checkRNd['B2BMarkup'];
                                        }
                                    }
                                    //                                    $Price = $Price + $markupValue;
                                    $Markup = $Markup + $markupValue;

                                    $finalArray['category']['defaultRoomType'] = $SUBkey;
                                    $finalArray['category']['defaultMealPlanType'] = $keyItem;
                                    $finalArray['category']['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
                                }
                            }
                            $i++;
                        }
                    }
                }
                } else if (($row['ItemType'] == 1) && ($row['PackageSubType'] == 2)) {
                    $currencyTypeArray = $objHelperGeneral->getCurrencyData();

                    $temp['tourType'] = $longJson['package']['TourTypes']['MarketType']; // get package validity
                    $PackageSubType = isset($row['PackageSubType']) ? $row['PackageSubType'] : '';
                    $PackageType = isset($row['PackageType']) ? $row['PackageType'] : '';
                    $priceJsonViewFile = $objHelperGeneral->getCategoryAndPriceArrayJSON($temp['tourType'], 'B2B', $PackageType, $PackageSubType);
                    $MPTypeArray = $priceJsonViewFile['priceArrJson'];
                    $market = 'B2B';
                    $categoryDetails = $objHelperGeneral->getCategoryAndPriceArray($temp['tourType'], $market, $PackageType, $PackageSubType);
                    if (!empty($categoryDetails) && $temp['package']['IsFixedDeparturePackage'] == 1) {
                        $MPTypeArray = $categoryDetails['priceArrJson'];
                    }

                    $priceArrJson = $categoryDetails['priceArrJson'];
                    $defaultCategoryId = $categoryDetails['defaultCategoryId'];
                    $defaultCategory = isset($categoryDetails['defaultCategory']) ? $categoryDetails['defaultCategory'] : '';
                    $defaultTourType = isset($categoryDetails['defaultTourType']) ? $categoryDetails['defaultTourType'] : 0;
                    $MPType = (!empty($categoryDetails['MPType']) && ($categoryDetails['MPType'] != 'LowestCost') ) ? array_search($categoryDetails['MPType'], unserialize(CONST_MEAL_PLAN_ARR)) : 0;

                    $tourTypeChar = ($defaultTourType == 1) ? 'P' : 'G'; // if private than P else G for Group tour type
                    $displayFinalPrice = $objHelperGeneral->getPackagePriceV2($defaultCategory, $tourTypeChar, $priceArrJson, true); // Param 4: true ( if calculate discounted price )
                    $displayFinalPriceDisc = $objHelperGeneral->getPackagePriceV2($defaultCategory, $tourTypeChar, $priceArrJson); // get with discount included
                    $CurrencySysId = $priceArrJson[$tourTypeChar][$defaultCategory]['price'][0]['Currency'];
                    $getCurrencyType = $currencyTypeArray[$priceArrJson[$tourTypeChar][$defaultCategory]['price'][0]['Currency']];
                    //    echo"<pre>";print_r($categoryDetails);die;
                    $getMonthsArray = $fixedInventoryPriceDateWise = array();
                    $AdultCost = $DefaultAdultCost = $IsfixedInventory = 0;
                    $fixedInventory = $temp['package']['fixedInventory'];
                    $getDefaultTaxSetting = Catabatic_Helper::getDefaultTaxSetting(5);
                    $TaxPercentage = $getDefaultTaxSetting['TaxPercentage'];
                    $TaxType = $getDefaultTaxSetting['TaxType'];
                    $fixedInventoryNew = array();
                    if (!empty($temp['package']['fixedInventory'])) {
                        $inc = 0;
                        foreach ($temp['package']['fixedInventory'] as $key => $value) {
                            $AdultCost = 0;
                            $fixedInventoryNew[$inc]['CityId'] = $key;
                            $fixedInventoryNew[$inc]['CityName'] = $value['CityName'];
                            $fixedInventoryNew[$inc]['FlightInv'] = $value['FlightInv'];
                            foreach ($value['FlightInv'] as $invKey => $invValue) {
                                foreach ($invValue as $invKey1 => $invValue1) {
                                    if (trim($invValue1['AirlineName']) != '' && trim($invValue1['DepartureAirportCode']) != '') {
                                        $IsfixedInventory = 1;
                                    }
                                }
                            }
                            $countDate = 0;

                            foreach ($value['FromDate'] as $key1 => $value1) {
                                if (strtotime($value1['FromDate']) >= strtotime(date('Y-m-d'))) {
                                    $fixedInventoryNew[$inc]['FromDate'][] = $value1['FromDateDMY'];
                                    $exchangerate =  $objHelperGeneral->currencyExchangeRate((int)$value1['CurrencySysId'], (int)$CurrencySysId, 0);
                                    //                                echo "<pre>";print_r($exchangerate);die;
                                    $AdultCost = 0;
                                    if (!empty($value1)) {
                                        $B2BAdultMarkup = (float)$value1['B2BAdultMarkup'] * $exchangerate;
                                        $AdultCost = (float)$value1['AdultCost'] * $exchangerate;


                                        $GSTAmountF = 0;
                                        if ($TaxType == 1) {
                                            $GSTAmountF = ((int)($AdultCost + $B2BAdultMarkup) * ((int)$TaxPercentage / 100));
                                        } else if ($TaxType == 2) {
                                            $GSTAmountF = ((int)$B2BAdultMarkup * ((int)$TaxPercentage / 100));
                                        }
                                        $AdultCost = (int)($B2BAdultMarkup + $AdultCost + $GSTAmountF);
                                        //if ($inc == 0) {
                                        $fixedInventoryPriceDateWise[$value1['FromDate']][$key] = $AdultCost;
                                        //}
                                        if ($inc == 0 && $countDate == 0) {
                                            $DefaultAdultCost = $AdultCost;
                                        }
                                        if ($countDate == 0) {
                                            $fixedInventoryNew[$inc]['TotalPrice'] = (float)($AdultCost);
                                        }

                                        $countDate++;
                                    }
                                }
                            }

                            $inc++;
                        }
                    }
                    $checkCategoryDateArrayDate = $CategoryDateNameArray = $CategoryDateArray = array();

                    foreach ($MPTypeArray['P'] as $key => $value) {

                        if (count($MPTypeArray['P']) > 1) {

                            $keyname = '';
                            if ($key == 'Budget') {

                                $i = 1;
                                $keyname = 'Budget';
                            }
                            if ($key == 'Standard') {

                                $i = 2;
                                $keyname = 'Standard';
                            }
                            if ($key == 'Deluxe') {

                                $i = 3;
                                $keyname = 'Deluxe';
                            }
                            if ($key == 'Luxury') {

                                $i = 4;
                                $keyname = 'Luxury';
                            }
                            if ($key == 'Premium') {
                                $i = 5;

                                $keyname = 'Premium';
                            }

                            //if ($defaultCategoryId == $i) {

                            //                            $CategoryDateArray = array();
                            $checkCategoryDateArray = array();
                            foreach ($MPTypeArray['P'][$key]['price'] as $pkey => $pvalue) {
                                if (!in_array(trim($pvalue['From']), $checkCategoryDateArray)) {
                                    array_push($checkCategoryDateArray, trim($pvalue['From']));
                                    $FromD = explode('-', $pvalue['From']);
                                    $currentdateStr = strtotime(date('Y-m-d'));
                                    $FromDateStr = strtotime($pvalue['From']);
                                    if ($currentdateStr <= $FromDateStr) {
                                        if (!in_array(trim($pvalue['From']), $checkCategoryDateArrayDate)) {
                                            array_push($checkCategoryDateArrayDate, trim($pvalue['From']));
                                            $CategoryDateArray[] = [
                                                'FromDateVal' => $pvalue['From'],
                                                'FromDate' => $FromD[2] . '/' . $FromD[1] . '/' . $FromD[0],
                                            ];
                                        }
                                        $PackageFlightCost =  $fixedInventoryPriceDateWise[$pvalue['From']];
                                        $PricePerPerson = $MPTypeArray['P'][$key]['price'][0]['PricePerPerson'];
                                        $CategoryDateNameArray[$key][] = array('cost' => $PackageFlightCost, 'PricePerPerson' => $PricePerPerson, 'date' => date('d M', strtotime($pvalue['From'])));
                                        $getMonthsArray = array_merge($getMonthsArray, $this->getMonths($pvalue['From'], $pvalue['To']));
                                    }
                                }
                            }
                            //}
                        } else {

                            //                        $CategoryDateArray  = array();
                            $checkCategoryDateArray = array();
                            foreach ($MPTypeArray['P'][$key]['price'] as $pkey => $pvalue) {
                                if (!in_array(trim($pvalue['From']), $checkCategoryDateArray)) {
                                    array_push($checkCategoryDateArray, trim($pvalue['From']));
                                    $FromD = explode('-', $pvalue['From']);
                                    $currentdateStr = strtotime(date('Y-m-d'));
                                    $FromDateStr = strtotime($pvalue['From']);
                                    // echo"<pre>";print_r($checkCategoryDateArrayDate);die;
                                    if ($currentdateStr <= $FromDateStr) {
                                        if (!in_array(trim($pvalue['From']), $checkCategoryDateArrayDate)) {
                                            array_push($checkCategoryDateArrayDate, trim($pvalue['From']));
                                            $CategoryDateArray[] = [
                                                'FromDateVal' => $pvalue['From'],
                                                'FromDate' => $FromD[2] . '/' . $FromD[1] . '/' . $FromD[0],
                                            ];
                                        }
                                        $PackageFlightCost =  $fixedInventoryPriceDateWise[$pvalue['From']];
                                        $PricePerPerson = $MPTypeArray['P'][$key]['price'][0]['PricePerPerson'];
                                        $CategoryDateNameArray[$key][] = array('cost' => $PackageFlightCost, 'PricePerPerson' => $PricePerPerson, 'date' => date('d M Y', strtotime($pvalue['From'])));
                                        $getMonthsArray = array_merge($getMonthsArray, $objHelperGeneral->getMonths($pvalue['From'], $pvalue['To']));
                                    }
                                }
                            }
                        }
                    }
                }

                //    if($keyr == 14){
                //     // 'Price' => (int)($displayFinalPrice + $DefaultAdultCost),

                //         echo"<pre>";print_r($row);die;
                //             }

                      
                if (!empty($finalArray) && ($row['ItemType'] == 2)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'Title' => $longJson['Title'],
                        'ItemType' => $row['ItemType'],
                        'Area' => $longJson['Area'],
                        'PropertyName' => $longJson['PropertyName'],
                        'Details' => $longJson['Details'],
                        'adults' => $adults,
                        'child' => $child,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => (int) $Price,
                        'Markup' => (int) $Markup,
                        'defaultRoomType' => (int) $defaultRoomType,
                        'defaultMealPlanType' => (int) $defaultMealPlanType,
                        'TransferData' => $TransferData,
                        'OtherChargesData' => $OtherChargesData,
                    );
                } else if (empty($finalArray) && ($row['ItemType'] == 1) && ($row['PackageSubType'] == 2)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'mp' => $MPType, 
                        'defaultTourType' => $defaultTourType,
                        'defaultCategoryId' => $defaultCategoryId,
                        'ItemType' => $row['ItemType'],
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'Title' =>  $longJson['package']['Name'],
                        'Area' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
                        'Details' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Brief'],
                        'adults' => $adults,
                        'child' => $child,
                        'infent' => $infent,
                        'Stars' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Star'],
                        'ThumnailImg' => $longJson['package']['ImgThumbnail'],
                        'DetailImg' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['MainImg'],
                        'Address' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
                        'latitude' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Lat'],
                        'longitude' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Long'],
                        'CitySysId' => $longJson['package']['Cities']['City']['0']['CityId'],
                        'Location' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
                        'AccoAminitiesMask' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['AccoAminitiesMask'],
                        'IsFeatured' => $row['IsFeatured'],
                        'Price' => (int)($displayFinalPrice + $DefaultAdultCost),
                        // 'checkPlan' => base64_encode(json_encode($finalArray)),
                        // 'PropertyType' => $longJson['PropertyType'],
                        // 'CheckinTime' => $longJson['CheckinTime'],
                        // 'ContSysId' => $longJson['ContSysId'],
                        // 'PinCode' => $longJson['PinCode'],
                        // 'PropertyName' => $longJson['PropertyName'],
                        'totalNight' => $totalNight,
                        // 'checkInDate' => $checkInDate,
                        // 'checkOutDate' => $checkOutDate,
                        // 'Markup' => (int) $Markup,
                        // 'defaultRoomType' => (int) $defaultRoomType,
                        // 'defaultMealPlanType' => (int) $defaultMealPlanType,
                        'TransferData' => $TransferData,
                        'OtherChargesData' => $OtherChargesData,
                    );
                }
            }
        }  
// echo"<pre>";print_r($response);die('ss');
        return $response;
    }

    function getHotelDetail($hotelRefSysId)
    {
        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        $select = $this->db->select()->from(array("t1" => "tb_travelplan_hotel"));
        $select->joinLeft(array('t2' => 'tb_tbb2c_packages_master'), 't1.HotelId = t2.GTXPkgId', array("LongJsonInfo"));
        $select->joinLeft(array('t3' => 'tb_master_geo_city'), 't1.DestinationId = t3.CityId', array("Title"));
        $select->joinLeft(array('t4' => 'tb_traavelplan_destination'), 't1.destsysId = t4.Id', array("StartDate", "EndDate"));
        $select->where("t1.ID IN(?)", $hotelRefSysId);
        $select->order("t4.Id ASC");
        $getZsontoArray = $this->db->fetchAll($select);
        //       echo "<pre>";print_r($getZsontoArray);die;
        $selectionHotelByOption = array();
        $i = 0;
        $TSys = array();
        foreach ($getZsontoArray as $key => $val) {
            $TPSysId = (int) trim($val['TpsysId']);
            $RoomTypeIdNew = trim($val['RoomTypeName']);
            $RoomTypeId = trim($val['RoomTypeId']);
            $MealPlanId = trim($val['MealPlanId']);

            $MEAL_TYPE = unserialize(MEAL_TYPE);
            foreach ($MEAL_TYPE as $MTKey => $MTValue) {
                if ($val['MealPlanId'] == $MTKey) {
                    $MealTypeIdNew = $MTValue;
                }
            }

            $keyVal = $val['DestinationId'] . "_" . $val['destSeq'];

            $selectionHotelByOption[$keyVal]['Title'] = $val['Title'];
            $longJson = json_decode($val['LongJsonInfo'], TRUE);

            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['Title'] = $longJson['Title'];
            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['Stars'] = $longJson['Stars'];
            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['RoomTypeId'][] = $RoomTypeId;
            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['MealPlanId'][] = $MealPlanId;
            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['RoomTypeName'][] = $RoomTypeIdNew;
            $selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['MealPlanName'][] = $MealTypeIdNew;
            $selectionHotelByOption[$keyVal]['StartDate'] = $val['StartDate'];
            $selectionHotelByOption[$keyVal]['EndDate'] = $val['EndDate'];
            //            $selectionHotelByOption[$keyVal]['RoomTypeId'][] = $val['RoomTypeId'];
            //            $selectionHotelByOption[$keyVal]['MealPlanId'][] = $val['MealPlanId'];
            $TSys['TPSysId'] = $TPSysId;
            // $selectionHotelByOption[$val['DestinationId']]['Hotel'][$val['HotelId']]['Price'][] = $getPrice;
            $i++;
        }

        return $selectionHotelByOption = array(
            "TPSysId" => $TSys,
            "selectionHotelByOption" => $selectionHotelByOption,
        );
    }

    function hotelPriceCalculation($hotelRefSysId, $TPSysId, $CurrencyTitle = '', $CostPP = 0)
    {
        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');

        $selectionHotelByOption = array();
        $select = $this->db->select()->from(array("t1" => "tb_travelplan_hotel"));
        $select->joinLeft(array('t2' => 'tb_tbb2c_packages_master'), 't1.HotelId = t2.GTXPkgId', array("LongJsonInfo"));
        $select->joinLeft(array('t3' => 'tb_master_geo_city'), 't1.DestinationId = t3.CityId', array("Title"));
        $select->joinLeft(array('t4' => 'tb_traavelplan_destination'), 't1.destsysId = t4.Id', array('destName', 'NoDay', 'Seq', 'CitySysId', 'StartDate', 'EndDate'));
        $select->where("t1.HotelId IN(?)", $hotelRefSysId);
        $select->where("t2.IsActive = ? ", 1);
        $select->where("t1.IsMarkForDel = ? ", '0');
        //$select->where("t1.HotelId IN(?)", $hotelRefSysId);
        $select->where("t1.TpsysId = ?", $TPSysId);

        $getZsontoArray = $this->db->fetchAll($select);

        $finalPriceReturn = 0;
        foreach ($getZsontoArray as $key => $val) {
            $longJson = json_decode($val['LongJsonInfo'], TRUE);
            $checkInDate = $val['StartDate'];
            $checkOutDate = $val['EndDate'];
            $RoomTypeId = (int) trim($val['RoomTypeId']);
            $MealPlanId = (int) trim($val['MealPlanId']);
            $adult = $Adult = (int) trim($val['Adult']);
            $AdultExtraBed = (int) trim($val['AdultExtraBed']);
            $ChildWithBed = (int) trim($val['ChildWithBed']);
            $ChildWithOutBed = (int) trim($val['ChildWithOutBed']);
            $child = $ChildWithBed + $ChildWithOutBed;
            $Infent = (int) trim($val['Infent']);
            $totalAdult = (int) $Adult + (int) $AdultExtraBed + (int) $ChildWithBed + (int) $ChildWithOutBed;

            $getPriceBreakup = array();
            $getPriceF = $getPrice = $NDOC = $NSOC = $NEBC = $NEWOBC = $EWOBC = $getMarkupF = 0;
            //            echo "<pre>";
            //            print_r($longJson['PriceAdditional']);
            //            exit;
            $checkDupplicateCreateDates = array();
            foreach ($longJson['PriceAdditional'] as $priceVal) {
                if ((trim($priceVal['EType']) == $RoomTypeId && trim($priceVal['MPType']) == $MealPlanId) && ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate)) {
                    if (!isset($checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']]) || !in_array($priceVal['CreateDate'], $checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']])) {


                        $checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']][] = $priceVal['CreateDate'];
                        $getPriceBreakup[] = $priceVal;
                        $getPrice = $getMarkup = $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
                        if ((float) $priceVal['B2BMarkup'] > 0) {
                            if ($priceVal['MarkType'] == 1) {
                                if ($priceVal['IsAllowMarkupSOC'] == 1) {
                                    $MarkupNSOC =  (float) ((float) $priceVal['NSOC'] * ($priceVal['B2BMarkup']) / 100);
                                }
                                if ($priceVal['IsAllowMarkupDOC'] == 1) {
                                    $MarkupNDOC = (float) ((float) $priceVal['NDOC'] * ($priceVal['B2BMarkup']) / 100);
                                }
                                if ($priceVal['IsAllowMarkupEBC'] == 1) {
                                    $MarkupNEBC = (float) ((float) $priceVal['NEBC'] * ($priceVal['B2BMarkup']) / 100);
                                }
                                if ($priceVal['IsAllowMarkupEWBC'] == 1) {
                                    $MarkupNEWBC = (float) ((float) $priceVal['NEWBC'] * ($priceVal['B2BMarkup']) / 100);
                                }
                                if ($priceVal['IsAllowMarkupEWOBC'] == 1) {
                                    $MarkupNEWOBC = (float) ((float) $priceVal['NEWOBC'] * ($priceVal['B2BMarkup']) / 100);
                                }
                            } else {
                                $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
                            }
                        }
                        if ($adult > 0) {
                            if ($adult == 1) {
                                $getPrice += (float) $priceVal['NSOC'];
                                $getMarkup += $MarkupNSOC;
                            } else {
                                $getPrice += (float) $priceVal['NDOC'];
                                $getMarkup += $MarkupNDOC;
                            }
                        }
                        if ($AdultExtraBed > 0) {
                            $getPrice += (float) $priceVal['NEBC'] * $AdultExtraBed;
                            $getMarkup += $MarkupNEBC * $AdultExtraBed;
                        }
                        if ($child > 0) {
                            if ($ChildWithBed > 0) {
                                $getPrice += (float) $priceVal['NEWBC'] * $ChildWithBed;
                                $getMarkup += $MarkupNEWBC * $ChildWithBed;
                            }
                            if ($ChildWithOutBed > 0) {
                                $getPrice += (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
                                $getMarkup += $MarkupNEWOBC * $ChildWithOutBed;
                            }
                        }
                        $exchangerate = 1;
                        if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                            $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                        }
                        $getPriceF = $getPriceF + $getPrice * $exchangerate;
                        $getMarkupF = $getMarkupF + $getMarkup * $exchangerate;
                        $Currency = $priceVal['Currency'];
                        $NDOC = $priceVal['NDOC'] * $exchangerate;
                        $NSOC = $priceVal['NSOC'] * $exchangerate;
                        $NEBC = $priceVal['NEBC'] * $exchangerate;
                        $NEWOBC = $priceVal['NEWOBC'] * $exchangerate;
                        $NEWBC = $priceVal['NEWBC'] * $exchangerate;

                        $MarkupNSOCC = $MarkupNSOC * $exchangerate;
                        $MarkupNDOCC = $MarkupNDOC * $exchangerate;
                        $MarkupNEBCC = $MarkupNEBC * $exchangerate;
                        $MarkupNEWBCC = $MarkupNEWBC * $exchangerate;
                        $MarkupNEWOBCC = $MarkupNEWOBC * $exchangerate;

                        $SSID = $priceVal['SSID'];
                    }
                }
            }

            $dataArr = array(
                'Price' => $getPriceF + $getMarkupF,
            );
            $totalPrice = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
            $PriceBreakup = array(
                'Currency' => (int) $Currency,
                'NDOC' => (float) $NDOC,
                'NSOC' => (float) $NSOC,
                'NEBC' => (float) $NEBC,
                'NEWOBC' => (float) $NEWOBC,
                'NEWBC' => (float) $NEWBC,
                'MarkupNSOC' => (float) $MarkupNSOCC,
                'MarkupNDOC' => (float) $MarkupNDOCC,
                'MarkupNEBC' => (float) $MarkupNEBCC,
                'MarkupNEWBC' => (float) $MarkupNEWBCC,
                'MarkupNEWOBC' => (float) $MarkupNEWOBCC,
                'Price' => $getPriceF,
                'Markup' => $getMarkupF,
                'SSID' => $SSID,
                'ZoneSysId' => (int)$longJson['ZoneSysId'],
                'Area' => trim($longJson['Area'])
            );
            $finalPriceReturn += $totalPrice;
            if ($CostPP == 1) {
                $selectionHotelByOption['Hotel'][$val['Id']]['Price'] = $PriceBreakup;
                $selectionHotelByOption['Cost'][$val['destSeq']]['markup'][] = $getMarkupF;
                $selectionHotelByOption['Cost'][$val['destSeq']]['price'][] = $getPriceF;
                $selectionHotelByOption['Hotel'][$val['Id']]['Currency'] = $Currency;
            }
        }
        //        echo "<pre>";print_r($selectionHotelByOption);die;
        $selectionHotelByOption['Price'] = $CurrencyTitle . ' ' . round($finalPriceReturn, 2);
        return $selectionHotelByOption;
    }

    public function getTotalDays($TPSysId, $startDate)
    {
        $select = $this->db->select()->from(array("t1" => "tb_traavelplan_destination"), array("Sum(NoDay) as TotalNight"));

        $select->where("t1.TPSysId = ?", $TPSysId);
        //  echo $select;exit;
        $getZsontoArray = $this->db->fetchRow($select);

        $totalDays = (int) $getZsontoArray["TotalNight"] + 1;

        $datetime = new DateTime($startDate);

        $datetime->modify("+$totalDays days");
        $EndData = $datetime->format('Y-m-d');

        $returnArray = array(
            "startDate" => $startDate,
            "endDate" => $EndData,
            "totalDays" => $totalDays,
        );

        return $returnArray;
    }

    public function getItnaryDays($TPSysId)
    {
        $select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "EndContId", "StartCityId","query_type"));
        $select->joinLeft(array('t2' => 'tb_traavelplan_destination'), 't1.TPSysId = t2.TPSysId', array("CitySysId", "NoDay", "destName"));
        $select->joinLeft(array('t3' => 'tb_master_geo_city'), 't2.CitySysId = t3.CityId', array("Title", "ContSysId"));
        $select->where("t1.TPSysId = ?", $TPSysId);
        $select->order("t2.StartDate ASC");
        //  echo $select;exit;
        $getZsontoArray = $this->db->fetchAll($select);
        //        echo "<pre>";print_r($getZsontoArray);die;
        $totalDays = 0;
        $arraycity = array();
        $i = 0;
        foreach ($getZsontoArray as $key => $val) {
            $days = (int) $val['NoDay'];
            $totalDays = $totalDays + $days;
            $arraycity['CitySysId'][$i]['days'] = (int) $days;
            $arraycity['CitySysId'][$i]['cityId'] = (int) $val['CitySysId'];
            $arraycity['CitySysId'][$i]['cityIdName'] = $val['destName'];
            $arraycity['CitySysId'][$i]['ContSysId'] = $val['ContSysId'];
            $arraycity['EndCityId'] = (int) $val['EndCityId'];
            $arraycity['EndContId'] = (int) $val['EndContId'];
            $arraycity['EndCity'] = $val['EndCity'];
            $arraycity['StartCity'] = $val['StartCity'];
            $arraycity['StartCityId'] = $val['StartCityId'];
            $arraycity['TotalAdult'] = (int) $val['TotalAdult'];
            $arraycity['TotalChild'] = (int) $val['TotalChild'];
            $arraycity['TotalInfant'] = (int) $val['TotalInfant'];
            $arraycity['StartDate'] = $val['StartDate'];

            $i++;
        }
        $returnArray = array();
        $d = 0;
        foreach ($arraycity['CitySysId'] as $valueCity) {
            for ($k = 0; $k < $valueCity['days']; $k++) {
                $returnArray[$d]['destSysId'] = $valueCity['cityId'];
                $returnArray[$d]['CityName'] = $valueCity['cityIdName'];
                $returnArray[$d]['ContSysId'] = $valueCity['ContSysId'];
                $d++;
            }
        }
        $returnArray[$d]['destSysId'] = $arraycity['EndCityId'];
        $arraycityEndCity = explode('(', $arraycity['EndCity']);
        $returnArray[$d]['CityName'] = $arraycityEndCity[0];
        $returnArray[$d]['ContSysId'] = $arraycity['EndContId'];

        $returnAr = array(
            "arraycity" => $arraycity,
            "returnArray" => $returnArray,
            "BYOType" => ($getZsontoArray[0]['query_type']) ? (int)$getZsontoArray[0]['query_type'] : 1,
        );

        return $returnAr;
    }

    public function getTravelPlanHistory($TPSysId)
    {
        $select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "StartCityId", "query_type"));
        $select->where("t1.TPSysId = ?", $TPSysId);
        $getZsontoArray = $this->db->fetchAll($select);
        return $getZsontoArray;
        //$select->order("t.StartDate ASC");
    }

    public function getTransportRoute($TPSysId, $StartSysId, $totaldays, $endCityID)
    {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        $select->where("t1.StartCitySysId = ?", $StartSysId);
        $select->where("t1.EndCitySysId = ?", $endCityID);
        $select->where("t1.Noofnights = ?", $totaldays);
        $select->where("t1.IsActive = ?", 1);
        $select->where("t1.IsMarkForDel = '0'");
        // echo $select;
        $getZsontoArray = $this->db->fetchAll($select);
        $select1 = $this->db->select()->from(array("t2" => "tb_traavelplan_destination"), array("CitySysId"));
        $select1->where("t2.TPSysId = ?", $TPSysId);
        $CitySysIdArray = $this->db->fetchAll($select1);
        //        echo "<pre>";print_r($CitySysIdArray);
        //        
        //        echo "<br>";
        //        
        //        echo "<pre>";print_r($getZsontoArray);exit;

        $arrCitySysId = array();
        // $arrCitySysId[0] = 0;
        foreach ($CitySysIdArray as $cityIdKey => $cityIdValue) {
            $arrCitySysId[] = $cityIdValue['CitySysId'];
        }
        // echo "<pre>";print_r($arrCitySysId);
        // echo "<br>";
        $finalArray = array();
        if (!empty($getZsontoArray)) {


            foreach ($getZsontoArray as $key => $routeName) {
                $category = json_decode($routeName['category'], TRUE);
                $cityIncludes = json_decode($routeName['cityIncludes'], TRUE);
                //   echo "<pre>";print_r($category); 
                // echo "<br>";
                $arrdesId = array();
                $testResult = 0;

                foreach ($cityIncludes as $ciKey => $ciValue) {

                    if ($ciValue['DestSysId'] == $arrCitySysId[$ciKey]) {
                        $testResult++;
                    }
                }


                $i = 0;
                if ((count($cityIncludes) == count($arrCitySysId)) && (count($cityIncludes) == $testResult)) {

                    foreach ($category as $catKey => $catValue) {

                        $finalArray[$i] = [
                            'transport_route_id' => $routeName['transport_route_id'],
                            'RouteSysId' => $routeName['RouteSysId'],
                            'RouteName' => $routeName['RouteName'],
                            'SupplierSysId' => $routeName['SupplierSysId'],
                            'Title' => $routeName['Title'],
                            'Description' => $routeName['Description'],
                            'StartCitySysId' => $routeName['StartCitySysId'],
                            'Noofnights' => $routeName['Noofnights'],
                            'CityName' => $routeName['CityName'],
                            'EndCityName' => $routeName['EndCityName'],
                            'RouteVechSysId' => $catValue['RouteVechSysId'],
                            'VehicleSysId' => $catValue['VehicleSysId'],
                            'VehicleTypeSysId' => $catValue['VehicleTypeSysId'],
                            'Cost' => $catValue['Cost'],
                            'Capacity' => $catValue['Capacity'],
                            'CurrencyType' => $catValue['CurrencyType'],
                            'SupplierName' => $catValue['SupplierName'],
                            'VehName' => $catValue['VehName'],
                            'VehicleTypeName' => $catValue['VehicleTypeName'],
                            'CurrencySymbol' => $catValue['CurrencySymbol'],
                            'cityIncludes' => $cityIncludes,
                        ];
                        $i++;
                    }
                }
            }
            // exit;
            // echo "<pre>";print_r($finalArray);exit;
        }

        return $finalArray;
        //$select->order("t2.StartDate ASC");
    }

    public function getTncMasterData()
    {
        $select = $this->db->select()->from(array("t1" => "tb_traavelplan_tnc_master"), '*');

        $tncDataArray = $this->db->fetchAll($select);
        return $tncDataArray;
        //$select->order("t.StartDate ASC");
    }

    public function getAutosuggestTransportRouteData($StartSysId, $endCityID, $noofdays = NULL, $transferType = NULL, $categoryTransport = NULL, $subCategoryTransport = NULL, $StateSysId = 0, $IsType = 0)
    {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        if (isset($categoryTransport) && $categoryTransport == 10 && $StateSysId > 0) {
            if($IsType == 1){
                $select->where("t1.CountrySysId = ?", $StateSysId);
            }else{
                $select->where("t1.StateSysId = ?", $StateSysId);
            } 
            $select->where("t1.TransportSubType = ?", 10);
        } else {
            $select->where("t1.StartCitySysId = ?", $StartSysId);
            //        $select->where("t1.EndCitySysId = ?", $endCityID);
            $select->where("t1.DestinationCitySysId = ?", $endCityID);
            if ($noofdays) {
                $select->where("t1.Noofnights = ?", $noofdays);
            }
            if ($transferType) {
                $select->where("t1.TransportType = ?", $transferType);
            }
            if ($categoryTransport) {
                if ($categoryTransport == 2) {
                    $select->where("t1.TransportSubType LIKE ?", "%,$subCategoryTransport%");
                } else {
                    $select->where("t1.TransportSubType = ?", $categoryTransport);
                }
            }
        }


        $select->where("t1.IsActive = ?", 1);
        $select->where("t1.IsMarkForDel = '0'");
        //        echo $select;die;
        $finalArray = $this->db->fetchAll($select);
        return $finalArray;
        //$select->order("t2.StartDate ASC");
    }

    public function getAutosuggestTransportRouteDataById($transport_route_id)
    {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        $select->where("t1.transport_route_id = ?", $transport_route_id);
        $select->where("t1.IsActive = ?", 1);
        $select->where("t1.IsMarkForDel = '0'");
        $finalArray = $this->db->fetchAll($select);
        return $finalArray;
        //$select->order("t2.StartDate ASC");
    }

    public function getHotelByHotelid($table, $hotelIds, $nights, $ROOMTYPE, $MEALPLANTYPE, $getcheckIn, $roomJsonInfo, $DestinationsIds, $package_destination_night_detail = NULL, $markupDetailsArray = array())
    {
        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        //echo "<pre>";print_r($hotelIds);exit;
        $hotelIds = trim($hotelIds);
        $hotelIdsE = explode(',', $hotelIds);
        $nightsE = explode(',', $nights);
        $ROOMTYPEE = explode(',', $ROOMTYPE);
        $MEALPLANTYPEE = explode(',', $MEALPLANTYPE);
        $package_destination_night_detailE = json_decode($package_destination_night_detail, 1);
        $roomJsonInfo = json_decode($roomJsonInfo, 1);
        //$destinationId = 6000;
        $response = array();
        $sql = "select * FROM $table A WHERE GTXPkgId IN ($hotelIds) AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' ";

        $res = $this->db->query($sql)->fetchAll();

        $resArr = $resFinalArr = array();
        foreach ($res as $resKey => $resVal) {
            $resArr[$resVal['GTXPkgId']] = $resVal;
        }
        foreach ($hotelIdsE as $hKey => $hVal) {
            $resFinalArr[] = $resArr[$hVal];
        }
        //$resFinalArr = $res;
        // echo "<pre>";print_r($resFinalArr);die;

        if (count($resFinalArr) > 0) {
            $inc = 0;
            foreach ($resFinalArr as $rKey => $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                $checkPlan = array();
                $checkInDate = $getcheckIn;
                $NoofNights = $nightsE[$rKey];

                $checkOutDate = date('Y-m-d', strtotime($checkInDate . ' + ' . ($NoofNights) . ' days'));

                $getPriceF = 0;
                foreach ($longJson['PriceAdditional'] as $priceVal) {

                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate && $ROOMTYPEE[$rKey] == $priceVal['EType'] && $MEALPLANTYPEE[$rKey] == $priceVal['MPType']) {
                        $checkPlan['category']['Name'] = $priceVal['Title'];
                        $checkPlan['category']['HotelName'] = $longJson['Title'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['PriceVal'] = $priceVal;
                        $getPriceF = 0;

                        foreach ($roomJsonInfo as $paxKey => $paxVal) {
                            $adults = $paxVal['Adult'];
                            $child = $paxVal['Child'];
                            $infent = $paxVal['infent'];
                            $totalAdult = (int) $adults + (int) $child + (int) $infent;
                            $Adult = (int) $adults;
                            $ChildWithOutBed = 0;
                            $ChildWithOutBed = (int) $child;
                            switch ($totalAdult) {
                                case 1: {
                                        if ((int) $priceVal['NSOC'] > 0) {
                                            $getPrice = (float) $priceVal['NSOC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        }
                                        break;
                                    }
                                case 2: {
                                        if ($Adult == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else if ($ChildWithOutBed == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else if (($Adult + $ChildWithOutBed) == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                case 3: {
                                        if ($Adult == 3) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
                                        } else if ($ChildWithOutBed == 3) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                case 4: {
                                        if ($ChildWithOutBed + $Adult == 4) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                default: {
                                        $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWBC'];
                                        break;
                                    }
                            }
                            $getPriceF = $getPriceF + $getPrice;
                        }

                        $exchangerate = 1;
                        if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
                            $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], 1, 0);
                        }
                        $getPriceF = $getPriceF * $exchangerate;
                        if ($_SESSION['User']['data']['EmailId'] == 'mangal@catpl.co.in') {
                            //                                echo "<pre>";print_r($priceVal).'--';
                            //                                echo "<pre>";print_r($getPriceF).',';
                            //echo "<pre>";print_r(Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray)).',';
                        }
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                        //                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
                    }
                }

                $datetime1 = new DateTime($checkInDate);
                $datetime2 = new DateTime($checkOutDate);
                $interval = $datetime1->diff($datetime2);
                $totalNight = (int) $interval->format('%a');
                $countval = array();
                $finalArray = array();
                $Price = 0;
                //                if($_SESSION['User']['data']['EmailId'] == 'mangal@catpl.co.in'){
                //                    echo "<pre>";print_r($checkPlan);die;
                //                }
                foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                    foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                        $i = 0;
                        foreach ($SUBVal as $keyItem => $checkRNd) {
                            $countval[$i] = count($checkRNd["CreateDate"]);
                            if ($countval[$i] == $totalNight) {
                                $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                $finalArray['category']['HotelName'] = $longJson['Title'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['PriceVal'] = $checkRNd['PriceVal'];
                                $Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $Price;
                            }
                            $i++;
                        }
                    }
                }

                if (!empty($finalArray)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'NoofNights' => $NoofNights,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'adults' => $adults,
                        'child' => $child,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'IsFeatured' => $row['IsFeatured'],
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'ROOMTYPE' => $ROOMTYPEE[$rKey],
                        'MEALPLANTYPE' => $MEALPLANTYPEE[$rKey],
                        'isPrice' => 1,
                        'Price' => $Price,
                    );
                } else {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'NoofNights' => $package_destination_night_detailE[$inc]['nights'],
                        'GTXPkgId' => 121212 + $inc,
                        'DestinationId' => $package_destination_night_detailE[$inc]['cityId'],
                        'Destinations' => $package_destination_night_detailE[$inc]['title'],
                        'ContSysId' => $package_destination_night_detailE[$inc]['CountryIds'],
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'isPrice' => 0,
                        'Price' => 0,
                    );
                }
                $getcheckIn = $checkOutDate;
                $inc++;
            }
        }
        return $response;
    }

    public function getHotelDetailByHotelIds($table, $hotelIds)
    {
        $sql = "select * FROM $table A WHERE GTXPkgId IN ($hotelIds) AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' ";
        $res = $this->db->query($sql)->fetchAll();
        return $res;
    }
    public function getHotelDetailBypackIds($table, $packIds)
    {
        $sql = "select * FROM $table A WHERE GTXPkgId IN ($packIds) AND ItemType = 1 AND PackageSubType = '2' AND IsActive = '1' and IsMarkForDel = '0' ";
        $res = $this->db->query($sql)->fetchAll();
        return $res;
    }
    public function getTableDataByIds($table, $column, $Ids)
    {
        //$where = "AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0'"; 
        $sql = "select * FROM $table A WHERE RouteSysId IN ($Ids)";
        $res = $this->db->query($sql)->fetchAll();
        return $res;
    }

    public function getTransportRouteDataByTransportSubType($StartSysId, $endCityID, $noofdays, $TransportSubType = 1)
    {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        $select->where("t1.StartCitySysId = ?", $StartSysId);
        $select->where("t1.EndCitySysId = ?", $endCityID);
        $select->where("t1.Noofnights = ?", $noofdays);
        $select->where("t1.TransportSubType IN ($TransportSubType)");
        $select->where("t1.IsActive = ?", 1);
        $select->where("t1.IsMarkForDel = '0'");
        $finalArray = $this->db->fetchAll($select);
        return $finalArray;
        //$select->order("t2.StartDate ASC");
    }

    public function getHotelByPackageId($PkgSysId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL)
    {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        $PkgSysId = trim($PkgSysId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';
        if ($filterType == 1) {
            $order = 'StarRating ASC';
        } else if ($filterType == 2) {
            $order = 'StarRating DESC';
        }
        $response = array();
        $sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";

        $res = $this->db->query($sql)->fetchAll();

        $totalAdult = (int) $adults + (int) $child + (int) $infent;
        $Adult = (int) $adults;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        if (count($res) > 0) {
            foreach ($res as $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                $checkPlan = array();

                foreach ($longJson['PriceAdditional'] as $priceVal) {

                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
                        $checkPlan['category']['Name'] = $priceVal['Title'];
                        $checkPlan['category']['HotelName'] = $longJson['Title'];
                        $checkPlan['category']['Stars'] = $longJson['Stars'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                        $getPriceF = 0;
                        foreach ($roomJsonInfo as $paxKey => $paxVal) {
                            $adults = $paxVal['Adult'];
                            $child = $paxVal['Child'];
                            $infent = $paxVal['infent'];
                            $totalAdult = (int) $adults + (int) $child + (int) $infent;
                            $Adult = (int) $adults;
                            $ChildWithOutBed = 0;
                            $ChildWithOutBed = (int) $child;

                            switch ($totalAdult) {
                                case 1: {
                                        if ((int) $priceVal['NSOC'] > 0) {
                                            $getPrice = (float) $priceVal['NSOC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        }
                                        break;
                                    }
                                case 2: {
                                        if ($Adult == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else if ($ChildWithOutBed == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else if (($Adult + $ChildWithOutBed) == 2) {
                                            $getPrice = (float) $priceVal['NDOC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                case 3: {
                                        if ($Adult == 3) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
                                        } else if ($ChildWithOutBed == 3) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                case 4: {
                                        if ($ChildWithOutBed + $Adult == 4) {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
                                        } else {
                                            $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
                                        }
                                        break;
                                    }
                                default: {
                                        $getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWBC'];
                                        break;
                                    }
                            }
                            $getPriceF = $getPriceF + $getPrice;
                        }
                        $exchangerate = 1;
                        if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
                            $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], 1, 0);
                        }
                        $getPriceF = $getPriceF * $exchangerate;
                        //echo "<pre>";print_r($exchangerate);die;
                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'] = Catabatic_Helper::calculateMarkup($getPriceF);
                        //echo "<pre>";print_r($getPrice);die;
                    }
                }

                $datetime1 = new DateTime($checkInDate);
                $datetime2 = new DateTime($checkOutDate);
                $interval = $datetime1->diff($datetime2);
                $totalNight = (int) $interval->format('%a');
                $countval = array();
                $finalArray = array();
                $Price = 0;
                foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                    foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                        $i = 0;
                        foreach ($SUBVal as $keyItem => $checkRNd) {
                            $countval[$i] = count($checkRNd["CreateDate"]);
                            if ($countval[$i] == $totalNight) {
                                $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                $finalArray['category']['HotelName'] = $longJson['Title'];
                                $finalArray['category']['Stars'] = $longJson['Stars'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
                                $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $checkRNd['Price'];
                                if ($Price == 0 || $Price > $checkRNd['Price']) {
                                    $Price = $checkRNd['Price'];
                                }
                            }
                            $i++;
                        }
                    }
                }
                // echo "<pre>";print_r($finalArray);die;
                if (!empty($finalArray)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'adults' => $adults,
                        'child' => $child,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                    );
                }
            }
        }
        return $response;
    }

    function getAllTransportRouteTransportSubType($StartSysId = 0, $endCityID = 0, $TransportSubType = '')
    {

        $where = '1=1';
        if ($TransportSubType == 10) {
            if ($StartSysId > 0) {
                $sqlCity = "SELECT StateSysId FROM `tb_master_geo_city` where CityId = '$StartSysId' and IsMarkForDel = '0' and IsActive = '1' ORDER BY `StateSysId` DESC";
                $resCity = $this->db->query($sqlCity)->fetchAll();
                $StateSysId = (int) $resCity[0]['StateSysId'];
                $where .= ' AND StateSysId = ' . $StateSysId . ' AND TransportSubType = 10';
            }
        } else {
            if ($StartSysId > 0 && $endCityID > 0) {
                $where .= ' AND StartCitySysId = ' . $StartSysId . ' AND DestinationCitySysId = ' . $endCityID;
            }
            if (!empty($TransportSubType)) {
                if ($TransportSubType == 1) {
                    $where .= ' AND TransportSubType = 1 ';
                } else if ($TransportSubType == 3) {
                    $where .= ' AND TransportSubType = 3 ';
                } else {
                    $where .= ' AND TransportSubType != 1';
                }
            }
        }


        $sql = "SELECT TransportSubType,TransportType FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
        $res = $this->db->query($sql)->fetchAll();
        $TransportSubTypeArr = $TransportTypeArr = array();
        foreach ($res as $key => $val) {
            $TransportSubType = ltrim($val['TransportSubType'], '2,');
            $TransportSubTypeArr[] = $TransportSubType;
            $TransportTypeArr[$val['TransportType']] = ($TransportTypeArr[$val['TransportType']]) ? $TransportTypeArr[$val['TransportType']] . ',' . $TransportSubType : $TransportSubType;
        }
        $TransportSubTypeArr = array_unique(explode(',', implode(',', $TransportSubTypeArr)));
        return array('TransportSubTypeArr' => $TransportSubTypeArr, 'TransportTypeArr' => $TransportTypeArr);
    }

    public function checkAvailableTransportCategory($StartSysId, $endCityID)
    {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        $select->where("t1.StartCitySysId = ?", $StartSysId);
        //        $select->where("t1.EndCitySysId = ?", $endCityID);
        $select->where("t1.DestinationCitySysId = ?", $endCityID);

        $select->where("t1.IsActive = ?", 1);
        $select->where("t1.IsMarkForDel = '0'");
        //echo $select;die;
        $finalArray = $this->db->fetchAll($select);
        return $finalArray;
        //$select->order("t2.StartDate ASC");
    }

    function getAllItinerayTransportRouteTransportSubType($StartCityId = 0, $endCityIDs = '')
    {

        $where = '1=1';
        if ($StartCityId > 0 && !empty($endCityIDs)) {
            $where .= ' AND StartCitySysId = ' . $StartCityId . ' AND DestinationCitySysId IN(' . $endCityIDs . ')';
        }
        $where .= ' AND TransportSubType = 1 ';

        $sql = "SELECT * FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
        $res = $this->db->query($sql)->fetchAll();
        return $res;
    }

    public function getHotelByPackageIdNew($PkgSysId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $hotelRoomMealArray = array()) {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
//        $AgencyMarkupData = $objHelperGeneral->getAgencyMarkupData(2);
//        $MarkUpType = $AgencyMarkupData['MarkUpType'];
//        $MarkUp = $AgencyMarkupData['MarkUp'];
//        $markupDetailsArray = array('MarkType'=>$MarkUpType,'MarkValue'=>$MarkUp);
        $PkgSysId = trim($PkgSysId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';
        if ($filterType == 1) {
            $order = 'StarRating ASC';
        } else if ($filterType == 2) {
            $order = 'StarRating DESC';
        }
        $response = array();
        $sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";

        $res = $this->db->query($sql)->fetchAll();

        $totalAdult = (int) $adults + (int) $child + (int) $infent;
        $AllAdult = (int) $adults;
        $AllChild = (int) $child;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $rooms = count($roomJsonInfo);
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        $currencyTypeArray = $objHelperGeneral->getCurrencyData();
        $datetime1 = new DateTime($checkInDate);
        $datetime2 = new DateTime($checkOutDate);
        $interval = $datetime1->diff($datetime2);
        $totalNight = (int) $interval->format('%a');
        if (count($res) > 0) {
            foreach ($res as $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                
                $checkPlan = array();

                $RoomInfo = $roomJsonInfoArr = $roomJsonInfoArrfinal = array();
                $RoomImages = $longJson['RoomImages'];
                                
                $calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
                
                $RoomInfo = $calculateRoomJsonPax['RoomInfo'];
                
                $Promotions = $longJson['Promotions']; 
                $roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];

                $Currency = $longJson['PriceAdditional'][0]['Currency'];
                $CurrencyType = $currencyTypeArray[$Currency];
                $ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
                $TransferData = $OtherChargesData = array();
                foreach($ExtraServices as $key => $value){
                    if($value['ServiceType'] == 1){
                        $TransferData[] = $value;
                    }else{
                        $OtherChargesData[] = $value;
                    } 
                }
                $MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
                if($totalNight<$MinStayNights){
                    $longJson['PriceAdditional'] = array();
                }   
                  
                foreach ($longJson['PriceAdditional'] as $priceVal) {
                                
                    $checkPlan['category']['Name'] = $priceVal['Title'];
                    $checkPlan['category']['HotelName'] = $longJson['Title'];
                    $checkPlan['category']['Stars'] = $longJson['Stars'];
                    if($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114'){
                        if($priceVal['MPTitle'] == 'EP'){
                            $priceVal['MPTitle'] = 'RO';
                        }
                        if($priceVal['MPTitle'] == 'CP'){
                            $priceVal['MPTitle'] = 'BB';
                        }
                        if($priceVal['MPTitle'] == 'AP'){
                            $priceVal['MPTitle'] = 'FB';
                        }
                        if($priceVal['MPTitle'] == 'MAP'){
                            $priceVal['MPTitle'] = 'HB';
                        }
                    }
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];

                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
                        if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {


                            $getPriceF = 0;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                            $roomJsonInfoArrfinalArr = array();
                            if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) {
                                $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
                            } else {
                                $roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
                            }
                            
                            $roomMinAdult = $RoomInfo[$priceVal['EType']]['Adult'];
                            $roomMaxAdult = $RoomInfo[$priceVal['EType']]['MAdult'];
                            $roomMinChild = $RoomInfo[$priceVal['EType']]['Child'];
                            $roomMaxChild = $RoomInfo[$priceVal['EType']]['MChild'];
                            $roomMaxGuest = $RoomInfo[$priceVal['EType']]['TGuest'];    
                            if($longJson['PropertyType'] == 11){
                                    if (((int) $adults + (int) $child) > $roomMaxGuest) {
                                        $checkR = 1;
                                    }
                                    $getPrice = (float) $priceVal['NDOC'];
                                
                                    $exchangerate = 1;
                                    if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                        $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                    }
                                    $getPriceF = $getPrice * $exchangerate;

                                    if($getPriceF>0){
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                                    }

                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
                            }else{
                                foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
                                    foreach ($paxVal1 as $paxKey => $paxVal) {

                                        $adults = $paxVal['Adult'];
                                        $child = $paxVal['Child'];
                                        $infent = $paxVal['infent'];
                                        $totalAdult  = (int) $adults + (int) $child + (int) $infent;
                                        $totalRoomPax = (int) $adults + (int) $child;
                                        $checkR = 0;
                                        if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
                                            $checkR = 1;
                                        }
                                        $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                        $childAgeArray = array();
                                        for ($ic = 1; $ic <= $child; $ic++) {
                                            $childAge = $paxVal['ChildAge_' . $ic];
                                            $childAgeArray[] = $childAge;
                                        }
                                        sort($childAgeArray);

                                        if($totalRoomPax == 1){
                                            $adultPrice = (float) $priceVal['NSOC'];
                                        }else if($totalRoomPax>1){
                                            $adultPrice = (float) $priceVal['NDOC'];
                                            $adultsExtra = (int)($adults - $roomMinAdult);
                                            if($adultsExtra<0){$adultsExtra = 0;}

                                            $childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
                                            if($adultsExtra>0){
                                                $adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
                                            }

                                            if($childExtra>0){

                                                $ChildWithBed = $ChildWithOutBed = 0;
                                                for($che = 0; $che < $childExtra; $che++){
                                                    $childAge = (int)$childAgeArray[$che];
                                                    if ($childAge >= $priceVal['FCAT']) {
                                                        $ChildWithBed++;
                                                    }else{
                                                        $ChildWithOutBed++;
                                                    }
                                                }
                                                $childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
                                                $childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
                                            }   
                                        }
                                        $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;

                                        //echo " P:".$getPrice;die;
                                        $exchangerate = 1;
                                        if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                            $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                        }
                                        $getPriceF = $getPrice * $exchangerate;

                                        if($getPriceF>0){
                                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                                        }

                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
                                    }
                                }
                            }
                        }
                    }
                }
                
                $CurrenctDate = date('Y-m-d H:i:s');                
                $PromotionsArray = array();
                if(!empty($Promotions)){
                    foreach($Promotions as $key => $value){ 
                        if(strtotime($value['FromBookingDate']) <= strtotime($CurrenctDate) && strtotime($value['ToBookingDate']) >= strtotime($CurrenctDate)){
                                
                            if($value['IsStayPeriod'] == 1){  
                                $FromStayPeriod = strtotime($value['FromStayPeriod']);
                                $ToStayPeriod = strtotime($value['ToStayPeriod']); 
//                                echo  $checkInDate.'-'.$checkOutDate2;
//                                echo "<pre>";print_r($value);die;
                                if(strtotime($checkInDate) >= $FromStayPeriod && strtotime($checkOutDate) <= $ToStayPeriod){
                                    if(!empty($value['MealType'])){
                                        $PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
                                    }else{
                                        $PromotionsArray[$value['RoomType']]['Room'][] = $value;    
                                    }
                                } 
                            }else{
                                if(!empty($value['MealType'])){
                                    $PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
                                }else{
                                    $PromotionsArray[$value['RoomType']]['Room'][] = $value;    
                                }
                            }
                            
                        }   
                    }
                }
                
                $MealPlanRate = $longJson['MealPlanRate']; 
                $categorySUB = array(); 
                $RateType = isset($longJson['RateType']) ? (int)$longJson['RateType'] : 0;
                $DefaultMeal = 9;
                    if($RateType == 2){
                        $DefaultMeal = 6;
                    }
                if(!empty($MealPlanRate)){
                    
                    
                    //echo "<pre>";print_r($RateType);die;
                    foreach($checkPlan['category']['SUB'] as $sKey => $sVal){
                        $sVal = $sVal[$DefaultMeal];   
                        if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
                            foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
                                $sVal['Promotion'] = $rrValue;
                                $categorySUB[$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;   
                            } 
                        }else{
                            $categorySUB[$sKey][$DefaultMeal][0] = $sVal; 
                        }    
                        
                        foreach($MealPlanRate as $mKey => $mVal){ 
                            $sValNew = $sVal; 
                            $sValNew['Title'] = $mVal['meal_type_name'];
                            $sValNew['MPTypeId'] = $mVal['meal_type'];
                            $PriceMArray = array();
                            foreach($sVal['Price'] as $ppKey => $ppVal){
                                $AdultCost = $sVal['adults'][$ppKey] * $mVal['adult_cost'];
                                $ChildCost = $sVal['child'][$ppKey] * $mVal['child_cost'];
                                $MealPrice = $AdultCost + $ChildCost;
                                $PriceMArray[] = round((float)($MealPrice * $sVal['exchangerate']),2);
                            }
                            $sValNew['MealPrice'] = $PriceMArray;
                            
                            if(isset($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']]) && !empty($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']])){
                                foreach($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']] as $rrKey => $rrValue){ 
                                    $sValNew['Promotion'] = $rrValue;
                                    $categorySUB[$sKey][$mVal['meal_type']][$rrValue['AccomPromotionsSysId']] = $sValNew;
                                }
                            }else{
                                if(!empty($sValNew['Promotion'])){
                                    $categorySUB[$sKey][$mVal['meal_type']][$sValNew['Promotion']['AccomPromotionsSysId']] = $sValNew;
                                }else{
                                    $categorySUB[$sKey][$mVal['meal_type']][0] = $sValNew;
                                }  
                            } 
                        }
                    }
                    
                    $checkPlan['category']['SUB'] = $categorySUB;
                }else { 
                    
                    foreach($checkPlan['category']['SUB'] as $sKey => $sVal){
                        foreach($sVal as $sKey1 => $sVal1){ 
                                
                            if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
                                foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
                                    $sVal1['Promotion'] = $rrValue;
                                    $categorySUB[$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1;   
                                } 
                            }else{ 
                                if(isset($PromotionsArray[$sKey]['Meal'][$sKey1]) && !empty($PromotionsArray[$sKey]['Meal'][$sKey1])){
                                    foreach($PromotionsArray[$sKey]['Meal'][$sKey1] as $rrKey => $rrValue){
                                        $sVal1['Promotion'] = $rrValue;
                                        $categorySUB[$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1; 
                                    }  
                                }else{
                                    $categorySUB[$sKey][$sKey1][0] = $sVal1; 
                                }  
                            }
                        }
                    }
                    $checkPlan['category']['SUB'] = $categorySUB;          
                }
                 
                              
                $countval = array();
                $finalArray = array();
                $Price = 0;
                $Markup = 0;
//                echo "<pre>";print_r($hotelRoomMealArray);die;
                if (!empty($hotelRoomMealArray)) {
                    foreach ($hotelRoomMealArray as $rmkey => $rmvalue) { 
                        $SUBkey = $rmvalue['RoomType'];
                        $keyItem = $rmvalue['MealPlan'];
                        $ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];
                        $AccomPromotionsSysId = $rmvalue['AccomPromotionsSysId'];
                        
                        if($AccomPromotionsSysId > 0){
                            $checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem][$AccomPromotionsSysId])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem][$AccomPromotionsSysId] : array();
                        }else{
                            $checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem][0])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem][0] : $checkPlan['category']['SUB'][$SUBkey][$keyItem];
                        }
//     if($this->_session->data['EmailId'] == 'prince@hellogtx.com'){
//                                  echo "<pre>";print_r($rmvalue);
//                                  echo "<pre>";print_r($checkPlan['category']['SUB']);
//                                  echo "<pre>";print_r($checkRNd);die;
//                                }                   
//                        if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
                        if (count($checkRNd["CreateDate"]) == $totalNight) {
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];

                            $finalArray['category']['Name'] = $longJson['Title'];
                            $finalArray['category']['HotelName'] = $longJson['Title'];
                            $finalArray['category']['Stars'] = $longJson['Stars'];
                            $date = $checkInDate.'~~'.$checkOutDate;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['CheckIn'] = $checkInDate;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['CheckOut'] = $checkOutDate;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomNo'] = $rmkey + 1;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['StayNo'] = 1;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['BookingType'] = $checkRNd['BookingType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Promotion'] = $checkRNd['Promotion'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['ExtraServiceSysId'] = $ExtraServiceSysId;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults'])/count($checkRNd['Price']))*$totalNight ;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child'])/count($checkRNd['Price']))*$totalNight ;

                            $mPrice = (array_sum($checkRNd['Price'])/count($checkRNd['Price'])) * $totalNight;
                            $mMealPrice = (isset($checkRNd['MealPrice']) && !empty($checkRNd['MealPrice'])) ? (array_sum($checkRNd['MealPrice'])/count($checkRNd['MealPrice'])) * $totalNight : 0;
                            $mmarkupValue = 0;
                            if ((float) $checkRNd['B2BMarkup'] > 0) {
                                if ($checkRNd['MarkType'] == 1) {
                                    $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                } else {
                                    $mmarkupValue = $checkRNd['B2BMarkup'];
                                }
                            }
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'][] = $mPrice;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['MealPrice'][] = $mMealPrice;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
                            $Price = $Price + $mPrice;
                            $Markup = $Markup + $mmarkupValue;
                        }
                    }
                } else {   
//                    if($this->_session->data['EmailId'] == 'prince@hellogtx.com'){
//                                  echo "<pre>";print_r($checkPlan);die;
//                                }
                    foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                        foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                            $i = 0;
                            
                            foreach ($SUBVal as $keyItem => $checkRNdArr) {
                               
                                if(isset($checkRNdArr['Title'])){
                                    $checkRNdArr[0] = $checkRNdArr;
                                } 
                                
                                foreach ($checkRNdArr as $keyItemKey => $checkRNd) { 
                                    
                                    $countval[$i] = count($checkRNd["CreateDate"]);
                                    $checkR = array_sum($checkRNd['checkR']);
                                    $mPrice = 0;
                                    //if(count($checkRNd['Price']) == $totalNight){
                                        $mPrice = array_sum($checkRNd['Price']) / $totalNight;
                                        $mMealPrice = (isset($checkRNd['MealPrice']) && !empty($checkRNd['MealPrice'])) ? array_sum($checkRNd['MealPrice']) / $totalNight : 0;
                                    //}
 
                                    if(($mPrice+$mMealPrice)>0 && $checkR == 0){ 
                                        if ($countval[$i] == $totalNight) {
                                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['CreateDate'][] = $checkRNd['CreateDate'];
                                        }
                                        $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                        $finalArray['category']['HotelName'] = $longJson['Title'];
                                        $finalArray['category']['Stars'] = $longJson['Stars'];

                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Title'] = $checkRNd['Title'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['ETitle'] = $checkRNd['ETitle'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['EType'] = $checkRNd['EType'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MPTypeId'] = $checkRNd['MPTypeId'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['roomInfo'] = $checkRNd['roomInfo'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MarkType'] = $checkRNd['MarkType'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['SSID'] = $checkRNd['SSID'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['BookingType'] = $checkRNd['BookingType'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Promotion'] = $checkRNd['Promotion'];
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['adults'][] = (array_sum($checkRNd['adults'])/$totalNight);
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['child'][] = (array_sum($checkRNd['child'])/$totalNight);

                                        $mmarkupValue = 0;
                                        if ((float) $checkRNd['B2BMarkup'] > 0) {
                                            if ($checkRNd['MarkType'] == 1) {
                                                $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                            } else {
                                                $mmarkupValue = $checkRNd['B2BMarkup'];
                                            }
                                        }
                                        
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Price'][] = $mPrice;
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MealPrice'][] = $mMealPrice;
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Markup'][] = $mmarkupValue;
                                        if ($Price == 0 || $Price > ($mPrice + $mMealPrice)) {
                                            $Price = array_sum($checkRNd['Price']) / $totalNight;
                                            $markupValue = 0;
                                            if ((float) $checkRNd['B2BMarkup'] > 0) {
                                                if ($checkRNd['MarkType'] == 1) {
                                                    $markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
                                                } else {
                                                    $markupValue = $checkRNd['B2BMarkup'];
                                                }
                                            }
                                            $Price = $Price + $markupValue;
                                            $Markup = $Markup + $markupValue;
                                        }


                                    }
                                    $i++;
                                }
                            }
                        }
                    }
                }
//                echo "<pre>";print_r($finalArray);die;
                if (!empty($finalArray)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'BookingTerms' => $longJson['BookingTerms'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'Markup' => $Markup,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                        'RoomInfo' => $RoomInfo,
                        'TransferData' => $TransferData,
                        'OtherChargesData' => $OtherChargesData,
                        'VillaRoomInfo' => $longJson['VillaRoomInfo'],
                        'VillaRoomImages' => $longJson['VillaRoomImages'],
                    );
                } else {
                    $response[] = array(
                        'destIndex' => 1,
                        'refId' => 0,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'BookingTerms' => $longJson['BookingTerms'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => array(),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                    );
                }
            }
        }
        return $response;
    }
    public function getHotelByPackageIdNewSplit($PkgSysId, $table, $checkInDate, $checkOutDate,$checkInDate2, $checkOutDate2, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $hotelRoomMealArray = array()) {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
                                
        $PkgSysId = trim($PkgSysId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';
        if ($filterType == 1) {
            $order = 'StarRating ASC';
        } else if ($filterType == 2) {
            $order = 'StarRating DESC';
        }
        $response = array();
        $sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";

        $res = $this->db->query($sql)->fetchAll();

        $totalAdult = (int) $adults + (int) $child + (int) $infent;
        $AllAdult = (int) $adults;
        $AllChild = (int) $child;
        
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $rooms = count($roomJsonInfo);
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        $currencyTypeArray = $objHelperGeneral->getCurrencyData();
        $datetime1 = new DateTime($checkInDate);
        $datetime2 = new DateTime($checkOutDate);
        $interval = $datetime1->diff($datetime2);
        $totalNight = $totalNight1 = (int) $interval->format('%a');
        if($checkInDate2 != '' && $checkOutDate2 != ''){
            $datetime12 = new DateTime($checkInDate2);
            $datetime22 = new DateTime($checkOutDate2);
            $interval2 = $datetime12->diff($datetime22);
            $totalNight2 = (int) $interval2->format('%a');
            if($totalNight2 > 0){
                $totalNight = $totalNight + $totalNight2;
            }
        }
        
        
        
        if (count($res) > 0) {
            foreach ($res as $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);
                
                $checkPlan = array();

                $roomJsonInfoArr = $roomJsonInfoArrfinal = array();
                $RoomImages = $longJson['RoomImages'];
                               
                $calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages);
                
                $RoomInfo = $calculateRoomJsonPax['RoomInfo'];
                
                $Promotions = $longJson['Promotions']; 
                $roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
    
                $Currency = $longJson['PriceAdditional'][0]['Currency'];
                $CurrencyType = $currencyTypeArray[$Currency];
                $ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
                $TransferData = $OtherChargesData = array();
                foreach($ExtraServices as $key => $value){
                    if($value['ServiceType'] == 1){
                        $TransferData[] = $value;
                    }else{
                        $OtherChargesData[] = $value;
                    } 
                }
                $MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
                if($totalNight1<$MinStayNights){
                    $longJson['PriceAdditional'] = array();
                }   
                if ($totalNight2 > 0 && $totalNight2 < $MinStayNights) {
                    $longJson['PriceAdditional'] = array();
                }
                foreach ($longJson['PriceAdditional'] as $priceVal) {
                                
                    $checkPlan['category']['Name'] = $priceVal['Title'];
                    $checkPlan['category']['HotelName'] = $longJson['Title'];
                    $checkPlan['category']['Stars'] = $longJson['Stars'];
                    if($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114'){
                        if($priceVal['MPTitle'] == 'EP'){
                            $priceVal['MPTitle'] = 'RO';
                        }
                        if($priceVal['MPTitle'] == 'CP'){
                            $priceVal['MPTitle'] = 'BB';
                        }
                        if($priceVal['MPTitle'] == 'AP'){
                            $priceVal['MPTitle'] = 'FB';
                        }
                        if($priceVal['MPTitle'] == 'MAP'){
                            $priceVal['MPTitle'] = 'HB';
                        }
                    }
                    
                    $fromToDate = $checkInDate.'~~'.$checkOutDate;
                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
                        if (!isset($checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {

                            
                            $getPriceF = 0;
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                            $roomJsonInfoArrfinalArr = array();
//                            if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) { // commented because we can not change pax now
//                                $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
//                            } else {
                                $roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
//                            }
                            
                            $roomMinAdult = $RoomInfo[$priceVal['EType']]['Adult'];
                            $roomMaxAdult = $RoomInfo[$priceVal['EType']]['MAdult'];
                            $roomMinChild = $RoomInfo[$priceVal['EType']]['Child'];
                            $roomMaxChild = $RoomInfo[$priceVal['EType']]['MChild'];
                            $roomMaxGuest = $RoomInfo[$priceVal['EType']]['TGuest'];    
                            
                            foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
                                foreach ($paxVal1 as $paxKey => $paxVal) {
                                        
                                    $adults = $paxVal['Adult'];
                                    $child = $paxVal['Child'];
                                    $infent = $paxVal['infent'];
                                    $totalAdult  = (int) $adults + (int) $child + (int) $infent;
                                    $totalRoomPax = (int) $adults + (int) $child;
                                    $checkR = 0;
                                    if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
                                        $checkR = 1;
                                    }
                                    $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                    $childAgeArray = array();
                                    for ($ic = 1; $ic <= $child; $ic++) {
                                        $childAge = $paxVal['ChildAge_' . $ic];
                                        $childAgeArray[] = $childAge;
                                    }
                                    sort($childAgeArray);
                                    
                                    if($totalRoomPax == 1){
                                        $adultPrice = (float) $priceVal['NSOC'];
                                    }else if($totalRoomPax>1){
                                        $adultPrice = (float) $priceVal['NDOC'];
                                        $adultsExtra = (int)($adults - $roomMinAdult);
                                        if($adultsExtra<0){$adultsExtra = 0;}
                                        
                                        $childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
                                        if($adultsExtra>0){
                                            $adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
                                        }
                                        
                                        if($childExtra>0){
                                            
                                            $ChildWithBed = $ChildWithOutBed = 0;
                                            for($che = 0; $che < $childExtra; $che++){
                                                $childAge = (int)$childAgeArray[$che];
                                                if ($childAge >= $priceVal['FCAT']) {
                                                    $ChildWithBed++;
                                                }else{
                                                    $ChildWithOutBed++;
                                                }
                                            }
                                            $childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
                                            $childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
                                        }   
                                    }
                                    $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
                                    
                                    //echo " P:".$getPrice;die;
                                    $exchangerate = 1;
                                    if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                        $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                    }
                                    $getPriceF = $getPrice * $exchangerate;
                                    
                                    if($getPriceF>0){
                                        $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Price'][$paxKey1][] = $getPriceF;
                                    }
                                    
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['checkR'][$paxKey1][] = $checkR;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['adults'][$paxKey1][] = $adults;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['child'][$paxKey1][] = $child;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
                                }
                            }
                            
                        }
                    } 
                    
                    $fromToDate = $checkInDate2.'~~'.$checkOutDate2; 
                    if ($priceVal['CreateDate'] >= $checkInDate2 && $priceVal['CreateDate'] < $checkOutDate2) {
                        if (!isset($checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {

                            
                            $getPriceF = 0;
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                            $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                            $roomJsonInfoArrfinalArr = array();
//                            if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) {
//                                $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
//                            } else {
                                $roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
//                            }
                            
                            $roomMinAdult = $RoomInfo[$priceVal['EType']]['Adult'];
                            $roomMaxAdult = $RoomInfo[$priceVal['EType']]['MAdult'];
                            $roomMinChild = $RoomInfo[$priceVal['EType']]['Child'];
                            $roomMaxChild = $RoomInfo[$priceVal['EType']]['MChild'];
                            $roomMaxGuest = $RoomInfo[$priceVal['EType']]['TGuest'];    
                            
                            foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
                                foreach ($paxVal1 as $paxKey => $paxVal) {
                                        
                                    $adults = $paxVal['Adult'];
                                    $child = $paxVal['Child'];
                                    $infent = $paxVal['infent'];
                                    $totalAdult  = (int) $adults + (int) $child + (int) $infent;
                                    $totalRoomPax = (int) $adults + (int) $child;
                                    $checkR = 0;
                                    if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
                                        $checkR = 1;
                                    }
                                    $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                    $childAgeArray = array();
                                    for ($ic = 1; $ic <= $child; $ic++) {
                                        $childAge = $paxVal['ChildAge_' . $ic];
                                        $childAgeArray[] = $childAge;
                                    }
                                    sort($childAgeArray);
                                    
                                    if($totalRoomPax == 1){
                                        $adultPrice = (float) $priceVal['NSOC'];
                                    }else if($totalRoomPax>1){
                                        $adultPrice = (float) $priceVal['NDOC'];
                                        $adultsExtra = (int)($adults - $roomMinAdult);
                                        if($adultsExtra<0){$adultsExtra = 0;}
                                        
                                        $childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
                                        if($adultsExtra>0){
                                            $adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
                                        }
                                        
                                        if($childExtra>0){
                                            
                                            $ChildWithBed = $ChildWithOutBed = 0;
                                            for($che = 0; $che < $childExtra; $che++){
                                                $childAge = (int)$childAgeArray[$che];
                                                if ($childAge >= $priceVal['FCAT']) {
                                                    $ChildWithBed++;
                                                }else{
                                                    $ChildWithOutBed++;
                                                }
                                            }
                                            $childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
                                            $childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
                                        }   
                                    }
                                    $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
                                    
                                    //echo " P:".$getPrice;die;
                                    $exchangerate = 1;
                                    if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                        $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                    }
                                    $getPriceF = $getPrice * $exchangerate;
                                    
                                    if($getPriceF>0){
                                        $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Price'][$paxKey1][] = $getPriceF;
                                    }
                                    
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['checkR'][$paxKey1][] = $checkR;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['adults'][$paxKey1][] = $adults;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['child'][$paxKey1][] = $child;
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
                                    $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
                                }
                            }
                        }
                    }
                }
                if(count($checkPlan['category']['SUB']) < 2){
                    $checkPlan['category']['SUB'] = array();
                }
                
                $CurrenctDate = date('Y-m-d H:i:s');                
                $PromotionsArray = array();
                if(!empty($Promotions)){
                    foreach($Promotions as $key => $value){ 
                        if(strtotime($value['FromBookingDate']) <= strtotime($CurrenctDate) && strtotime($value['ToBookingDate']) >= strtotime($CurrenctDate)){
                            if($value['IsStayPeriod'] == 1){  
                                $FromStayPeriod = strtotime($value['FromStayPeriod']);
                                $ToStayPeriod = strtotime($value['ToStayPeriod']); 
//                                echo  $checkInDate.'-'.$checkOutDate2;
//                                echo "<pre>";print_r($value);die;
                                if(strtotime($checkInDate) >= $FromStayPeriod && strtotime($checkOutDate2) <= $ToStayPeriod){
                                    if(!empty($value['MealType'])){
                                        $PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
                                    }else{
                                        $PromotionsArray[$value['RoomType']]['Room'][] = $value;    
                                    }
                                } 
                            }else{
                                if(!empty($value['MealType'])){
                                    $PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
                                }else{
                                    $PromotionsArray[$value['RoomType']]['Room'][] = $value;    
                                }
                            } 
                        }   
                    }
                }
                
                $MealPlanRate = $longJson['MealPlanRate']; 
                $categorySUB = array(); 
                $RateType = isset($longJson['RateType']) ? (int)$longJson['RateType'] : 0;
                
                if(!empty($MealPlanRate)){
                    $DefaultMeal = 9;
                    if($RateType == 2){
                        $DefaultMeal = 6;
                    }
                    
                    
                    foreach($checkPlan['category']['SUB'] as $sdKey => $sdVal){
                        foreach($sdVal as $sKey => $sVal){
                            
                            $sVal = $sVal[$DefaultMeal];   
                            if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
                                foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
                                    $sVal['Promotion'] = $rrValue;
                                    $categorySUB[$sdKey][$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;   
                                } 
                            }else{
                                $categorySUB[$sdKey][$sKey][$DefaultMeal][0] = $sVal; 
                            }    
                            
                            foreach($MealPlanRate as $mKey => $mVal){ 
                                $sValNew = $sVal; 
                                $sValNew['Title'] = $mVal['meal_type_name'];
                                $sValNew['MPTypeId'] = $mVal['meal_type'];
                                $PriceMArray = array();
                                foreach($sVal['Price'] as $roomppKey => $roomppVal){
                                    foreach($roomppVal as $ppKey => $ppVal){ 
                                        $AdultCost = $sVal['adults'][$roomppKey][$ppKey] * $mVal['adult_cost'];
                                        $ChildCost = $sVal['child'][$roomppKey][$ppKey] * $mVal['child_cost'];
                                        $MealPrice = $AdultCost + $ChildCost;
                                        $PriceMArray[$roomppKey][] = round((float)($ppVal + ($MealPrice * $sVal['exchangerate'])),2);
                                    }
                                }
                                $sValNew['Price'] = $PriceMArray;

                                if(isset($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']]) && !empty($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']])){
                                    foreach($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']] as $rrKey => $rrValue){ 
                                        $sValNew['Promotion'] = $rrValue;
                                        $categorySUB[$sdKey][$sKey][$mVal['meal_type']][$rrValue['AccomPromotionsSysId']] = $sValNew;
                                    }
                                }else{
                                    if(!empty($sValNew['Promotion'])){
                                        $categorySUB[$sdKey][$sKey][$mVal['meal_type']][$sValNew['Promotion']['AccomPromotionsSysId']] = $sValNew;
                                    }else{
                                        $categorySUB[$sdKey][$sKey][$mVal['meal_type']][0] = $sValNew;
                                    }  
                                } 
                            }
                        }
                    }
                    
                    $checkPlan['category']['SUB'] = $categorySUB;
                }else {
                    
                    foreach($checkPlan['category']['SUB'] as $sdKey => $sdVal){
                        foreach($sdVal as $sKey => $sVal){
                            foreach($sVal as $sKey1 => $sVal1){  
                                if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
                                    foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
                                        $sVal['Promotion'] = $rrValue;
                                        $categorySUB[$sdKey][$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;   
                                    } 
                                }else if(isset($PromotionsArray[$sKey]['Meal'][$sKey1]) && !empty($PromotionsArray[$sKey]['Meal'][$sKey1])){
                                    
                                    foreach($PromotionsArray[$sKey]['Meal'][$sKey1] as $rrKey => $rrValue){
                                        $sVal1['Promotion'] = $rrValue;
                                        $categorySUB[$sdKey][$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1; 
                                    }  
                                }else{
                                    $categorySUB[$sdKey][$sKey][$sKey1][0] = $sVal1; 
                                }  
                            }    
                        }
                    }
                    $checkPlan['category']['SUB'] = $categorySUB;          
                } 
                
                
                $countval = array();
                $finalArray = array();
                $Price = 0;
                $Markup = 0;
                                
                if (!empty($hotelRoomMealArray)) {
                                
                    foreach ($hotelRoomMealArray as $rmkey => $rmvalue) { 
                        
                        $CheckIn = $rmvalue['CheckIn'];
                        $CheckOut = $rmvalue['CheckOut'];
                        $date = $CheckIn.'~~'.$CheckOut;
                        $RoomNo = (int)$rmvalue['RoomNo'];
                        $StayNo = (int)$rmvalue['StayNo'];
                        $SUBkey = $rmvalue['RoomType'];
                        $keyItem = $rmvalue['MealPlan'];
                        $ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];
                        $AccomPromotionsSysId = $rmvalue['AccomPromotionsSysId'];
                        
                        if($AccomPromotionsSysId > 0){
                            $checkRNd = (isset($checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][$AccomPromotionsSysId])) ? $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][$AccomPromotionsSysId] : array();
                        }else{
                            $checkRNd = (isset($checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][0])) ? $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][0] : $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem];
                        }
                        $totalNight = count($checkRNd["CreateDate"]);
                        //echo "<pre>";print_r($checkRNd);
//                        if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
                        if (count($checkRNd["CreateDate"]) == $totalNight) {
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CreateDate'][] = $checkRNd['CreateDate'];

                            $finalArray['category']['Name'] = $longJson['Title'];
                            $finalArray['category']['HotelName'] = $longJson['Title'];
                            $finalArray['category']['Stars'] = $longJson['Stars'];

                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CheckIn'] = $CheckIn;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CheckOut'] = $CheckOut; 
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['RoomNo'] = $RoomNo;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['StayNo'] = $StayNo;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Title'] = $checkRNd['Title'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['ETitle'] = $checkRNd['ETitle'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['EType'] = $checkRNd['EType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['MPTypeId'] = $checkRNd['MPTypeId'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['roomInfo'] = $checkRNd['roomInfo'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['MarkType'] = $checkRNd['MarkType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['SSID'] = $checkRNd['SSID'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['BookingType'] = $checkRNd['BookingType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Promotion'] = $checkRNd['Promotion'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['ExtraServiceSysId'] = $ExtraServiceSysId;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['adults'][] = (array_sum($checkRNd['adults'][$RoomNo])/count($checkRNd['Price'][$RoomNo]))*$totalNight ;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['child'][] = (array_sum($checkRNd['child'][$RoomNo])/count($checkRNd['Price'][$RoomNo]))*$totalNight ; 

                            $mPrice = (array_sum($checkRNd['Price'][$RoomNo]) /count($checkRNd['Price'][$RoomNo])) * $totalNight;
                            $mmarkupValue = 0;
                            if ((float) $checkRNd['B2BMarkup'] > 0) {
                                if ($checkRNd['MarkType'] == 1) {
                                    $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                } else {
                                    $mmarkupValue = $checkRNd['B2BMarkup'];
                                }
                            }
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Price'][] = $mPrice;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Markup'][] = $mmarkupValue;
                            $Price = $Price + $mPrice;
                            $Markup = $Markup + $mmarkupValue;
                        }
                    }
                } else {   
                    
                    foreach ($checkPlan['category']['SUB'] as $checkhotelkey => $checkHotelPrice) {
                        
                        foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                            $i = 0;
                            
                            foreach ($SUBVal as $keyItem => $checkRNdArr) {
                                
                                if(isset($checkRNdArr['Title'])){
                                    $checkRNdArr[0] = $checkRNdArr;
                                } 
                                foreach ($checkRNdArr as $keyItemKey => $checkRNd) { 
                                    
                                    foreach ($checkRNd['Price'] as $roomKey => $RoomNd) {    
                                    
                                    $countval[$i] = $totalNight = count($checkRNd["CreateDate"]);
                                    $checkR = array_sum($checkRNd['checkR'][$roomKey]);
                                
                                    //if(count($checkRNd['Price']) == $totalNight){
                                        $mPrice = array_sum($checkRNd['Price'][$roomKey]) / $totalNight;
                                    //}

                                    if($mPrice>0 && $checkR == 0){ 
                                        if ($countval[$i] == $totalNight) {
                                            $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['CreateDate'][] = $checkRNd['CreateDate'];
                                        }
                                        $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                        $finalArray['category']['HotelName'] = $longJson['Title'];
                                        $finalArray['category']['Stars'] = $longJson['Stars'];

                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Title'] = $checkRNd['Title'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['ETitle'] = $checkRNd['ETitle'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['EType'] = $checkRNd['EType'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['MPTypeId'] = $checkRNd['MPTypeId'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['roomInfo'] = $checkRNd['roomInfo'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['MarkType'] = $checkRNd['MarkType'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['SSID'] = $checkRNd['SSID'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['BookingType'] = $checkRNd['BookingType'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Promotion'] = $checkRNd['Promotion'];
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['adults'][] = (array_sum($checkRNd['adults'][$roomKey])/$totalNight);
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['child'][] = (array_sum($checkRNd['child'][$roomKey])/$totalNight);

                                        $mmarkupValue = 0;
                                        if ((float) $checkRNd['B2BMarkup'] > 0) {
                                            if ($checkRNd['MarkType'] == 1) {
                                                $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                            } else {
                                                $mmarkupValue = $checkRNd['B2BMarkup'];
                                            }
                                        }
                                        
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Price'][] = $mPrice;
                                        $finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Markup'][] = $mmarkupValue;
                                        if ($Price == 0 || $Price > $checkRNd['Price']) {
                                            $Price = array_sum($checkRNd['Price']) / $totalNight;
                                            $markupValue = 0;
                                            if ((float) $checkRNd['B2BMarkup'] > 0) {
                                                if ($checkRNd['MarkType'] == 1) {
                                                    $markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
                                                } else {
                                                    $markupValue = $checkRNd['B2BMarkup'];
                                                }
                                            }
                                            $Price = $Price + $markupValue;
                                            $Markup = $Markup + $markupValue;
                                        } 
                                    }
                                    $i++;
                                }
                                } 
                            }
                        }
                    } 
                }
                
                if (!empty($finalArray)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'BookingTerms' => $longJson['BookingTerms'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'Markup' => $Markup,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                        'RoomInfo' => $RoomInfo,
                        'TransferData' => $TransferData,
                        'OtherChargesData' => $OtherChargesData,
                    );
                } else {
                    $response[] = array(
                        'destIndex' => 1,
                        'refId' => 0,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'BookingTerms' => $longJson['BookingTerms'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => array(),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                    );
                }
            }
        }
        return $response;
    }
    public function getHotelByPackageIdNewSplitOld($PkgSysId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $hotelRoomMealArray = array())
    {

        $objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
        //        $AgencyMarkupData = $objHelperGeneral->getAgencyMarkupData(2);
        //        $MarkUpType = $AgencyMarkupData['MarkUpType'];
        //        $MarkUp = $AgencyMarkupData['MarkUp'];
        //        $markupDetailsArray = array('MarkType'=>$MarkUpType,'MarkValue'=>$MarkUp);
        $PkgSysId = trim($PkgSysId);
        //$destinationId = 6000;
        $order = 'StarRating ASC';
        if ($filterType == 1) {
            $order = 'StarRating ASC';
        } else if ($filterType == 2) {
            $order = 'StarRating DESC';
        }
        $response = array();
        $sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";

        $res = $this->db->query($sql)->fetchAll();
        
        $totalAdult = (int) $adults + (int) $child + (int) $infent;
        $AllAdult = (int) $adults;
        $AllChild = (int) $child;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE); 
        $rooms = count($roomJsonInfo);
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        $currencyTypeArray = $objHelperGeneral->getCurrencyData();
        $datetime1 = new DateTime($checkInDate);
        $datetime2 = new DateTime($checkOutDate);
        $interval = $datetime1->diff($datetime2);
        $totalNight = (int) $interval->format('%a');
        if (count($res) > 0) {
            foreach ($res as $row) {
                $longJsonDecode = $row['LongJsonInfo'];
                $longJson = json_decode($longJsonDecode, TRUE);

                $checkPlan = array();

                $RoomInfo = $roomJsonInfoArr = $roomJsonInfoArrfinal = array();
                $RoomImages = $longJson['RoomImages'];
                $Promotions = $longJson['Promotions']; 

                $calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
                $RoomInfo = $calculateRoomJsonPax['RoomInfo'];
                $roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
                
                $Currency = $longJson['PriceAdditional'][0]['Currency'];
                $CurrencyType = $currencyTypeArray[$Currency];
                $ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
                $TransferData = $OtherChargesData = array();
                foreach($ExtraServices as $key => $value){
                    if($value['ServiceType'] == 1){
                        $TransferData[] = $value;
                    }else{
                        $OtherChargesData[] = $value;
                    } 
                }
                $MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
                if($totalNight<$MinStayNights){
                    $longJson['PriceAdditional'] = array();
                }
                
                foreach ($longJson['PriceAdditional'] as $priceVal) {


                    $checkPlan['category']['Name'] = $priceVal['Title'];
                    $checkPlan['category']['HotelName'] = $longJson['Title'];
                    $checkPlan['category']['Stars'] = $longJson['Stars'];
                    if ($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114') {
                        if ($priceVal['MPTitle'] == 'EP') {
                            $priceVal['MPTitle'] = 'RO';
                        }
                        if ($priceVal['MPTitle'] == 'CP') {
                            $priceVal['MPTitle'] = 'BB';
                        }
                        if ($priceVal['MPTitle'] == 'AP') {
                            $priceVal['MPTitle'] = 'FB';
                        }
                        if ($priceVal['MPTitle'] == 'MAP') {
                            $priceVal['MPTitle'] = 'HB';
                        }
                    }
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
                    
                    if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
                        if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {


                            $getPriceF = 0;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
                            $roomJsonInfoArrfinalArr = array();
                            if (!empty($hotelRoomMealArray)) {
                                $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
                            } else {
                                $roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
                            }

                            $roomMinAdult = $RoomInfo[$priceVal['EType']]['Adult'];
                            $roomMaxAdult = $RoomInfo[$priceVal['EType']]['MAdult'];
                            $roomMinChild = $RoomInfo[$priceVal['EType']]['Child'];
                            $roomMaxChild = $RoomInfo[$priceVal['EType']]['MChild'];
                            $roomMaxGuest = $RoomInfo[$priceVal['EType']]['TGuest'];

                            foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
                                foreach ($paxVal1 as $paxKey => $paxVal) {

                                    $adults = $paxVal['Adult'];
                                    $child = $paxVal['Child'];
                                    $infent = $paxVal['infent'];
                                    $totalAdult  = (int) $adults + (int) $child + (int) $infent;
                                    $totalRoomPax = (int) $adults + (int) $child;
                                    $checkR = 0;
                                    if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
                                        $checkR = 1;
                                    }
                                    $adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
                                    $childAgeArray = array();
                                    for ($ic = 1; $ic <= $child; $ic++) {
                                        $childAge = $paxVal['ChildAge_' . $ic];
                                        $childAgeArray[] = $childAge;
                                    }
                                    sort($childAgeArray);

                                    if ($totalRoomPax == 1) {
                                        $adultPrice = (float) $priceVal['NSOC'];
                                    } else if ($totalRoomPax > 1) {
                                        $adultPrice = (float) $priceVal['NDOC'];
                                        $adultsExtra = (int)($adults - $roomMinAdult);
                                        if ($adultsExtra < 0) {
                                            $adultsExtra = 0;
                                        }

                                        $childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
                                        if ($adultsExtra > 0) {
                                            $adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
                                        }

                                        if ($childExtra > 0) {

                                            $ChildWithBed = $ChildWithOutBed = 0;
                                            for ($che = 0; $che < $childExtra; $che++) {
                                                $childAge = (int)$childAgeArray[$che];
                                                if ($childAge >= $priceVal['FCAT']) {
                                                    $ChildWithBed++;
                                                } else {
                                                    $ChildWithOutBed++;
                                                }
                                            }
                                            $childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
                                            $childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
                                        }
                                    }
                                    $getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;

                                    //echo " P:".$getPrice;die;
                                    $exchangerate = 1;
                                    if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                                        $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                                    }
                                    $getPriceF = $getPrice * $exchangerate;
                                    if ($getPriceF > 0) {
                                        $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
                                    }

                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
                                    $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
                                }
                            }
                        }
                    }
                }



                $countval = array();
                $finalArray = array();
                $Price = 0;
                $Markup = 0;

                if (!empty($hotelRoomMealArray)) {
                    foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
                        $SUBkey = $rmvalue['RoomType'];
                        $keyItem = $rmvalue['MealPlan'];
                        $ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];

                        $checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem] : array();

                        //                        if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
                        if (count($checkRNd["CreateDate"]) == $totalNight) {
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];

                            $finalArray['category']['Name'] = $longJson['Title'];
                            $finalArray['category']['HotelName'] = $longJson['Title'];
                            $finalArray['category']['Stars'] = $longJson['Stars'];

                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['ExtraServiceSysId'] = $ExtraServiceSysId;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults']) / count($checkRNd['Price'])) * $totalNight;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child']) / count($checkRNd['Price'])) * $totalNight;

                            $mPrice = (array_sum($checkRNd['Price']) / count($checkRNd['Price'])) * $totalNight;
                            $mmarkupValue = 0;
                            if ((float) $checkRNd['B2BMarkup'] > 0) {
                                if ($checkRNd['MarkType'] == 1) {
                                    $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                } else {
                                    $mmarkupValue = $checkRNd['B2BMarkup'];
                                }
                            }
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'][] = $mPrice;
                            $finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
                            $Price = $Price + $mPrice;
                            $Markup = $Markup + $mmarkupValue;
                        }
                    }
                } else {

                    foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
                        foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
                            $i = 0;

                            foreach ($SUBVal as $keyItem => $checkRNd) {

                                $countval[$i] = count($checkRNd["CreateDate"]);
                                $checkR = array_sum($checkRNd['checkR']);
                                $mPrice = 0;
                                //                                if(count($checkRNd['Price']) == $totalNight){
                                $mPrice = array_sum($checkRNd['Price']) / $totalNight;
                                //                                }
                                if ($mPrice > 0 && $checkR == 0) {
                                    if ($countval[$i] == $totalNight) {
                                        $finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
                                    }
                                    $finalArray['category']['Name'] = $checkHotelPrice['Title'];
                                    $finalArray['category']['HotelName'] = $longJson['Title'];
                                    $finalArray['category']['Stars'] = $longJson['Stars'];

                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults']) / $totalNight);
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child']) / $totalNight);

                                    $mmarkupValue = 0;
                                    if ((float) $checkRNd['B2BMarkup'] > 0) {
                                        if ($checkRNd['MarkType'] == 1) {
                                            $mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
                                        } else {
                                            $mmarkupValue = $checkRNd['B2BMarkup'];
                                        }
                                    }

                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'][] = $mPrice;
                                    $finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
                                    if ($Price == 0 || $Price > $checkRNd['Price']) {
                                        $Price = array_sum($checkRNd['Price']) / $totalNight;
                                        $markupValue = 0;
                                        if ((float) $checkRNd['B2BMarkup'] > 0) {
                                            if ($checkRNd['MarkType'] == 1) {
                                                $markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
                                            } else {
                                                $markupValue = $checkRNd['B2BMarkup'];
                                            }
                                        }
                                        $Price = $Price + $markupValue;
                                        $Markup = $Markup + $markupValue;
                                    }
                                }
                                $i++;
                            }
                        }
                    }
                }
                //echo "<pre>";print_r($finalArray);die;              
                if (!empty($finalArray)) {
                    $response[] = array(
                        'destIndex' => $destIndex,
                        'refId' => $refId,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => base64_encode(json_encode($finalArray)),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'Markup' => $Markup,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                        'RoomInfo' => $RoomInfo,
                        'TransferData' => $TransferData,
                        'OtherChargesData' => $OtherChargesData,
                    );
                } else {
                    $response[] = array(
                        'destIndex' => 1,
                        'refId' => 0,
                        'GTXPkgId' => $row['GTXPkgId'],
                        'PkgSysId' => $row['PkgSysId'],
                        'DestinationId' => $row['DestinationsId'],
                        'Destinations' => $row['Destinations'],
                        'CountryIds' => $row['CountryIds'],
                        'Countries' => $row['Countries'],
                        'Title' => $longJson['Title'],
                        'Details' => $longJson['Details'],
                        'adults' => $AllAdult,
                        'child' => $AllChild,
                        'infent' => $infent,
                        'Stars' => $longJson['Stars'],
                        'ThumnailImg' => $longJson['ThumnailImg'],
                        'Images' => $longJson['Images'],
                        'DetailImg' => $longJson['DetailImg'],
                        'PropertyType' => $longJson['PropertyType'],
                        'CheckinTime' => $longJson['CheckinTime'],
                        'CheckOutTime' => $longJson['CheckOutTime'],
                        'Address' => $longJson['Address'],
                        'latitude' => $longJson['latitude'],
                        'longitude' => $longJson['longitude'],
                        'CitySysId' => $longJson['CitySysId'],
                        'ContSysId' => $longJson['ContSysId'],
                        'PinCode' => $longJson['PinCode'],
                        'Location' => $longJson['Location'],
                        'checkPlan' => array(),
                        'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
                        'SplitStayNights' => $longJson['SplitStayNights'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                    );
                }
            }
        }
        return $response;
    }

    public function calculateRoomJsonPax($roomJsonInfo, $Adult, $Child, $RoomInfo, $RoomImages = array(), $hotelRoomMealArray = array())
    {

        $RoomInfo1 = $roomJsonInfoArr = $roomJsonInfoArrfinal = $RoomImagesArray = array();
        foreach ($RoomImages as $key => $value) {
            $RoomImagesArray[$value['ItemSysId']][] = $value['Details'];
        }


        foreach ($RoomInfo as $RoomInfoVal) {
            $searchAdult = $Adult;
            $totalCh = $searchChild = $Child;
            $searchTotal = $Adult + $Child;

            $roomMinAdult = $RoomInfoVal['Adult'];
            $roomMaxAdult = $RoomInfoVal['MAdult'];

            $roomMinChild = $RoomInfoVal['Child'];
            $roomMaxChild = $RoomInfoVal['MChild'];

            $roomMaxGuest = $RoomInfoVal['TGuest'];

            $RoomType = $RoomInfoVal['RoomType'];
            $RoomInfoVal['RoomImage'] = $RoomImagesArray[$RoomInfoVal['ItemSysId']];
            $RoomInfo1[$RoomInfoVal['RoomType']] = $RoomInfoVal;

            $rooms = count($roomJsonInfo);

            $checkRoomAvailability = 0;
            $roomJsonInfoNew = $roomJsonInfoRM = array();
            $IM1 = 0;
            foreach ($roomJsonInfo as $key => $val) {
                $TotalAdultChild = $val['Adult'] + $val['Child'];

                // if($val['Adult'] >= $roomMinAdult && $val['Adult'] <= $roomMaxAdult && $val['Child'] >= $roomMinChild && $val['Child'] <= $roomMaxChild && $TotalAdultChild <= $roomMaxGuest){ 
                if ($val['Adult'] <= $roomMaxAdult && $val['Child'] <= $roomMaxChild && $TotalAdultChild <= $roomMaxGuest) {
                    $checkRoomAvailability++;
                }
                $val['RoomType'] = (isset($hotelRoomMealArray[$key - 1]['RoomType'])) ? $hotelRoomMealArray[$key - 1]['RoomType'] : $key;
                $val['MealPlan'] = (isset($hotelRoomMealArray[$key - 1]['MealPlan'])) ? $hotelRoomMealArray[$key - 1]['MealPlan'] : $key;
                $roomJsonInfoNew[$key] = $val;
                $roomJsonInfoRM[$val['MealPlan']][] = $val;
                $IM1++;
            }

            if ($checkRoomAvailability == $rooms) {
                $roomJsonInfoArr[$RoomType] = $roomJsonInfoRM;
            } else {
                $roomJsonInfoArr[$RoomType][] = $roomJsonInfo;
                //                for ($k = 1; $k <= $searchTotal; $k++) {
                //                    $MealPlan = (isset($hotelRoomMealArray[$k-1]['MealPlan']) && !empty($hotelRoomMealArray[$k-1]['MealPlan'])) ? (int)$hotelRoomMealArray[$k-1]['MealPlan'] : $k;
                //                    if ($searchAdult > 0) {
                //                        $roomJsonInfoArr[$RoomType][$MealPlan][] = array('Adult'=>($searchAdult >= $roomMinAdult) ? $roomMinAdult : $searchAdult);
                //                        $searchAdult = $searchAdult - $roomMinAdult;
                //                    }
                //                    if ($searchChild > 0) {
                //                        $roomJsonInfoArr[$RoomType][$MealPlan][] = array('Child'=> ($searchChild >= $roomMinChild) ? $roomMinChild : $searchChild);
                //                        $searchChild = $searchChild - $roomMinChild;
                //                    }
                //                }
            }
        }

        $roomJsonInfoArrfinal = $roomJsonInfoArr;
        $return = array('RoomInfo' => $RoomInfo1, 'roomJsonInfoArrfinal' => $roomJsonInfoArrfinal, 'roomJsonInfo' => $roomJsonInfoNew);

        return $return;
    }

    public function getMarkupHotel()
    {
        if ($this->SecurityKey) {
            $dataArray = array(
                'PlanType' => 2,
                'MasterAgencySysId' => $this->MasterAgencySysId,
                'B2BAgencySysIdKey' => $this->SecurityKey,
                'B2CAgencySysIdKey' => SECURITYKEY,
            );

            $model = new Gtxwebservices_Model_Webservices();
            $result = $model->getMarkupAndServiceTaxNew($dataArray);

            $response = json_decode($result, true);
            return $response;
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function getMealsData($city_id, $mealsCategory, $mealsType, $TotalAdult, $TotalChild)
    {
        $mealNameArray = array();
        if ($this->SecurityKey && !empty($city_id)) {
            $mealsTypeUtl = ($mealsType > 0) ? '&meal_type=' . $mealsType : '';
            $mealsCategoryUrl = ($mealsCategory > 0) ? '&meal_category=' . $mealsCategory : '';
            $url = 'https://admin.globaltravelexchange.com/api/v1/restaurant/meals/?city_id=' . $city_id . $mealsTypeUtl . $mealsCategoryUrl;
            $curl = curl_init();

            curl_setopt_array($curl, array(
                CURLOPT_URL => $url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'GET',
                CURLOPT_HTTPHEADER => array(
                    'SECURITYKEY: ' . SECURITYKEY
                ),
            ));

            $mealData = curl_exec($curl);
            curl_close($curl);
            //          $mealData = '[{"id":12,"restaurant_name":"Hera Sweet","is_preferred":true,"address":"Harsh Vihar","city_id":19543,"supplier_name":10390,"restaurant_meals":{"0":{"id":128,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"1":{"id":129,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"2":{"id":130,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"3":{"id":131,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"4":{"id":132,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"5":{"id":133,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"6":{"id":134,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"7":{"id":135,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"8":{"id":136,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"9":{"id":137,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"10":{"id":138,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"11":{"id":139,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"12":{"id":140,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"13":{"id":141,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"14":{"id":142,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"15":{"id":143,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"16":{"id":144,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"17":{"id":145,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"18":{"id":146,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"19":{"id":147,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"20":{"id":148,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"21":{"id":149,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"22":{"id":150,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"23":{"id":151,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"24":{"id":152,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"25":{"id":153,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"26":{"id":154,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0}}},{"id":16,"restaurant_name":"Hera Sweet","is_preferred":true,"address":"Jaipur ","city_id":12995,"supplier_name":10390,"restaurant_meals":{"0":{"id":159,"meal_name":"Raj Thali","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":500.0,"child_sales":500.0},"1":{"id":160,"meal_name":"Raj Thali","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":500.0,"child_sales":500.0},"2":{"id":161,"meal_name":"Raj Thali","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":500.0,"child_sales":500.0}}}]';
            $mealDataArray = json_decode($mealData, 1);
            $checkMealId = array();
            foreach ($mealDataArray as $key => $value) {
                $restaurant_meals = $value['restaurant_meals'];
                $supplier_name = $value['supplier_name'];

                foreach ($restaurant_meals as $rKey => $rValue) {
                    if ($mealsCategory > 0 && $mealsType > 0) {
                        if (!in_array($rValue['id'], $checkMealId) && $rValue['meal_type'] == $mealsType && $rValue['meal_category'] == $mealsCategory) {
                            $checkMealId[] = $rValue['id'];

                            $exchangerate = 1;
                            //                            if($rValue['CurrencyType'] != $this->TrxCurrency){
                            //                                $exchangerate = $this->objHelperGeneral->currencyExchangeRate($rValue['CurrencyType'], $this->TrxCurrency, 0);
                            //                            }
                            $Cost = ($rValue['adult_sales'] * $TotalAdult + $rValue['child_sales'] * $TotalChild) * $exchangerate;
                            $dataArr = array(
                                'Price' => $Cost,
                            );
                            $COstWM = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
                            $mealNameArray[] = array('id' => $rValue['id'], 'meal_name' => trim($rValue['meal_name']), 'cost' => $COstWM, 'city_id' => $value['city_id']);
                        }
                    } else {
                        if (!in_array($rValue['id'], $checkMealId)) {
                            $checkMealId[] = $rValue['id'];
                            $exchangerate = 1;
                            //                            if($rValue['CurrencyType'] != $this->TrxCurrency){
                            //                                $exchangerate = $this->objHelperGeneral->currencyExchangeRate($rValue['CurrencyType'], $this->TrxCurrency, 0);
                            //                            } 
                            $Cost = ($rValue['adult_sales'] * $TotalAdult + $rValue['child_sales'] * $TotalChild) * $exchangerate;
                            $dataArr = array(
                                'Price' => $Cost,
                            );
                            $COstWM = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);

                            $mealNameArray[$value['city_id']][] = array('id' => $rValue['id'], 'meal_type' => $rValue['meal_type'], 'meal_category' => $rValue['meal_category'], 'meal_name' => trim($rValue['meal_name']), 'cost' => $Cost, 'COstWM' => $COstWM, 'city_id' => $value['city_id'], 'adult_sales' => $rValue['adult_sales'], 'child_sales' => $rValue['child_sales'], 'supplier_name' => (int)$supplier_name);
                        }
                    }
                }
            }
        }
        return $mealNameArray;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit