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/b2b.hellogtx.comOLDSEP11bak/application/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/junkdata/b2b.hellogtx.comOLDSEP11bak/application/models/HotelMaster - Copy.php
<?php

class Travel_Model_HotelMaster {

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

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

    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->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';
            }
        }

        $response = array();
        $sql = "select * FROM $table A WHERE DestinationsId = $destinationId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by $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 = $RoomInfoArray = array();
                $RoomInfo = $longJson['RoomInfo'];
                foreach ($RoomInfo as $riKey => $riVal) {
                    $RoomInfoArray[$riVal['RoomType']] = $riVal;
                }
                $checkDuplicateDate = array();
                //echo "<pre>";print_r($RoomInfoArray);die;
                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'])) {

                            $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']]['priceVal'][] = $priceVal;
                            $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
                            $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['NEBC'];
                                            } 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['EWOBC'];
                                            break;
                                        }
                                }
                                $getPriceF = $getPriceF + $getPrice;
                            }
                            $exchangerate = 1;
                            if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
                                $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                            }
                            $getPriceF = $getPriceF * $exchangerate;
                            //echo "<pre>";print_r($exchangerate);die;
                            $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 = $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'];

                                $mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                $mmarkupValue = 0;
                                if ((int) $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;

                                if ($Price == 0 || $Price > $mPrice) {
                                    $Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                                    $markupValue = 0;
                                    if ((int) $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;
                                }
                            }
                            $i++;
                        }
                    }
                }

                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'],
                        '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,
                    );
                }
            }
        }
        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, $selectedHotelData = array(), $CurrencyTitle = '') {
        $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');
        $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 = (int) trim($val['Adult']);
            $AdultExtraBed = (int) trim($val['AdultExtraBed']);
            $ChildWithBed = (int) trim($val['ChildWithBed']);
            $ChildWithOutBed = (int) trim($val['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;
                        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['NEBC'];
                                    } 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['EWOBC'];
                                    break;
                                }
                        }
                        $markupValue = 0;
                        if ((int) $priceVal['B2BMarkup'] > 0) {
                            if ($priceVal['MarkType'] == 1) {
                                $markupValue = (float) ($getPrice * ($priceVal['B2BMarkup']) / 100);
                            } else {
                                $markupValue = $priceVal['B2BMarkup'];
                            }
                        }
                        $exchangerate = 1;
                        if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
                            $exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
                        }
                        $getPriceF = $getPriceF + $getPrice * $exchangerate;
                        $getMarkupF = $getMarkupF + $markupValue * $exchangerate;
                        $Currency = $priceVal['Currency'];
                        $NDOC = $priceVal['NDOC'] * $exchangerate;
                        $NSOC = $priceVal['NSOC'] * $exchangerate;
                        $NEBC = $priceVal['NEBC']*$exchangerate;
                        $NEWOBC = $priceVal['NEWOBC']*$exchangerate;
                        $EWOBC = $priceVal['EWOBC']*$exchangerate;
                        $SSID = $priceVal['SSID'];
                    }
                }
            }
            
            $dataArr = array(
                'Price' => $getPriceF + $getMarkupF,
            );
            $totalPrice = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
            $PriceBreakup = array(
                'Currency' => (int) $Currency,
                'NDOC' => (int) $NDOC,
                'NSOC' => (int) $NSOC,
                'NEBC' => (int) $NEBC,
                'NEWOBC' => (int) $NEWOBC,
                'EWOBC' => (int) $EWOBC,
                'Price' => $getPriceF,
                'Markup' => $getMarkupF,
                'SSID' => $SSID,
            );
            $finalPriceReturn += $totalPrice;
            $selectionHotelByOption['Hotel'][$val['HotelId']]['Price'] = $PriceBreakup;
            $selectionHotelByOption['Hotel'][$val['HotelId']]['Currency'] = $Currency;
        }
        $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"));
        $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
        );

        return $returnAr;
    }

    public function getTravelPlanHistory($TPSysId) {
        $select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "StartCityId"));
        $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) {
        $select = $this->db->select()->from(array("t1" => "tb_transport_route"));
        if (isset($categoryTransport) && $categoryTransport == 10 && $StateSysId > 0) {
            $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['EWOBC'];
                                        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 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['EWOBC'];
                                        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 DISTINCT TransportSubType FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
        $res = $this->db->query($sql)->fetchAll();
        $TransportSubTypeArr = array();
        foreach ($res as $key => $val) {
            $TransportSubTypeArr[] = $val['TransportSubType'];
        }
        $TransportSubTypeArr = array_unique(explode(',', implode(',', $TransportSubTypeArr)));
        return $TransportSubTypeArr;
    }

    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;
        $Adult = (int) $adults;
        $Child = (int) $child;
        $roomJsonInfo = json_decode($roomJsonInfo, TRUE);
        $rooms = count($roomJsonInfo);
        $ChildWithOutBed = 0;
        $ChildWithOutBed = (int) $child;
        $currencyTypeArray = $objHelperGeneral->getCurrencyData();

        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'];
//                echo "<pre>";print_r($longJson['RoomInfo']);                
                //echo "<pre>";print_r($roomJsonInfo);die;                
                $calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $Adult, $Child, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
                $RoomInfo = $calculateRoomJsonPax['RoomInfo'];
                $roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];

                $Currency = $longJson['PriceAdditional'][0]['Currency'];
                $CurrencyType = $currencyTypeArray[$Currency];

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


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

                    $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'];

                            if (!empty($hotelRoomMealArray)) {
                                $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
                            } else {
                                $roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
                            }

                            //                        $paxVal = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
                            foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
                                foreach ($paxVal1 as $paxKey => $paxVal) {
                                    //echo "<pre>";print_r($priceVal);die;
                                    $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'];

                                    $adults = $paxVal['Adult'];
                                    $child = $paxVal['Child'];
                                    $infent = $paxVal['infent'];
                                    $totalAdult = (int) $adults + (int) $child + (int) $infent;

                                    $Adult = (int) $adults;
                                    $ChildWithOutBed = 0;
                                    $ChildWithOutBed = (int) $child;
                                    //$childAge = 8;
                                    $adultPrice = $childPrice = 0;

                                    if ($adults <= $roomMinAdult) {
                                        $adultPrice = (float) $priceVal['NDOC'];
                                    } else {

                                        $NEBC = $adults - $roomMinAdult;
                                        $adultPrice = (float) $priceVal['NDOC'] + (float) ($priceVal['NEBC'] * $NEBC);
                                    }
                                    $childPrice = 0;

                                    for ($ic = 1; $ic <= $child; $ic++) {
                                        $childAge = $paxVal['ChildAge_' . $ic];

                                        if ($childAge >= $priceVal['FCAT']) {
                                            $childPrice = $childPrice + (float) ($priceVal['NEWBC']);
                                        } else {
                                            $childPrice = $childPrice + (float) ($priceVal['NEWOBC']);
                                        }
                                    }


                                    $getPrice = $adultPrice + $childPrice;

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

                $datetime1 = new DateTime($checkInDate);
                $datetime2 = new DateTime($checkOutDate);
                $interval = $datetime1->diff($datetime2);
                $totalNight = (int) $interval->format('%a');
                $countval = array();
                $finalArray = array();
                $Price = 0;
                $Markup = 0;

                if (!empty($hotelRoomMealArray)) {
                    foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
                        $SUBkey = $rmvalue['RoomType'];
                        $keyItem = $rmvalue['MealPlan'];
                        $checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem] : array();

                        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'];

                            $mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
                            $mmarkupValue = 0;
                            if ((int) $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) {
                                // echo "<pre>";print_r($SUBVal);die;
                                $countval[$i] = count($checkRNd["CreateDate"]);
                                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'];

                                $mPrice = array_sum($checkRNd['Price']) / $totalNight;
                                $mmarkupValue = 0;
                                if ((int) $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 ((int) $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'],
                        'adults' => $adults,
                        'child' => $child,
                        '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'],
                        'IsFeatured' => $row['IsFeatured'],
                        'totalNight' => $totalNight,
                        'checkInDate' => $checkInDate,
                        'checkOutDate' => $checkOutDate,
                        'Price' => $Price,
                        'Markup' => $Markup,
                        'CurrencyType' => $CurrencyType,
                        'roomJsonInfo' => $roomJsonInfoArrfinal,
                        'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
                        'RoomInfo' => $RoomInfo,
                    );
                } 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' => $adults,
                        'child' => $child,
                        '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'],
                        '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'] >= $roomMinAdult && $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);
        }
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit