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/tripstring.com/library/Helper/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/tripstring.com/library/Helper/Hotel.php
<?php

/* * *************************************************************
 * Catabatic Technology Pvt. Ltd.
 * File Name     : Hotel.php
 * File Desc.    : Hotel helper to including supporting functions/methods for Hotels
 * Created By    : Pardeep Panchal <pardeep@catpl.co.in>
 * Created Date  : 24 Nov 2017
 * Updated Date  : 24 Nov 2017
 * ************************************************************* */

class Zend_Controller_Action_Helper_Hotel extends Zend_Controller_Action_Helper_Abstract
{

    public $baseUrl;

    public function __construct()
    {

        $this->pluginLoader = new Zend_Loader_PluginLoader();
        $this->db = Zend_Db_Table::getDefaultAdapter();
        $BootStrap = $this->config();
        $this->siteName = $BootStrap['siteName'];
        $this->baseUrl = $BootStrap['siteUrl'];

        $this->gtxagencysysid       = $BootStrap['gtxagencysysid']; // get gtxagencysysid from application config
        $this->gtxagentsysid       = $BootStrap['gtxagentsysid']; // get gtxagentsysid from application config
    }

    public function config()
    {
        $front = $this->getFrontController();
        $bootstrap = $front->getParam('bootstrap');
        if (null === $bootstrap) {
            throw new Exception('Unable to find bootstrap');
        }
        //        return $bootstrap->getOptions();
        return $bootstrap->getOptions()['bootstrap'];
    }

    public function getRatingImage($rating, $fullRating = 5)
    {

        $ratingStar = '<img src="' . $this->baseUrl . 'public/images/red-star.png">';
        $ratingStar_light = '<img src="' . $this->baseUrl . 'public/images/gray-star.png">';

        $ratingImage = '';

        for ($i = 0; $i < $rating; $i++) {
            $ratingImage .= $ratingStar;
        }

        $grayStars = $fullRating - $rating;

        for ($i = 0; $i < $grayStars; $i++) {
            $ratingImage .= $ratingStar_light;
            $ratingImage;
        }

        return $ratingImage;
    }

    public function getInclusionIcon($Inclusions, $stringSeparator = "")
    {

        //echo "<pre>";print_r($Inclusions);echo "</pre>";

        $ret = $icon = '';
        $InclusionsMaster = [
            'wi-fi' => 'wifi',
            'Internet' => 'wifi',
            'tv' => 'television',
            'minibar' => 'glass',
            'bar' => 'glass',
            'disability-friendly bathroom' => 'wheelchair',
            'Disabled facilities' => 'wheelchair',
            'secure parking' => 'car',
            'parking' => 'car',
            'Car parking (Payable to hotel, if applicable)' => 'car',
            'Car parking' => 'car',
            //'smoking rooms' => 'bath' , 

        ];
        $ret = [];

        if ($stringSeparator != "") {
            foreach (explode($stringSeparator, $Inclusions) as $inc) {
                $inc = trim($inc);
                $icon = (isset($InclusionsMaster[$inc])) ? $InclusionsMaster[$inc] : "question";
                if ($icon != 'question') {
                    if (!in_array($icon, $ret))
                        $ret[$InclusionsMaster[$inc]] = $icon;
                }
            }
        } else {
            foreach ($Inclusions as $inc) {
                $inc = trim($inc);
                $icon = (isset($InclusionsMaster[$inc])) ? $InclusionsMaster[$inc] : "question";
                if ($icon != 'question') {
                    if (!in_array($icon, $ret))
                        $ret[$InclusionsMaster[$inc]] = $icon;
                }
            }
        }


        return $ret;
    }

    public function dataEncode($arrData)
    {
        return base64_encode(json_encode($arrData));
    }

    public function dataDecode($strData)
    {
        return json_decode(base64_decode($strData), 1);
    }

    public function sortArrayByColumn(&$arr = [], $col, $order = SORT_ASC)
    {
        $sort_col = array();

        if (count($arr) > 0) {
            foreach ($arr as $key => $row) {
                @$sort_col[$key] = $row[$col];
            }
        }

        @array_multisort($sort_col, $order, $arr);
    }



    public function dateFormat($date, $format = 1)
    {

        if ($format == 1) { // 2018-01-19T00:00:00
            $arrDate = explode("T", $date);
            return date('d-m-Y', strtotime($arrDate[0])); //30 Nov' 17 Thu
        } elseif ($format == 2) {
            return date('d M' . "'" . ' y D', strtotime($date)); //30 Nov' 17 Thu
        } else {
            return $date;
        }
    }

    public function getRoomImagesByItemSysId(array $array, $ItemSysId)
    {
        $ret = [];

        foreach ($array as $key => $value) {
            if ($value['ItemSysId'] == $ItemSysId) {
                $ret[] = ['index' => $value['ImgIndex'], 'img' => $value['Details']];
            }
        }
        return $ret;
    }

    public function calculateNoOfDays($date1, $date2)
    {
        $diff = abs(strtotime($date2) - strtotime($date1));
        $years = floor($diff / (365 * 60 * 60 * 24));
        $months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
        $days = ceil(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24)) + 1;
        return $days;
    }


    public function getTotalCostOfHotelByTravelers($hotelArray, $roominfoarr, $arrMarkUp = [])
    {

        //         echo "<pre>";print_r($hotelArray);
        //         echo "<pre>";print_r($roominfoarr);
        //         echo "<pre>";print_r($arrMarkUp);exit;

        $MarkUpType = isset($arrMarkUp['MarkUpType']) ? $arrMarkUp['MarkUpType'] : '';
        $MarkUp = isset($arrMarkUp['MarkUp']) ? $arrMarkUp['MarkUp'] : '';
        $DOccupMarkUp = isset($arrMarkUp['DOccupMarkUp']) ? $arrMarkUp['DOccupMarkUp'] : '';
        $SOccupMarkUp = isset($arrMarkUp['SOccupMarkUp']) ? $arrMarkUp['SOccupMarkUp'] : '';
        $ExtraBedMarkUp = isset($arrMarkUp['ExtraBedMarkUp']) ? $arrMarkUp['ExtraBedMarkUp'] : '';
        $ExtraWOBedMarkUp = isset($arrMarkUp['ExtraWOBedMarkUp']) ? $arrMarkUp['ExtraWOBedMarkUp'] : '';


        if ($MarkUpType == 1) {
            // Single 
            $NetSOccupCost = isset($hotelArray['NetSOccupCost']) ? $hotelArray['NetSOccupCost'] : 0;
            $NetSOccupCostWidMrkp = $NetSOccupCost + $SOccupMarkUp;
            // Single

            // Double 
            $NetDOccupCost = isset($hotelArray['DOccupCost']) ? $hotelArray['DOccupCost'] : 0;
            $NetDOccupCostWidMrkp = $NetDOccupCost + $DOccupMarkUp;
            // Double

            // ExtraBed 
            $NetExtraBedCost = isset($hotelArray['NetExtraBedCost']) ? $hotelArray['NetExtraBedCost'] : 0;
            $NetExtraBedCostWidMrkp = $NetExtraBedCost + $ExtraBedMarkUp;
            // ExtraBed

            // ExtraWoBed 
            $NetExtraWOBedCost = isset($hotelArray['NetExtraWOBedCost']) ? $hotelArray['NetExtraWOBedCost'] : 0;
            $NetExtraWOBedCostWidMrkp = $NetExtraWOBedCost + $ExtraWOBedMarkUp;
            // ExtraWoBed

        } else if ($MarkUpType == 2) {
            // Single 
            $NetSOccupCost = isset($hotelArray['NetSOccupCost']) ? $hotelArray['NetSOccupCost'] : 0;
            $SOccupMarkUpAmt = ($NetSOccupCost * $SOccupMarkUp) / 100;
            $NetSOccupCostWidMrkp = $NetSOccupCost + $SOccupMarkUpAmt;
            // Single

            // Double 
            $NetDOccupCost = isset($hotelArray['DOccupCost']) ? $hotelArray['DOccupCost'] : 0;
            $DOccupMarkUpAmt = ($NetDOccupCost * $DOccupMarkUp) / 100;
            $NetDOccupCostWidMrkp = $NetDOccupCost + $DOccupMarkUpAmt;
            // Double

            // ExtraBed 
            $NetExtraBedCost = isset($hotelArray['NetExtraBedCost']) ? $hotelArray['NetExtraBedCost'] : 0;
            $ExtraBedMarkUpAmt = ($NetExtraBedCost * $ExtraBedMarkUp) / 100;
            $NetExtraBedCostWidMrkp = $NetExtraBedCost + $ExtraBedMarkUpAmt;
            // ExtraBed

            // ExtraBed 
            $NetExtraWOBedCost = isset($hotelArray['NetExtraWOBedCost']) ? $hotelArray['NetExtraWOBedCost'] : 0;
            $ExtraBedMarkUpAmt = ($NetExtraWOBedCost * $ExtraWOBedMarkUp) / 100;
            $NetExtraWOBedCostWidMrkp = $NetExtraWOBedCost + $ExtraBedMarkUpAmt;
            // ExtraBed
        } else {
            // Single 
            $NetSOccupCost = isset($hotelArray['NetSOccupCost']) ? $hotelArray['NetSOccupCost'] : 0;
            $SOccupMarkUpAmt = 0;
            $NetSOccupCostWidMrkp = $NetSOccupCost + $SOccupMarkUpAmt;
            // Single

            // Double 
            $NetDOccupCost = isset($hotelArray['DOccupCost']) ? $hotelArray['DOccupCost'] : 0;
            $DOccupMarkUpAmt = 0;
            $NetDOccupCostWidMrkp = $NetDOccupCost + $DOccupMarkUpAmt;
            // Double

            // ExtraBed 
            $NetExtraBedCost = isset($hotelArray['NetExtraBedCost']) ? $hotelArray['NetExtraBedCost'] : 0;
            $ExtraBedMarkUpAmt = 0;
            $NetExtraBedCostWidMrkp = $NetExtraBedCost + $ExtraBedMarkUpAmt;
            // ExtraBed

            // ExtraBed 
            $NetExtraWOBedCost = isset($hotelArray['NetExtraWOBedCost']) ? $hotelArray['NetExtraWOBedCost'] : 0;
            $ExtraBedMarkUpAmt = 0;
            $NetExtraWOBedCostWidMrkp = $NetExtraWOBedCost + $ExtraBedMarkUpAmt;
            // ExtraBed
        }






        $totalMember = 0;
        $newcost = 0;
        for ($m = 0; $m <= count($roominfoarr); $m++) {
            $AdultPax   = (int) @$roominfoarr[$m]['AdultPax'];
            $ChildPax   = (int) @$roominfoarr[$m]['ChildPax'];
            $totalMember = $AdultPax + $ChildPax;
            $ChildsAge  =  @$roominfoarr[$m]['ChildsAge'];


            if ($totalMember == 1) {
                $newcost = $newcost + (isset($hotelArray['NetSOccupCost']) ? $NetSOccupCostWidMrkp : $NetDOccupCostWidMrkp);
                //$newcost = $newcost + $hotelArray['DOccupCost']; 
            } elseif ($totalMember == 2) {
                $newcost = $newcost + $NetDOccupCostWidMrkp;
            } else if ($totalMember > 2) {
                if ($AdultPax == 3 && $ChildPax == 0) {
                    $newcost = $newcost + ($NetDOccupCostWidMrkp + $NetExtraBedCostWidMrkp);
                } else if ($AdultPax == 2 && $ChildPax == 1) {
                    $newcost = $newcost + ($NetDOccupCostWidMrkp + $NetExtraWOBedCostWidMrkp);
                } else if ($AdultPax == 3 && $ChildPax == 1) {
                    $newcost = $newcost + ($NetDOccupCostWidMrkp + $NetExtraBedCostWidMrkp + $NetExtraWOBedCostWidMrkp);
                } else if ($AdultPax == 2 && $ChildPax == 2) {
                    $newcost = $newcost + ($NetDOccupCostWidMrkp + $NetExtraWOBedCostWidMrkp + $NetExtraWOBedCostWidMrkp);
                } else if ($AdultPax == 1 && $ChildPax == 2) {
                    $newcost = $newcost + ($NetSOccupCostWidMrkp + $NetExtraWOBedCostWidMrkp + $NetExtraWOBedCostWidMrkp);
                }
            }
        }
        return round($newcost);
    }



    public function getTotalCostOfHotelByTravelersAPI($roomRate, $roominfoarr, $arrMarkUp = [])
    {

        //         echo "<pre>";print_r($roomRate);
        //         echo "<pre>";print_r($roominfoarr);
        //         echo "<pre>";print_r($arrMarkUp);exit;

        $MarkUpType = isset($arrMarkUp['MarkUpType']) ? $arrMarkUp['MarkUpType'] : '';
        $MarkUp = isset($arrMarkUp['MarkUp']) ? $arrMarkUp['MarkUp'] : '';
        $DOccupMarkUp = isset($arrMarkUp['DOccupMarkUp']) ? $arrMarkUp['DOccupMarkUp'] : '';
        $SOccupMarkUp = isset($arrMarkUp['SOccupMarkUp']) ? $arrMarkUp['SOccupMarkUp'] : '';
        $ExtraBedMarkUp = isset($arrMarkUp['ExtraBedMarkUp']) ? $arrMarkUp['ExtraBedMarkUp'] : '';
        $ExtraWOBedMarkUp = isset($arrMarkUp['ExtraWOBedMarkUp']) ? $arrMarkUp['ExtraWOBedMarkUp'] : '';





        if ($MarkUpType == 1) {
            // Single 
            $SOccupMarkUpAmt = $SOccupMarkUp;
            // Single

            // Double 
            $DOccupMarkUpAmt = $DOccupMarkUp;
            // Double

            // ExtraBed 
            $ExtraBedMarkUpAmt = $ExtraBedMarkUp;
            // ExtraBed

            // ExtraWoBed 
            $ExtraWOBedMarkUpAmt = $ExtraWOBedMarkUp;
            // ExtraWoBed

        } else if ($MarkUpType == 2) {
            // Single 
            $NetSOccupCost = !empty($roomRate) ? $roomRate : 0;
            $SOccupMarkUpAmt = ($NetSOccupCost * $SOccupMarkUp) / 100;
            // Single

            // Double 
            $NetDOccupCost = !empty($roomRate) ? $roomRate : 0;
            $DOccupMarkUpAmt = ($NetDOccupCost * $DOccupMarkUp) / 100;
            // Double

            // ExtraBed 
            $NetExtraBedCost = !empty($roomRate) ? $roomRate : 0;
            $ExtraBedMarkUpAmt = ($NetExtraBedCost * $ExtraBedMarkUp) / 100;
            // ExtraBed

            // ExtraBed 
            $NetExtraWOBedCost = !empty($roomRate) ? $roomRate : 0;
            $ExtraWOBedMarkUpAmt = ($NetExtraWOBedCost * $ExtraWOBedMarkUp) / 100;
            // ExtraBed
        } else {
            // Single 
            $SOccupMarkUpAmt = 0;
            // Single

            // Double 
            $DOccupMarkUpAmt = 0;
            // Double

            // ExtraBed 
            $ExtraBedMarkUpAmt = 0;
            // ExtraBed

            // ExtraBed 
            $ExtraWOBedMarkUpAmt = 0;
            // ExtraBed
        }


        $totalMember = 0;
        $newcost = 0;
        for ($m = 0; $m <= count($roominfoarr); $m++) {
            $AdultPax   = (int) @$roominfoarr[$m]['AdultPax'];
            $ChildPax   = (int) @$roominfoarr[$m]['ChildPax'];
            $totalMember = $AdultPax + $ChildPax;
            $ChildsAge  =  @$roominfoarr[$m]['ChildsAge'];


            if ($totalMember == 1) {
                $newcost = $newcost + (!empty($SOccupMarkUpAmt) ? $SOccupMarkUpAmt : $DOccupMarkUpAmt);
                //$newcost = $newcost + $hotelArray['DOccupCost']; 
            } elseif ($totalMember == 2) {
                $newcost = $newcost + $DOccupMarkUpAmt;
            } else if ($totalMember > 2) {
                if ($AdultPax == 3 && $ChildPax == 0) {
                    $newcost = $newcost + ($DOccupMarkUpAmt + $ExtraBedMarkUpAmt);
                } else if ($AdultPax == 2 && $ChildPax == 1) {
                    $newcost = $newcost + ($DOccupMarkUpAmt + $ExtraWOBedMarkUpAmt);
                } else if ($AdultPax == 3 && $ChildPax == 1) {
                    $newcost = $newcost + ($DOccupMarkUpAmt + $ExtraBedMarkUpAmt + $ExtraWOBedMarkUpAmt);
                } else if ($AdultPax == 2 && $ChildPax == 2) {
                    $newcost = $newcost + ($DOccupMarkUpAmt + $ExtraWOBedMarkUpAmt + $ExtraWOBedMarkUpAmt);
                } else if ($AdultPax == 1 && $ChildPax == 2) {
                    $newcost = $newcost + (!empty($SOccupMarkUpAmt) ? $SOccupMarkUpAmt : $DOccupMarkUpAmt + $ExtraWOBedMarkUpAmt + $ExtraWOBedMarkUpAmt);
                }
            }
        }
        return round($newcost + $roomRate);
    }

    public function markUpCalculation($cast, $roominfoarr)
    {

        //         echo "<pre>";print_r($hotelArray);
        //         echo "<pre>";print_r($roominfoarr);
        echo $cast;
        exit;
        $totalMember = 0;
        $newcost = 0;
        for ($m = 0; $m <= count($roominfoarr); $m++) {
            $AdultPax = (int) @$roominfoarr[$m]['AdultPax'];
            $ChildPax = (int) @$roominfoarr[$m]['ChildPax'];
            $totalMember = $AdultPax + $ChildPax;
            $ChildsAge = @$roominfoarr[$m]['ChildsAge'];
        }
        return round($newcost);
    }

    public function CreateSessionSearchParams($getData, $TraceId)
    {

        Zend_Session::namespaceUnset('sessionHotelSearchParams');
        Zend_Session::namespaceUnset('sessionHotelTraceId');
        if (!empty($getData)) {
            $sessionHotelSearchParams = new Zend_Session_Namespace('sessionHotelSearchParams');
            $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
            
            $SearchHotelTraceId->params = $TraceId;
			
			$roominfojson = json_decode($getData['roominfojson'],1);
			//echo "<pre>";print_r($roominfojson);die;
            $check_In = $getData['check_in'];
            $check_Out = $getData['check_out'];
            $room = $roominfojson['totalRoom'];
            $totadlt = $roominfojson['totaladult'];
            $totchld = $roominfojson['totalchild'];
            $childage = $roominfojson['childage'];
			$childArray = array();
			if($totchld>0){
				for($m = 0; $m< $totchld; $m++){
					$childArray[] = $childage[$m];
				}
			}
			
			
			$getData['childage'] = $childArray = (!empty($childArray)) ? array_reverse($childArray) : array();
            $child1_bed_typeAr = $getData['child1_age'];
            $child2_bed_typeAr = $getData['child2_age'];
            $arrCheckInDate = explode("/", $check_In);
            if (count($arrCheckInDate) > 0) {
                $checkIn = $arrCheckInDate[2] . "-" . $arrCheckInDate[1] . "-" . $arrCheckInDate[0];
            }

            $arrCheckOutDate = explode("/", $check_Out);
            if (count($arrCheckOutDate) > 0) {
                $checkOut = $arrCheckOutDate[2] . "-" . $arrCheckOutDate[1] . "-" . $arrCheckOutDate[0];
            }
            $nightCoun = Zend_Controller_Action_HelperBroker::getStaticHelper("Hotel")->calculateNoOfDays($checkIn, $checkOut);
            $nightCount = ($nightCoun > 1) ? ($nightCoun - 1) : 1;
            $memberdata = [];
            
                    $memberdata[] = array(
                        'NoOfAdults' => $totadlt,
                        'NoOfChild' => $totchld,
                        'ChildAge' => $childArray
                    );
			$sessionHotelSearchParams->params = $getData;  // Putting all form data to Session
            $sessionHotelSearchParams->params['memberdata'] = $memberdata;
            $sessionHotelSearchParams->params['nightCount'] = $nightCount;
            $sessionHotelSearchParams->params['strCheckin'] = $checkIn;
            $sessionHotelSearchParams->params['strCheckout'] = $checkOut;
// 
            //            die;
            if (HOTEL_API_LOGS) {
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $TraceId . '/' . time() . "_SearchParam_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, json_encode($sessionHotelSearchParams->params));
            }

            return true;
        } else {
            die('Oops something went wrong');
        }
    }
    // TBO Api integration 
    public function authenticateAPI()
    {
        $TokenIdSession = new Zend_Session_Namespace('TokenIdSession');

        $objFlight = new Travel_Model_FlightMaster();
        $CheckFlightToken = $objFlight->CheckFlightToken('tbl_token');
        if (empty($CheckFlightToken)) {
            $data = array(
                'ClientId' => FLIGHT_API_CLIENT_ID,
                'UserName' => FLIGHT_API_USER,
                'Password' => FLIGHT_API_PASSWORD,
                'EndUserIp' => $_SERVER['REMOTE_ADDR']
            );

            $data_string = json_encode($data);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TBO_AUTHENTICATE_URL);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            //  curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json',
                'Content-Length: ' . strlen($data_string)
            ));
            $output = curl_exec($ch);
            $response = json_decode($output, true);

            if (HOTEL_API_LOGS) {

                //Write Request Logs starts...
                $strFilePath = "flight/Auth/" . time() . "_Auth_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_string);
                //Write Request Logs starts...
                //Write Request Logs starts...
                $strFilePath = "flight/Auth/" . time() . "_Auth_response.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $output);
                //Write Request Logs starts...
            }

            $tokenId = $response['TokenId'];
            curl_close($ch);
            $TokenIdSession = new Zend_Session_Namespace('TokenIdSession');
            $TokenIdSession->params = $tokenId;
            $insertArr = array(
                'token' => $tokenId,
                'created_at' => Zend_Date::now()->toString('YYYY-MM-dd HH:mm:ss'),
            );
            $objFlight->InsertFlightData('tbl_token', $insertArr);
            return $tokenId;
        } else {
            $TokenIdSession->params = $CheckFlightToken['token'];
            return $TokenIdSession->params;
        }
    }

    public function searchApiHotel($arrSessionData = array())
    {
        if ($arrSessionData) {
            $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
            $HotelTraceId = $SearchHotelTraceId->params;
            $tokenId = $this->authenticateAPI();
            $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
            $arrSessionData['TokenId'] = $tokenId;
            $data_stringh = json_encode($arrSessionData);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_SEARCH_URL);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: application/json',
                'Content-Type: application/json',
                'Accept-Encoding: gzip',
                'Content-Length: ' . strlen($data_stringh)
            ));

            $outputH = curl_exec($ch);
            $response = json_decode($outputH, true);
            if (HOTEL_API_LOGS) {
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/Search/" . time() . "_Hotels_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_stringh);
                //Write Request Logs starts...
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/Search/" . time() . "_Hotels_response.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $outputH);
                //Write Request Logs starts...
            }
            $arrHotelSearchResponse = array();
            $arrHotelSearchResponse['ResponseStatus'] = $response['HotelSearchResult']['ResponseStatus'];
            $arrHotelSearchResponse['TraceId'] = $response['HotelSearchResult']['TraceId'];
            $arrHotelSearchResponse['ErrorCode'] = $response['HotelSearchResult']['Error']['ErrorCode'];
            $arrHotelSearchResponse['ErrorMessage'] = $response['HotelSearchResult']['Error']['ErrorMessage'];
            $arrHotelSearchResponse['Remarks'] = $response['HotelSearchResult']['Remarks'];
            $arrHotelSearchResponse['CheckInDate'] = $response['HotelSearchResult']['CheckInDate'];
            $arrHotelSearchResponse['CheckOutDate'] = $response['HotelSearchResult']['CheckOutDate'];
            $arrHotelSearchResponse['HotelResults'] = $response['HotelSearchResult']['HotelResults'];
            $RequestRoomInfo = [];
            $RequestHotelInfo = [];
            if ($arrHotelSearchResponse['ResponseStatus'] == 1) {
                $tokenId_ = $this->authenticateAPI();
                if ($arrHotelSearchResponse['HotelResults']) {
                    foreach ($arrHotelSearchResponse['HotelResults'] as $key => $value) {
                        // Get Room details //
                        $GetHotelRoom['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
                        $GetHotelRoom['TokenId'] = $tokenId_;
                        $GetHotelRoom['TraceId'] = $arrHotelSearchResponse['TraceId'];
                        $GetHotelRoom['ResultIndex'] = $value['ResultIndex'];
                        $GetHotelRoom['HotelCode'] = $value['HotelCode'];

                        $RequestRoomInfo[$key] = array(
                            'url'   =>  TBO_HOTEL_API_HOTEL_ROOM_INFO,
                            'post'  =>  $GetHotelRoom,
                        );
                        $RequestHotelInfo[$key] = array(
                            'url'   =>  TBO_HOTEL_API_HOTEL_INFO,
                            'post'  =>  $GetHotelRoom,
                        );
                    }
                }
            }
            $arrHotelSearchResponse['RequestRoomInfo'] = $RequestRoomInfo;
            $arrHotelSearchResponse['RequestHotelInfo'] = $RequestHotelInfo;
            Zend_Session::namespaceUnset('HotelSearchResults');
            $HotelSearchResults = new Zend_Session_Namespace('HotelSearchResults');
            $HotelSearchResults->params = $arrHotelSearchResponse;
            return $arrHotelSearchResponse;
        }
    }

    public function apiGenerateVoucher($BookingId)
    {
        $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
        $HotelTraceId = $SearchHotelTraceId->params;
        $tokenId = $this->authenticateAPI();
        $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
        $arrSessionData['TokenId'] = $tokenId;
        $arrSessionData['BookingId'] = $BookingId;
        $data_string = json_encode($arrSessionData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_GENERATE_VOUCHER);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Accept-Encoding: gzip',
            'Content-Length: ' . strlen($data_string)
        ));
        $output = curl_exec($ch);
        $response = json_decode($output, true);
        if (HOTEL_API_LOGS) {

            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/GenerateVoucher/" . time() . "_GenerateVoucher_request.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_string);
            //Write Request Logs starts...
            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/GenerateVoucher/" . time() . "_GenerateVoucher_response.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $output);
            //Write Request Logs starts...
        }
        curl_close($ch);
        return $response;
    }
    public function ApiGetBookingDetail($BookingId)
    {
        $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
        $HotelTraceId = $SearchHotelTraceId->params;
        $tokenId = $this->authenticateAPI();
        $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
        $arrSessionData['TokenId'] = $tokenId;
        $arrSessionData['BookingId'] = $BookingId;
        $data_string = json_encode($arrSessionData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_FETCH_BOOKING_DETAIL_URL);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Accept-Encoding: gzip',
            'Content-Length: ' . strlen($data_string)
        ));
        $output = curl_exec($ch);
        $response = json_decode($output, true);
        if (HOTEL_API_LOGS) {

            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/BookingDetail/" . time() . "_BookingDetail_request.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_string);
            //Write Request Logs starts...
            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/BookingDetail/" . time() . "_BookingDetail_response.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $output);
            //Write Request Logs starts...
        }
        curl_close($ch);
        return $response;
    }
    public function apiChangeRequest($BookingId, $Remarks)
    {
        $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
        $HotelTraceId = $SearchHotelTraceId->params;
        $tokenId = $this->authenticateAPI();
        $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
        $arrSessionData['TokenId'] = $tokenId;
        $arrSessionData['BookingMode'] = 5;
        $arrSessionData['RequestType'] = 4;
        $arrSessionData['Remarks'] = $Remarks;
        $arrSessionData['BookingId'] = $BookingId;
        $data_string = json_encode($arrSessionData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_CANCELLATION_URL);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Accept-Encoding: gzip',
            'Content-Length: ' . strlen($data_string)
        ));
        $output = curl_exec($ch);
        $response = json_decode($output, true);
        if (HOTEL_API_LOGS) {

            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelCancel/" . time() . "_ChangeRequest_request.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_string);
            //Write Request Logs starts...
            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelCancel/" . time() . "_ChangeRequest_response.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $output);
            //Write Request Logs starts...
        }
        curl_close($ch);
        return $response;
    }
    public function apiGetChangeRequestStatus($ChangeRequestId)
    {
        $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
        $HotelTraceId = $SearchHotelTraceId->params;
        $tokenId = $this->authenticateAPI();
        $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
        $arrSessionData['TokenId'] = $tokenId;
        $arrSessionData['ChangeRequestId'] = $ChangeRequestId;
        $data_string = json_encode($arrSessionData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_CANCELLATION_STATUS_URL);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Accept: application/json',
            'Content-Type: application/json',
            'Accept-Encoding: gzip',
            'Content-Length: ' . strlen($data_string)
        ));
        $output = curl_exec($ch);
        $response = json_decode($output, true);
        if (HOTEL_API_LOGS) {

            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelCancelStatus/" . time() . "_ChangeStatus_request.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_string);
            //Write Request Logs starts...
            //Write Request Logs starts...
            $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelCancelStatus/" . time() . "_ChangeStatus_response.json";
            Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $output);
            //Write Request Logs starts...
        }
        curl_close($ch);
        return $response;
    }

    public function apiHotelBlocking($arrSessionData = array())
    {
        if ($arrSessionData) {
            $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
            $HotelTraceId = $SearchHotelTraceId->params;
            $HotelData = $arrSessionData['HotelData'];
            $RoomInfo = $arrSessionData['RoomInfoData'];
            $getData = $arrSessionData['sessionHotelSearchParams'];
            $SupplierHotelCodes = $HotelData['SupplierHotelCodes'];
            $post = $arrSessionData['post'];
            $TotalGuest = ($getData['totadlt'] + $getData['totchld']);
            $memberdata = ($getData['memberdata']);
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $CancelDateskipped = false;
            $HotelPassenger = [];
            if ($memberdata) {
                foreach ($memberdata as $key => $mem) {

                    $RoomInfoData = $RoomInfo[$key];
                    $currentDate = date('Y-m-d');
                    $LastCancellationDate = str_replace('T', ' ', $RoomInfoData['LastCancellationDate']);
                    if (strtotime($currentDate) > strtotime($LastCancellationDate)) {
                        $CancelDateskipped = true;
                    }

                    $HotelRoomsDetails[$key] = array(
                        'RoomIndex' => $RoomInfoData['RoomIndex'],
                        'RoomTypeCode' => $RoomInfoData['RoomTypeCode'],
                        'RoomTypeName' => $RoomInfoData['RoomTypeName'],
                        'RatePlanCode' => $RoomInfoData['RatePlanCode'],
                        'BedTypeCode' => null,
                        'SmokingPreference' => 0,
                        'Supplements' => null,
                        'Price' => array(
                            'CurrencyCode' => $RoomInfoData['Price']['CurrencyCode'],
                            'RoomPrice' => $RoomInfoData['Price']['RoomPrice'],
                            'Tax' => $RoomInfoData['Price']['Tax'],
                            'ExtraGuestCharge' => $RoomInfoData['Price']['ExtraGuestCharge'],
                            'ChildCharge' => $RoomInfoData['Price']['ChildCharge'],
                            'OtherCharges' => $RoomInfoData['Price']['OtherCharges'],
                            'Discount' => $RoomInfoData['Price']['Discount'],
                            'PublishedPrice' => $RoomInfoData['Price']['PublishedPrice'],
                            'PublishedPriceRoundedOff' => $RoomInfoData['Price']['PublishedPriceRoundedOff'],
                            'OfferedPrice' => $RoomInfoData['Price']['OfferedPrice'],
                            'OfferedPriceRoundedOff' => $RoomInfoData['Price']['OfferedPriceRoundedOff'],
                            'AgentCommission' => $RoomInfoData['Price']['AgentCommission'],
                            'AgentMarkUp' => $RoomInfoData['Price']['AgentMarkUp'],
                            'ServiceTax' => $RoomInfoData['Price']['ServiceTax'],
                            'TDS' => $RoomInfoData['Price']['TDS'],
                        ),
                        //'HotelPassenger'=> $HotelPassenger,
                    );
                }
            }

            $TraceId = $HotelData['TraceId'];
            $bookingArr = array(
                'ResultIndex' => $HotelData['ResultIndex'],
                'HotelCode' => $HotelData['HotelCode'],
                'HotelName' => $HotelData['HotelName'],
                'GuestNationality' => 'IN',
                'NoOfRooms' => $getData['room'],
                'ClientReferenceNo' => 0,
                'HotelRoomsDetails' => $HotelRoomsDetails,
            );
            if ($HotelData['IsTBOMapped'] == 1) {
                $bookingArr['CategoryId'] = isset($SupplierHotelCodes[0]['CategoryId']) ? $SupplierHotelCodes[0]['CategoryId'] : '';
            }
            if ($CancelDateskipped) {
                $bookingArr['IsVoucherBooking'] = true;
            } else {
                $bookingArr['IsVoucherBooking'] = false;
            }

            $tokenId = $this->authenticateAPI();
            $bookingArr['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
            $bookingArr['TokenId'] = $tokenId;
            $bookingArr['TraceId'] = $TraceId;
            // echo "<pre>";print_r(($RoomInfo));
            // echo "<pre>";print_r(($bookingArr));die;
            $data_stringh = json_encode($bookingArr);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_HOTEL_ROOM_BLOCK);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: application/json',
                'Content-Type: application/json',
                'Accept-Encoding: gzip',
                'Content-Length: ' . strlen($data_stringh)
            ));

            $outputH = curl_exec($ch);
            $response = json_decode($outputH, true);
            if (HOTEL_API_LOGS) {
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/Block/" . time() . "_Block_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_stringh);
                //Write Request Logs starts...
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/Block/" . time() . "_Block_response.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $outputH);
                //Write Request Logs starts...
            }

            Zend_Session::namespaceUnset('HotelBlockResponse');
            $HotelBlockResponse = new Zend_Session_Namespace('HotelBlockResponse');
            $HotelBlockResponse->params = $response;
            return $response;
        }
    }

    public function apiHotelBooking($arrSessionData = array())
    {
        if ($arrSessionData) {
            $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
            $HotelTraceId = $SearchHotelTraceId->params;
            $HotelData = $arrSessionData['HotelData'];
            $RoomInfo = $arrSessionData['RoomInfoData'];
            $getData = $arrSessionData['sessionHotelSearchParams'];
            $SupplierHotelCodes = $HotelData['SupplierHotelCodes'];
            $IsPackageFare = $arrSessionData['IsPackageFare'];

            $post = $arrSessionData['post'];
            $HotelCusData = $arrSessionData['HotelCusData'];

            $TotalGuest = ($getData['totadlt'] + $getData['totchld']);
            $memberdata = ($getData['memberdata']);
            $ARR_SALUTION = unserialize(ARR_SALUTION_HOTEL);
            $CancelDateskipped = false;

            $hotelPassengerArr = array();
            $index = 0;
            for ($i = 0; $i < count($memberdata); $i++) {
                $IsPANMandatoryArr = isset($post['IsPANMandatoryArr'][$i]) ? $post['IsPANMandatoryArr'][$i] : 0;
                $panno = isset($post['panno'][$i]) ? $post['panno'][$i] : null;
                $AdultPaxTotal = $memberdata[$i]['NoOfAdults'];
                $ChildPaxTotal = $memberdata[$i]['NoOfChild'];
                $paxTitle = trim($ARR_SALUTION[$post['salution'][$i]], ".");
                if ($AdultPaxTotal > 0) {
                    for ($m = 0; $m < $AdultPaxTotal; $m++) {
                        $index++;
                        $ind = ($index - 1);
                        if ($m == 0) {
                            $LeadPassenger = true;
                        } else {
                            $LeadPassenger = false;
                        }
                        $hotelPassengerArr[$i]["paxes"][] = array(
                            'Title' => $paxTitle,
                            'FirstName' => $post['firstname'][$ind],
                            'Middlename' => null,
                            'LastName' => $post['lastname'][$ind],
                            'Phoneno' => $post['leadMobile'],
                            'Email' => $post['leadEmail'],
                            'PaxType' => 1,
                            'LeadPassenger' => $LeadPassenger,
                            'Age' => 0,
                        );
                        if ($IsPANMandatoryArr == 1) {
                            $hotelPassengerArr[$i]["paxes"][$m]['PAN'] = $panno;
                        }
                    }
                }
                $ChildAge = $memberdata[$i]['ChildAge'];
                if ($ChildPaxTotal > 0) {
                    $ch = 0;
                    for ($m = 0; $m < $ChildPaxTotal; $m++) {
                        $index++;
                        $ind = ($index - 1);
                        $hotelPassengerArr[$i]["paxes"][] = array(
                            'Title' => $paxTitle,
                            'FirstName' => $post['firstname'][$ind],
                            'Middlename' => null,
                            'LastName' => $post['lastname'][$ind],
                            'Phoneno' => $post['leadMobile'],
                            'Email' => $post['leadEmail'],
                            'PaxType' => 2,
                            'LeadPassenger' => false,
                            'Age' => isset($ChildAge[$ch]) ? $ChildAge[$ch] : 0,
                        );
                        $ch++;
                    }
                }
            }

            if ($memberdata) {
                foreach ($memberdata as $key => $mem) {

                    $HotelPassenger = $hotelPassengerArr[$key]['paxes'];
                    // echo "<pre>";print_r(($hotelPassengerArr[$key]['paxes']));
                    $RoomInfoData = $RoomInfo[$key];
                    $currentDate = date('Y-m-d');
                    $LastCancellationDate = str_replace('T', ' ', $RoomInfoData['LastCancellationDate']);
                    if (strtotime($currentDate) > strtotime($LastCancellationDate)) {
                        $CancelDateskipped = true;
                    }

                    $HotelRoomsDetails[$key] = array(
                        'RoomIndex' => $RoomInfoData['RoomIndex'],
                        'RoomTypeCode' => $RoomInfoData['RoomTypeCode'],
                        'RoomTypeName' => $RoomInfoData['RoomTypeName'],
                        'RatePlanCode' => $RoomInfoData['RatePlanCode'],
                        'BedTypeCode' => null,
                        'SmokingPreference' => 0,
                        'Supplements' => null,
                        'Price' => array(
                            'CurrencyCode' => $RoomInfoData['Price']['CurrencyCode'],
                            'RoomPrice' => $RoomInfoData['Price']['RoomPrice'],
                            'Tax' => $RoomInfoData['Price']['Tax'],
                            'ExtraGuestCharge' => $RoomInfoData['Price']['ExtraGuestCharge'],
                            'ChildCharge' => $RoomInfoData['Price']['ChildCharge'],
                            'OtherCharges' => $RoomInfoData['Price']['OtherCharges'],
                            'Discount' => $RoomInfoData['Price']['Discount'],
                            'PublishedPrice' => $RoomInfoData['Price']['PublishedPrice'],
                            'PublishedPriceRoundedOff' => $RoomInfoData['Price']['PublishedPriceRoundedOff'],
                            'OfferedPrice' => $RoomInfoData['Price']['OfferedPrice'],
                            'OfferedPriceRoundedOff' => $RoomInfoData['Price']['OfferedPriceRoundedOff'],
                            'AgentCommission' => $RoomInfoData['Price']['AgentCommission'],
                            'AgentMarkUp' => $RoomInfoData['Price']['AgentMarkUp'],
                            'ServiceTax' => $RoomInfoData['Price']['ServiceTax'],
                            'TDS' => $RoomInfoData['Price']['TDS'],
                        ),
                        'HotelPassenger' => $HotelPassenger,
                    );
                }
            }

            $TraceId = $HotelData['TraceId'];
            $Surfacedata = date('Y-m-d');
            $ArrivalTransport = array(
                'ArrivalTransportType' => 1,
                'TransportInfoId' => 'Sadan',
                'Time' => $Surfacedata . "T11:00:00",
            );
            $bookingArr = array(
                'ResultIndex' => $HotelData['ResultIndex'],
                'HotelCode' => $HotelData['HotelCode'],
                'HotelName' => $HotelData['HotelName'],
                'GuestNationality' => 'IN',
                'NoOfRooms' => $getData['room'],
                'ClientReferenceNo' => 0,
                //'IsPackageFare'=> true,
                'HotelRoomsDetails' => $HotelRoomsDetails,
                'ArrivalTransport' => $ArrivalTransport,
            );
            if ($HotelData['IsTBOMapped'] == 1) {
                $bookingArr['CategoryId'] = isset($SupplierHotelCodes[0]['CategoryId']) ? $SupplierHotelCodes[0]['CategoryId'] : '';
            }
            if ($IsPackageFare) {
                $bookingArr['IsPackageFare'] = $IsPackageFare;
            }
            if ($CancelDateskipped) {
                $bookingArr['IsVoucherBooking'] = true;
            } else {
                $bookingArr['IsVoucherBooking'] = false;
            }

            $tokenId = $this->authenticateAPI();
            $bookingArr['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
            $bookingArr['TokenId'] = $tokenId;
            $bookingArr['TraceId'] = $TraceId;
            // echo "<pre>";print_r(($bookingArr));die;
            $data_stringh = json_encode($bookingArr);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_HOTEL_ROOM_BOOK);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: application/json',
                'Content-Type: application/json',
                'Accept-Encoding: gzip',
                'Content-Length: ' . strlen($data_stringh)
            ));

            $outputH = curl_exec($ch);
            $response = json_decode($outputH, true);
            if (HOTEL_API_LOGS) {
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelBook/" . time() . "_Hotels_book_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_stringh);
                //Write Request Logs starts...
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelBook/" . time() . "_Hotels_book_response.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $outputH);
                //Write Request Logs starts...
            }

            Zend_Session::namespaceUnset('HotelBookingResponse');
            $HotelBookingResponse = new Zend_Session_Namespace('HotelBookingResponse');
            $HotelBookingResponse->params = $response;
            return $response;
        }
    }


    public function searchTaggingStaticData($arrSessionData = array())
    {
        if ($arrSessionData) {
            $SearchHotelTraceId = new Zend_Session_Namespace('SearchHotelTraceId');
            $HotelTraceId = $SearchHotelTraceId->params;
            $tokenId = $this->authenticateAPI();
            $arrSessionData['EndUserIp'] = $_SERVER['REMOTE_ADDR'];
            $arrSessionData['TokenId'] = $tokenId;
            $data_stringh = json_encode($arrSessionData);
            echo "<pre>";
            print_r(($arrSessionData));

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TBO_HOTEL_API_TAGGINGSTATIC_DATA_URL);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: application/json',
                'Content-Type: application/json',
                'Accept-Encoding: gzip',
                'Content-Length: ' . strlen($data_stringh)
            ));

            $outputH = curl_exec($ch);
            $response = json_decode($outputH, true);
            if (HOTEL_API_LOGS) {
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelSearch/" . time() . "_TaggingStatic_request.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $data_stringh);
                //Write Request Logs starts...
                //Write Request Logs starts...
                $strFilePath = "hotels/SearchParam/" . $HotelTraceId . "/HotelSearch/" . time() . "_TaggingStatic_response.json";
                Zend_Controller_Action_HelperBroker::getStaticHelper("General")->createApiCallLogs($strFilePath, $outputH);
                //Write Request Logs starts...
            }

            Zend_Session::namespaceUnset('TaggingStaticData');
            $TaggingStaticData = new Zend_Session_Namespace('TaggingStaticData');
            $TaggingStaticData->params = $response;
            return $response;
        }
    }

    public function getApiPriceWithMarkupAndServiceTax($getMarkup, $intPrice, $intSTaxOnBasePrice = NULL, $intNoOfNights, $intNoOfRooms)
    {

        // echo '<pre>';print_r($getMarkup);echo '</pre>';
        $arrPriceAndMarkUps = array();
        $intPriceWithGTXMarkUp = 0;
        $intGTXMarkUp = 0;
        $arrAgencyMarkups = $getMarkup['arrAgencyMarkupsHotel'];
        if (count($arrAgencyMarkups) > 0) {
            $intAgencyCurrencySysId = isset($arrAgencyMarkups[0]['Currency']) ? $arrAgencyMarkups[0]['Currency'] : 0;
            $intAgencyAccomType = isset($arrAgencyMarkups[0]['AccomType']) ? $arrAgencyMarkups[0]['AccomType'] : 0;
            $intAgencyMarkUpType = isset($arrAgencyMarkups[0]['MarkUpType']) ? $arrAgencyMarkups[0]['MarkUpType'] : 1;
            $intAgencyMarkUp = isset($arrAgencyMarkups[0]['MarkUp']) ? $arrAgencyMarkups[0]['MarkUp'] : 0;
            $percentAgencySTax = isset($arrAgencyMarkups[0]['Tax']) ? $arrAgencyMarkups[0]['Tax'] : 0;
            if ($intAgencyMarkUpType == 1) { // For Flat
                $intAgencyMarkUp = (($intAgencyMarkUp * $intNoOfNights) * $intNoOfRooms);
            } else { // For Percentage
                $intAgencyMarkUp = ($intPrice * $intAgencyMarkUp) / 100; // mark ups per room / night
                $intAgencyMarkUp = ($intAgencyMarkUp * $intNoOfNights) * $intNoOfRooms;
            }
            $intServiceTaxOnAgencyMarkUp = ($intAgencyMarkUp * $percentAgencySTax) / 100;
            $intAgencyMarkUpWithSTax = $intAgencyMarkUp + $intServiceTaxOnAgencyMarkUp;

            $intServiceTaxOnGTXMarkUp = ($intGTXMarkUp * $percentAgencySTax) / 100;
            $intGTXMarkUpWithSTax = $intGTXMarkUp + $intServiceTaxOnGTXMarkUp;

            $intNetPriceWithAllMarkupsAndSTax = $intPrice + $intSTaxOnBasePrice + $intGTXMarkUpWithSTax + $intAgencyMarkUpWithSTax;
            $intNetSTax = $intSTaxOnBasePrice + $intServiceTaxOnGTXMarkUp + $intServiceTaxOnAgencyMarkUp;



            $arrPriceAndMarkUps = array(
                "intBasePrice" => $intPrice,
                "intSTaxOnBasePrice" => $intSTaxOnBasePrice,
                "intPriceWithMarkUpsAndSTax" => $intNetPriceWithAllMarkupsAndSTax,
                "intGTXMarkUp" => $intGTXMarkUp,
                "intSTaxOnGTXMarkUp" => $intServiceTaxOnGTXMarkUp,
                "intGTXMarkUpWithSTax" => $intGTXMarkUpWithSTax,
                "intAgencyMarkUp" => $intAgencyMarkUp,
                "intSTaxOnAgencyMarkUp" => $intServiceTaxOnAgencyMarkUp,
                "intAgencyMarkUpWithSTax" => $intAgencyMarkUpWithSTax,
                "intNetSTax" => $intNetSTax,
                "GTXMarkUpType" =>  0,
                "AgencyMarkUpType" => $intAgencyMarkUpType,
                "AgencyMarkUpDB" => isset($arrAgencyMarkups[0]['MarkUp']) ? $arrAgencyMarkups[0]['MarkUp'] : 0,
            );
            return $arrPriceAndMarkUps;
        }
    }

    public function getMarkup($intCountryCode)
    {
        if ($intCountryCode) {
            $this->postFields = "";
            $this->postFields .= "&AgencySysId=$this->gtxagencysysid";
            $this->postFields .= "&AgentSysId=$this->gtxagentsysid";
            $this->postFields .= "&intCountryCode=$intCountryCode";
            $model = new Gtxwebservices_Model_Webservices();
            $result = $model->getMarkupAndServiceTax($this->postFields);
            $response = json_decode($result, true);
            return $response;
        } else {
            $data = array('status' => false, 'message' => 'Invalid country code');
            return ($data);
        }
    }
    public function calculateServiceTax($intAmount, $percentAgencySTax)
    {
        $intAmount = (float) $intAmount;
        $intNetSTax = (($intAmount * $percentAgencySTax) / 100);
        $BasePriceWithSTax = $intNetSTax + $intAmount;
        $arrSerciceTax = array(
            "BasePrice" => $intAmount,
            "serviceTaxAmount" => $intNetSTax,
            "BasePriceWithSTax" => $BasePriceWithSTax,
            "ServiceTaxPercentage" => $percentAgencySTax,
        );
        return $arrSerciceTax;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit