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/patratravelsonline.com/application/modules/flights/controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/patratravelsonline.com/application/modules/flights/controllers/IndexController.php
<?php

//class Flights_IndexController extends Zend_Controller_Action {
class Flights_IndexController extends Catabatic_ValidateCustomer {

    public $baseUrl = '';

    public function init() {
        ini_set('max_execution_time', 30000);
        $this->objMdl = new Admin_Model_CRUD();
        $aConfig = $this->getInvokeArg('bootstrap')->getOptions();
        $BootStrap = $aConfig['bootstrap'];

        $this->siteName = $BootStrap['siteName'];
        $this->baseUrl = $BootStrap['siteUrl'];
        $this->superAdminEmail = $BootStrap['superAdminEmail'];
        $this->tollfreenumber = $BootStrap['tollfreenumber'];

        $this->gtxwebservicesURL = $BootStrap['gtxwebserviceurl']; // get gtxwebserviceurl from application config
        $this->gtxagencysysid = $BootStrap['gtxagencysysid']; // get gtxagencysysid from application config
        $this->gtxBtoBsite = $BootStrap['gtxBtoBsite']; // get gtxagencysysid from application config
        //api urls
        $this->flightSearchUrl = $this->gtxBtoBsite . "api/flights/flight-search";
        $this->flightFareRulesUrl = $this->gtxBtoBsite . "api/flights/fare-rules";
        $this->flightFareQuotesUrl = $this->gtxBtoBsite . "api/flights/fare-quotes";
        $this->flightSSRUrl         = $this->gtxBtoBsite . "api/flights/ssr-request";
        $this->flightBookUrl = $this->gtxBtoBsite . "api/flights/book";
        $this->flightTicketUrl = $this->gtxBtoBsite . "api/flights/ticket";
        $this->flightLogoPath = $_SERVER['DOCUMENT_ROOT'] . "/public/assets/img/airline-logo/";
        //api urls

        $this->objMdl = new Admin_Model_CRUD();
    }

    public function reviewDetailsAction() {

        $this->_helper->layout->setLayout('flight-book-layout');
        $this->view->baseUrl = $this->baseUrl;
        $this->view->id = $id = $this->getRequest()->getParam('id');
    }

    public function processRoundtripBookingAction() {


        $this->_helper->layout->setLayout('flight-book-layout');
        $this->view->baseUrl = $this->baseUrl;

        $this->view->id = $id = base64_decode($this->getRequest()->getParam('id'));
        $this->view->status = $status = ($this->getRequest()->getParam('status'));
        $this->view->discriminator  = $discriminator = ($this->getRequest()->getParam('discriminator'));
        $this->view->mmp_txn  = $mmp_txn = ($this->getRequest()->getParam('mmp_txn'));
        $this->view->GUID  = $GUID = ($this->getRequest()->getParam('GUID'));


        //echo "<pre>";print_r($_REQUEST);exit;


        if ($this->_request->isXmlHttpRequest()) {
            $this->_helper->layout->disableLayout();

            $urlId = $this->getRequest()->getParam('urlId');
            $paymentStatus = $this->getRequest()->getParam('paymentStatus');
            $mmp_txn = $this->getRequest()->getParam('mmp_txn');
            $discriminator = $this->getRequest()->getParam('discriminator');
            $GUID = $this->getRequest()->getParam('GUID');
            
            $arrPaymentRelatedParameters = [
                "mmp_txn" => $mmp_txn,
                "discriminator" => $discriminator,
                "GUID" => $GUID
            ];

            if ($paymentStatus == "Ok") {

                $objTempUrl = new Flights_Model_TblTempUrl();
                $arrUrlData = $objTempUrl->getUrlData($urlId);

                $urlData = isset($arrUrlData['UrlData']) ? json_decode($arrUrlData['UrlData'], true) : [];

                $arrFullResponse = $this->bookBothAction($urlData,$arrPaymentRelatedParameters);
                
            
                // echo "<pre>";print_r($arrFullResponse);exit;
                //echo "<pre>";print_r(json_decode($response,true));exit;
                $responsedata = [
                    'response' => json_encode($arrFullResponse),
                    'apiResponse' => json_encode($arrFullResponse),
                    'CreatedDate' => date('Y-m-d h:i:s')
                ];

                $lastInsertId = $this->objMdl->rv_insert("tbl_flight_booking", $responsedata);



                $insertdata = [
                    'UrlData' => json_encode($arrFullResponse),
                    'CreatedDate' => date('Y-m-d h:i:s')
                ];


                $resultset = $this->objMdl->rv_insert("tbl_temp_urldata", $insertdata);
                echo json_encode(array("success" => true, "id" => base64_encode($lastInsertId)));
                exit;
            } else if($paymentStatus == "C"){
                
                $objTempUrl = new Flights_Model_TblTempUrl();
                $arrUrlData = $objTempUrl->getUrlData($urlId);
                $urlData = isset($arrUrlData['UrlData'])?json_decode($arrUrlData['UrlData'],true):[];
                $urlData['error'] = "Oops! your payment cancelled by user.";
                
                // Update Booking Status to B2B end.........
                $arrIdsDepart         = $urlData['arrIds']['Depart']['arrIds'];
                $arrIdsReturn         = $urlData['arrIds']['Return']['arrIds'];
                
                
                try {
                    
                    $MasterTPSysId  = $arrIdsDepart['MasterTPSysId'];
                    $TPSysId        = $arrIdsDepart['TPSysId'];
                    $VersionId      = $arrIdsDepart['VersionId'];
                    
                    $this->postFields = "";
                    $this->postFields .= "&MasterTPSysId=" . $MasterTPSysId;
                    $this->postFields .= "&TPSysId=" . $TPSysId;
                    $this->postFields .= "&VersionId=" . $VersionId;
                    $this->postFields .= "&XRefBookingId=" . '';
                    $this->postFields .= "&APIBookingRes=" . '';
                    $this->postFields .= "&ErrorCode=" . 6;
                    $model = new Gtxwebservices_Model_Webservices();
                    $result = $model->updateFlightBookingDetails($this->postFields);
                    
                } catch (Exception $error) {
                    
                }
                
                
                try {
                    
                    $MasterTPSysId  = $arrIdsReturn['MasterTPSysId'];
                    $TPSysId        = $arrIdsReturn['TPSysId'];
                    $VersionId      = $arrIdsReturn['VersionId'];
                    
                    $this->postFields = "";
                    $this->postFields .= "&MasterTPSysId=" . $MasterTPSysId;
                    $this->postFields .= "&TPSysId=" . $TPSysId;
                    $this->postFields .= "&VersionId=" . $VersionId;
                    $this->postFields .= "&XRefBookingId=" . '';
                    $this->postFields .= "&APIBookingRes=" . '';
                    $this->postFields .= "&ErrorCode=" . 6;
                    $model = new Gtxwebservices_Model_Webservices();
                    $result = $model->updateFlightBookingDetails($this->postFields);
                    
                } catch (Exception $error) {
                    
                }
                
                
                //$response = json_decode($result,true);
                // Update Booking Status to B2B end.........
                
                
                $insertdata = [
                        'UrlData' => json_encode($urlData),
                        'CreatedDate' => date('Y-m-d h:i:s')
                    ];
                
                $lastInsertId = $resultset = $this->objMdl->rv_insert("tbl_temp_urldata", $insertdata);
                echo json_encode(array("success" => false, "pstatus" => $paymentStatus));
                exit;
                
            }else {

                $objTempUrl = new Flights_Model_TblTempUrl();
                $arrUrlData = $objTempUrl->getUrlData($urlId);
                $urlData = isset($arrUrlData['UrlData'])?json_decode($arrUrlData['UrlData'],true):[];
                $urlData['error'] = "Oops! your payment has been failed.";
                
                // Update Booking Status to B2B end.........
                $arrIdsDepart         = $urlData['arrIds']['Depart']['arrIds'];
                $arrIdsReturn         = $urlData['arrIds']['Return']['arrIds'];
                
                
                try {
                    
                    $MasterTPSysId  = $arrIdsDepart['MasterTPSysId'];
                    $TPSysId        = $arrIdsDepart['TPSysId'];
                    $VersionId      = $arrIdsDepart['VersionId'];
                    
                    $this->postFields = "";
                    $this->postFields .= "&MasterTPSysId=" . $MasterTPSysId;
                    $this->postFields .= "&TPSysId=" . $TPSysId;
                    $this->postFields .= "&VersionId=" . $VersionId;
                    $this->postFields .= "&XRefBookingId=" . '';
                    $this->postFields .= "&APIBookingRes=" . '';
                    $this->postFields .= "&ErrorCode=" . 6;
                    $model = new Gtxwebservices_Model_Webservices();
                    $result = $model->updateFlightBookingDetails($this->postFields);
                    
                } catch (Exception $error) {
                    
                }
                
                
                try {
                    
                    $MasterTPSysId  = $arrIdsReturn['MasterTPSysId'];
                    $TPSysId        = $arrIdsReturn['TPSysId'];
                    $VersionId      = $arrIdsReturn['VersionId'];
                    
                    $this->postFields = "";
                    $this->postFields .= "&MasterTPSysId=" . $MasterTPSysId;
                    $this->postFields .= "&TPSysId=" . $TPSysId;
                    $this->postFields .= "&VersionId=" . $VersionId;
                    $this->postFields .= "&XRefBookingId=" . '';
                    $this->postFields .= "&APIBookingRes=" . '';
                    $this->postFields .= "&ErrorCode=" . 6;
                    $model = new Gtxwebservices_Model_Webservices();
                    $result = $model->updateFlightBookingDetails($this->postFields);
                    
                } catch (Exception $error) {
                    
                }
                
                
                //$response = json_decode($result,true);
                // Update Booking Status to B2B end.........
                
                
                $insertdata = [
                        'UrlData' => json_encode($urlData),
                        'CreatedDate' => date('Y-m-d h:i:s')
                    ];
                
                $lastInsertId = $resultset = $this->objMdl->rv_insert("tbl_temp_urldata", $insertdata);
                echo json_encode(array("success" => false, "pstatus" => $paymentStatus));
                exit;
            }
        }
        
    }

   

    public function bookBothAction($urlData,$arrPaymentRelatedParameters = NULL) {
        
//        echo "<pre>";print_r($urlData);exit;
        
        $arrMarkupsAndPrice = isset($urlData['arrMarkupsAndPrice'])?$urlData['arrMarkupsAndPrice']:[];
        
               
        //Extra Parameters for payment Updation for B2B end.
        $mmp_txn = $arrPaymentRelatedParameters['mmp_txn'];
        $discriminator = $arrPaymentRelatedParameters['discriminator'];
        $GUID = $arrPaymentRelatedParameters['GUID'];
        //Extra Parameters for payment Updation for B2B end.
        
        $traceId = $urlData['TraceId'];
        $strOrigin = $urlData['Depart']['departureFrom'];
        $strDestination = $urlData['Depart']['departureTo'];
        $resultindex = $urlData['Depart']['resultindex'];

        
        $origincityDepart = isset($urlData['Depart']['Segments1'][0]['origincity'])?$urlData['Depart']['Segments1'][0]['origincity']:'';
        $destcityDepart = isset($urlData['Depart']['Segments1'][0]['destcity'])?$urlData['Depart']['Segments1'][0]['destcity']:'';
        
        $origincityReturn = isset($urlData['Return']['Segments2'][0]['origincity'])?$urlData['Return']['Segments2'][0]['origincity']:'';
        $destcityReturn = isset($urlData['Return']['Segments2'][0]['destcity'])?$urlData['Return']['Segments2'][0]['destcity']:'';
        
        
        $lCC = $urlData['Depart']['lCC'];
        $arrFareBreakdown = $urlData['Depart']['FareBreakdown'];
        $AgencyTotalMarkUp   = $urlData['Depart']['AgencyTotalMarkUp'];
        $AgencyTotalCommisions   = $urlData['Depart']['AgencyTotalCommisions'];

        
        $arrIdsDepart = isset($urlData['arrIds']['Depart']['arrIds'])?$urlData['arrIds']['Depart']['arrIds']:'';
        $MasterTPSysIdDepart  = isset($arrIdsDepart['MasterTPSysId'])?$arrIdsDepart['MasterTPSysId']:'';
        $TPSysIdDepart        = isset($arrIdsDepart['MasterTPSysId'])?$arrIdsDepart['TPSysId']:'';
        $VersionIdDepart      = isset($arrIdsDepart['MasterTPSysId'])?$arrIdsDepart['VersionId']:'';
        $DepartTrxId          = isset($arrIdsDepart['TrxId'])?$arrIdsDepart['TrxId']:'';
        
        
        $arrIdsReturn = isset($urlData['arrIds']['Return']['arrIds'])?$urlData['arrIds']['Return']['arrIds']:'';
        $MasterTPSysIdReturn  = isset($arrIdsReturn['MasterTPSysId'])?$arrIdsReturn['MasterTPSysId']:'';
        $TPSysIdReturn        = isset($arrIdsReturn['MasterTPSysId'])?$arrIdsReturn['TPSysId']:'';
        $VersionIdReturn      = isset($arrIdsReturn['MasterTPSysId'])?$arrIdsReturn['VersionId']:'';
        $ReturnTrxId          = isset($arrIdsReturn['TrxId'])?$arrIdsReturn['TrxId']:'';
        

        $arrPaxPrimaryContact = $urlData['PaxPrimaryContact'];
        $ContactNo = $arrPaxPrimaryContact['contact'];
        $EmailId = $arrPaxPrimaryContact['emailid'];

        $arrPaxDetails = $urlData['PaxDetails'];
        
        
        $paxCity        = trim($arrPaxDetails[0]['paxCity']);
        $paxCountryCode = trim($arrPaxDetails[0]['paxCountryCode']);
        $paxCountryName = trim($arrPaxDetails[0]['paxCountryName']);
        $paxAddress     = trim($arrPaxDetails[0]['paxAddress']);
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        

        if (count($arrPaxDetails) > 0) {
            $arrPassengers = [];
            $arrMeal = [];
            foreach ($arrPaxDetails as $key => $paxVal) {
                $dob = $paxVal['dob'];

                if (!empty($dob)) {
                    $arrDob = explode("/", $dob);
                    if (count($arrDob) > 0) {
                        $PaxDob = $arrDob[2] . "-" . $arrDob[1] . "-" . $arrDob[0];
                    }
                }

                $salutation = isset($ARR_SALUTION[$paxVal['salutation']])?$ARR_SALUTION[$paxVal['salutation']]:'Mr';
                if ($lCC) {

                    
                    $arrSSR = $this->flightSSRRequestAction(array("TraceId" => $traceId ,"resultindex" => $resultindex ));
                    $WayType            = isset($arrSSR['Response']['MealDynamic'][0][0]['WayType'])?trim($arrSSR['Response']['MealDynamic'][0][0]['WayType']):'2';
                    $Code               = isset($arrSSR['Response']['MealDynamic'][0][0]['Code'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Code']):'No Meal';
                    $Description        = isset($arrSSR['Response']['MealDynamic'][0][0]['Description'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Description']):'2';
                    $AirlineDescription = isset($arrSSR['Response']['MealDynamic'][0][0]['AirlineDescription'])?trim($arrSSR['Response']['MealDynamic'][0][0]['AirlineDescription']):'';
                    $Quantity           = isset($arrSSR['Response']['MealDynamic'][0][0]['Quantity'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Quantity']):'0';
                    $Currency           = isset($arrSSR['Response']['MealDynamic'][0][0]['Currency'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Currency']):'INR';
                    $Price              = isset($arrSSR['Response']['MealDynamic'][0][0]['Price'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Price']):'0';
                    $Origin             = isset($arrSSR['Response']['MealDynamic'][0][0]['Origin'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Origin']):trim($data['Origin']);
                    $Destination        = isset($arrSSR['Response']['MealDynamic'][0][0]['Destination'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Destination']):($data['Destination']);


                    $WayTypeBaggage            = isset($arrSSR['Response']['Baggage'][0][0]['WayType'])?trim($arrSSR['Response']['Baggage'][0][0]['WayType']):'2';
                    $CodeBaggage               = isset($arrSSR['Response']['Baggage'][0][0]['Code'])?trim($arrSSR['Response']['Baggage'][0][0]['Code']):'No Baggage';
                    $DescriptionBaggage        = isset($arrSSR['Response']['Baggage'][0][0]['Description'])?trim($arrSSR['Response']['Baggage'][0][0]['Description']):'2';
                    $WeightBaggage             = isset($arrSSR['Response']['Baggage'][0][0]['Weight'])?trim($arrSSR['Response']['Baggage'][0][0]['Weight']):'0';
                    $CurrencyBaggage           = isset($arrSSR['Response']['Baggage'][0][0]['Currency'])?trim($arrSSR['Response']['Baggage'][0][0]['Currency']):'INR';
                    $PriceBaggage              = isset($arrSSR['Response']['Baggage'][0][0]['Price'])?trim($arrSSR['Response']['Baggage'][0][0]['Price']):'0';
                    
                    
                    
                    $arrPassengers[] = [
                        'Title' => $salutation, //Mr ,Mstr ,Mrs ,Ms ,Miss ,Master ,DR ,CHD ,MST ,PROF ,Inf.
                        'FirstName' => $paxVal['firstName'],
                        'LastName' => $paxVal['lastName'],
                        'PaxType' => $paxVal['PassengerType'],
                        'DateOfBirth' => $PaxDob . "T00:00:00",
                        'Gender' => 1,
                        'PassportNo' => '',
                        'PassportExpiry' => '',
                        'AddressLine1' => $paxAddress,
                        'AddressLine2' => '',
                        'City' => $paxCity,
                        'CountryCode' => $paxCountryCode,
                        'CountryName' => $paxCountryName,
                        'ContactNo' => $ContactNo,
                        'Email' => $EmailId,
                        'IsLeadPax' => ($key == 0) ? 1 : 0,
                        'FFAirline' => '',
                        'FFNumber' => '',
                        'Fare' =>
                        [
                            'BaseFare' => $arrFareBreakdown[$key]['BaseFare'],
                            'Tax' => $arrFareBreakdown[$key]['Tax'],
                            'TransactionFee' => "00.00",
                            'YQTax' => $arrFareBreakdown[$key]['YQTax'],
                            'AdditionalTxnFeeOfrd' => $arrFareBreakdown[$key]['AdditionalTxnFeeOfrd'],
                            'AdditionalTxnFeePub' => $arrFareBreakdown[$key]['AdditionalTxnFeePub'],
                            'AirTransFee' => "00.00"
                        ],
                        'MealDynamic' =>
                        [
                            'WayType' => $WayType,
                            'Code' => $Code,
                            'Description' => $Description,
                            'AirlineDescription' => $AirlineDescription,
                            'Quantity' => $Quantity,
                            'Price' => $Price,
                            'Currency' => $Currency,
                            'Origin' => $Origin,
                            'Destination' => $Destination
                        ],
                        'Baggage' =>
                        [
                            'WayType' => $WayTypeBaggage,
                            'Code' => $CodeBaggage,
                            'Description' => $DescriptionBaggage,
                            'Weight' => $WeightBaggage,
                            'Currency' => $CurrencyBaggage,
                            'Price' => $PriceBaggage,
                            'Origin' => $Origin,
                            'Destination' => $Destination
                        ]
                    ];
                } else {

                    
                    $arrSSR = $this->flightSSRRequestAction(array("TraceId" => $traceId ,"resultindex" => $resultindex ));
                    $MealCode            = isset($arrSSR['Response']['Meal'][0]['Code'])?trim($arrSSR['Response']['Meal'][0]['Code']):'VGML';
                    $MealDesc            = isset($arrSSR['Response']['Meal'][0]['Description'])?trim($arrSSR['Response']['Meal'][0]['Description']):'Veg/Non Dairy';

                    $SeatCode            = isset($arrSSR['Response']['SeatPreference'][0]['Code'])?trim($arrSSR['Response']['SeatPreference'][0]['Code']):'A';
                    $SeatDesc            = isset($arrSSR['Response']['SeatPreference'][0]['Description'])?trim($arrSSR['Response']['SeatPreference'][0]['Description']):'Window';
                    
                    $arrPassengers[] = [
                        'Title' => $salutation, //Mr ,Mstr ,Mrs ,Ms ,Miss ,Master ,DR ,CHD ,MST ,PROF ,Inf.
                        'FirstName' => $paxVal['firstName'],
                        'LastName' => $paxVal['lastName'],
                        'PaxType' => $paxVal['PassengerType'],
                        'DateOfBirth' => $PaxDob . "T00:00:00",
                        'Gender' => 1,
                        'PassportNo' => '',
                        'PassportExpiry' => '',
                        'AddressLine1' => $paxAddress,
                        'AddressLine2' => '',
                        'City' => $paxCity,
                        'CountryCode' => $paxCountryCode,
                        'CountryName' => $paxCountryName,
                        'ContactNo' => $ContactNo,
                        'Email' => $EmailId,
                        'IsLeadPax' => ($key == 0) ? 1 : 0,
                        'FFAirline' => '',
                        'FFNumber' => '',
                        'Fare' =>
                        [
                            'BaseFare' => $arrFareBreakdown[$key]['BaseFare'],
                            'Tax' => $arrFareBreakdown[$key]['Tax'],
                            'TransactionFee' => "00.00",
                            'YQTax' => $arrFareBreakdown[$key]['YQTax'],
                            'AdditionalTxnFeeOfrd' => $arrFareBreakdown[$key]['AdditionalTxnFeeOfrd'],
                            'AdditionalTxnFeePub' => $arrFareBreakdown[$key]['AdditionalTxnFeePub'],
                            'AirTransFee' => "00.00"
                        ],
                        'Meal' =>
                        [
                            'Code' => $MealCode,
                            'Description' => $MealDesc
                        ],
                        'Seat' =>
                        [
                            'Code' => $SeatCode,
                            'Description' => $SeatDesc
                        ]
                    ];
                }
            }
        }

        $Departdatah = array(
            "TraceId" => $traceId,
            "ResultIndex" => $resultindex,
            'Passengers' => $arrPassengers,
            'TrxId'         => $DepartTrxId,
            'AgencySysId'   => $this->gtxagencysysid,
            'discriminator' => $discriminator,
            'mmp_txn'       => $mmp_txn,
            'GUID'       => $GUID
        );

        


        $data = array(array(), array());
        
         if ($lCC) {
                $data[0]['url'] = $this->flightTicketUrl;
            } else {
                $data[0]['url'] = $this->flightBookUrl;
            }
        $data[0]['post'] = array();
        $data[0]['post'] = $Departdatah;










        $traceId = $urlData['TraceId'];
        $resultindex = $urlData['Return']['resultindex'];

        $strOrigin = $urlData['Return']['departureFrom'];
        $strDestination = $urlData['Return']['departureTo'];

        $lCC = $urlData['Return']['lCC'];
        $arrFareBreakdown = $urlData['Return']['FareBreakdown'];
        $AgencyTotalMarkUpReturn   = $urlData['Return']['AgencyTotalMarkUp'];
        $AgencyTotalCommisionsReturn   = $urlData['Return']['AgencyTotalCommisions'];

        $arrPaxPrimaryContact = $urlData['PaxPrimaryContact'];
        $ContactNo = $arrPaxPrimaryContact['contact'];
        $EmailId = $arrPaxPrimaryContact['emailid'];
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $arrPaxDetails = $urlData['PaxDetails'];
        
        if (count($arrPaxDetails) > 0) {
            $arrPassengers = [];
            $arrMeal = [];
            foreach ($arrPaxDetails as $key => $paxVal) {
                $dob = $paxVal['dob'];

                if (!empty($dob)) {
                    $arrDob = explode("/", $dob);
                    if (count($arrDob) > 0) {
                        $PaxDob = $arrDob[2] . "-" . $arrDob[1] . "-" . $arrDob[0];
                    }
                }
                $salutation = isset($ARR_SALUTION[$paxVal['salutation']])?$ARR_SALUTION[$paxVal['salutation']]:'Mr';

                if ($lCC) {

                    
                    $arrSSR = $this->flightSSRRequestAction(array("TraceId" => $traceId ,"resultindex" => $resultindex ));
                    $WayType            = isset($arrSSR['Response']['MealDynamic'][0][0]['WayType'])?trim($arrSSR['Response']['MealDynamic'][0][0]['WayType']):'2';
                    $Code               = isset($arrSSR['Response']['MealDynamic'][0][0]['Code'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Code']):'No Meal';
                    $Description        = isset($arrSSR['Response']['MealDynamic'][0][0]['Description'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Description']):'2';
                    $AirlineDescription = isset($arrSSR['Response']['MealDynamic'][0][0]['AirlineDescription'])?trim($arrSSR['Response']['MealDynamic'][0][0]['AirlineDescription']):'';
                    $Quantity           = isset($arrSSR['Response']['MealDynamic'][0][0]['Quantity'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Quantity']):'0';
                    $Currency           = isset($arrSSR['Response']['MealDynamic'][0][0]['Currency'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Currency']):'INR';
                    $Price              = isset($arrSSR['Response']['MealDynamic'][0][0]['Price'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Price']):'0';
                    $Origin             = isset($arrSSR['Response']['MealDynamic'][0][0]['Origin'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Origin']):trim($data['Origin']);
                    $Destination        = isset($arrSSR['Response']['MealDynamic'][0][0]['Destination'])?trim($arrSSR['Response']['MealDynamic'][0][0]['Destination']):($data['Destination']);


                    $WayTypeBaggage            = isset($arrSSR['Response']['Baggage'][0][0]['WayType'])?trim($arrSSR['Response']['Baggage'][0][0]['WayType']):'2';
                    $CodeBaggage               = isset($arrSSR['Response']['Baggage'][0][0]['Code'])?trim($arrSSR['Response']['Baggage'][0][0]['Code']):'No Baggage';
                    $DescriptionBaggage        = isset($arrSSR['Response']['Baggage'][0][0]['Description'])?trim($arrSSR['Response']['Baggage'][0][0]['Description']):'2';
                    $WeightBaggage             = isset($arrSSR['Response']['Baggage'][0][0]['Weight'])?trim($arrSSR['Response']['Baggage'][0][0]['Weight']):'0';
                    $CurrencyBaggage           = isset($arrSSR['Response']['Baggage'][0][0]['Currency'])?trim($arrSSR['Response']['Baggage'][0][0]['Currency']):'INR';
                    $PriceBaggage              = isset($arrSSR['Response']['Baggage'][0][0]['Price'])?trim($arrSSR['Response']['Baggage'][0][0]['Price']):'0';
                    
                    
                    $arrPassengers[] = [
                        'Title' => $salutation, //Mr ,Mstr ,Mrs ,Ms ,Miss ,Master ,DR ,CHD ,MST ,PROF ,Inf.
                        'FirstName' => $paxVal['firstName'],
                        'LastName' => $paxVal['lastName'],
                        'PaxType' => $paxVal['PassengerType'],
                        'DateOfBirth' => $PaxDob . "T00:00:00",
                        'Gender' => 1,
                        'PassportNo' => '',
                        'PassportExpiry' => '',
                        'AddressLine1' => $paxAddress,
                        'AddressLine2' => '',
                        'City' => $paxCity,
                        'CountryCode' => $paxCountryCode,
                        'CountryName' => $paxCountryName,
                        'ContactNo' => $ContactNo,
                        'Email' => $EmailId,
                        'IsLeadPax' => ($key == 0) ? 1 : 0,
                        'FFAirline' => '',
                        'FFNumber' => '',
                        'Fare' =>
                        [
                            'BaseFare' => $arrFareBreakdown[$key]['BaseFare'],
                            'Tax' => $arrFareBreakdown[$key]['Tax'],
                            'TransactionFee' => "00.00",
                            'YQTax' => $arrFareBreakdown[$key]['YQTax'],
                            'AdditionalTxnFeeOfrd' => $arrFareBreakdown[$key]['AdditionalTxnFeeOfrd'],
                            'AdditionalTxnFeePub' => $arrFareBreakdown[$key]['AdditionalTxnFeePub'],
                            'AirTransFee' => "00.00"
                        ],
                        'MealDynamic' =>
                        [
                            'WayType' => $WayType,
                            'Code' => $Code,
                            'Description' => $Description,
                            'AirlineDescription' => $AirlineDescription,
                            'Quantity' => $Quantity,
                            'Price' => $Price,
                            'Currency' => $Currency,
                            'Origin' => $Origin,
                            'Destination' => $Destination
                        ],
                        'Baggage' =>
                        [
                            'WayType' => $WayTypeBaggage,
                            'Code' => $CodeBaggage,
                            'Description' => $DescriptionBaggage,
                            'Weight' => $WeightBaggage,
                            'Currency' => $CurrencyBaggage,
                            'Price' => $PriceBaggage,
                            'Origin' => $Origin,
                            'Destination' => $Destination
                        ]
                    ];
                } else {

                    
                    $arrSSR = $this->flightSSRRequestAction(array("TraceId" => $traceId ,"resultindex" => $resultindex ));
                    $MealCode            = isset($arrSSR['Response']['Meal'][0]['Code'])?trim($arrSSR['Response']['Meal'][0]['Code']):'VGML';
                    $MealDesc            = isset($arrSSR['Response']['Meal'][0]['Description'])?trim($arrSSR['Response']['Meal'][0]['Description']):'Veg/Non Dairy';

                    $SeatCode            = isset($arrSSR['Response']['SeatPreference'][0]['Code'])?trim($arrSSR['Response']['SeatPreference'][0]['Code']):'A';
                    $SeatDesc            = isset($arrSSR['Response']['SeatPreference'][0]['Description'])?trim($arrSSR['Response']['SeatPreference'][0]['Description']):'Window';
                    
                    $arrPassengers[] = [
                        'Title' => $salutation, //Mr ,Mstr ,Mrs ,Ms ,Miss ,Master ,DR ,CHD ,MST ,PROF ,Inf.
                        'FirstName' => $paxVal['firstName'],
                        'LastName' => $paxVal['lastName'],
                        'PaxType' => $paxVal['PassengerType'],
                        'DateOfBirth' => $PaxDob . "T00:00:00",
                        'Gender' => 1,
                        'PassportNo' => '',
                        'PassportExpiry' => '',
                        'AddressLine1' => $paxAddress,
                        'AddressLine2' => '',
                        'City' => $paxCity,
                        'CountryCode' => $paxCountryCode,
                        'CountryName' => $paxCountryName,
                        'ContactNo' => $ContactNo,
                        'Email' => $EmailId,
                        'IsLeadPax' => ($key == 0) ? 1 : 0,
                        'FFAirline' => '',
                        'FFNumber' => '',
                        'Fare' =>
                        [
                            'BaseFare' => $arrFareBreakdown[$key]['BaseFare'],
                            'Tax' => $arrFareBreakdown[$key]['Tax'],
                            'TransactionFee' => "00.00",
                            'YQTax' => $arrFareBreakdown[$key]['YQTax'],
                            'AdditionalTxnFeeOfrd' => $arrFareBreakdown[$key]['AdditionalTxnFeeOfrd'],
                            'AdditionalTxnFeePub' => $arrFareBreakdown[$key]['AdditionalTxnFeePub'],
                            'AirTransFee' => "00.00"
                        ],
                        'Meal' =>
                        [
                            'Code' => $MealCode,
                            'Description' => $MealDesc
                        ],
                        'Seat' =>
                        [
                            'Code' => $SeatCode,
                            'Description' => $SeatDesc
                        ]
                    ];
                }
            }
        }

        $Returndatah = array(
            "TraceId"       => $traceId,
            "ResultIndex"   => $resultindex,
            'Passengers'    => $arrPassengers,
            'TrxId'         => $ReturnTrxId,
            'AgencySysId'   => $this->gtxagencysysid,
            'discriminator' => $discriminator,
            'mmp_txn'       => $mmp_txn,
            'GUID'       => $GUID
                
        );
        
        
      //echo "<pre>";print_r($Returndatah);exit;

       if ($lCC) {
                $data[1]['url'] = $this->flightTicketUrl;
            } else {
                $data[1]['url'] = $this->flightBookUrl;
            }
        $data[1]['post'] = array();
        $data[1]['post'] = $Returndatah;
        
        

        $r = $this->multiRequest($data);
        
        
        
        
        
        
        $arrResponse = isset($r[0])?json_decode($r[0], true):[];
        //echo "<pre>";print_r($arrResponse);exit;
        $ErrorCode = isset($arrResponse['Response']['Error']['ErrorCode']) ? $arrResponse['Response']['Error']['ErrorCode'] : '';
        $TraceId = isset($arrResponse['Response']['TraceId']) ? $arrResponse['Response']['TraceId'] : '';
        $Results = isset($arrResponse['Response']['Response']) ? $arrResponse['Response']['Response'] : [];

        if ($ErrorCode == 0) {
            $arr['Depart']['PNR'] = $Results['PNR'];
            $arr['Depart']['BookingId'] = $Results['BookingId'];

            $arrSegments = isset($Results['FlightItinerary']['Segments']) ? $Results['FlightItinerary']['Segments'] : [];

            //echo "<pre>";print_r($Results['FlightItinerary']['Segments']);exit;
            if (count($arrSegments) > 0) {
                $AirSegments = [];
                foreach ($arrSegments as $key => $flightsegments) {
                    
                    // airline logos images...
                    $strAirlineCode = $flightsegments['Airline']['AirlineCode'];
                    if (file_exists($this->flightLogoPath . $strAirlineCode . ".gif")) {
                        $strAirlineLogo = $strAirlineCode . ".gif";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".png")) {
                        $strAirlineLogo = $strAirlineCode . ".png";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".jpg")) {
                        $strAirlineLogo = $strAirlineCode . ".jpg";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".jpeg")) {
                        $strAirlineLogo = $strAirlineCode . ".jpeg";
                    } else {
                        $strAirlineLogo = "noimage.png";
                    }
                    // airline logos images ends...

                    if ($key == 0) {
                        $departureDate = !empty(explode("T", $flightsegments['StopPointDepartureTime'])) ? explode("T", $flightsegments['StopPointDepartureTime']) : '';
                        $departureDate = $departureDate[0];
                    }

                    $departureat = $flightsegments['StopPointDepartureTime'];
                    $departureat = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->getDateTimeFormatString($departureat); // API time format...
                    $departureat = explode(" ", $departureat);
                    $arrivalat = $flightsegments['StopPointArrivalTime'];
                    $arrivalat = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->getDateTimeFormatString($arrivalat); // API time format...
                    $arrivalat = explode(" ", $arrivalat);

                    $flightduration = isset($flightsegments['Duration']) ? $flightsegments['Duration'] : 0;
                    $strflightduration = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->convertMinutesToHoursFormat($flightduration); // minutes to hours...

                    $GroundTime = isset($flightsegments['GroundTime']) ? $flightsegments['GroundTime'] : 0;
                    $GroundTime = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->convertMinutesToHoursFormat($GroundTime); // minutes to hours...

                    $AirSegments[] = [
                        'logo' => $strAirlineLogo,
                        'airline' => $flightsegments['Airline']['AirlineName'],
                        'airlinecode' => $flightsegments['Airline']['AirlineCode'],
                        'flightnumber' => $flightsegments['Airline']['FlightNumber'],
                        'deptime' => end($departureat),
                        'departuredate' => $departureat[0] . " " . $departureat[1] . " " . $departureat[2],
                        'Baggage' => $flightsegments['Baggage'],
                        'CabinBaggage' => $flightsegments['CabinBaggage'],
                        'airline' => $flightsegments['Airline']['AirlineName'],
                        'fareclass' => $flightsegments['Airline']['FareClass'],
                        'origin' => $flightsegments['Origin']['Airport']['AirportCode'],
                        'originTerminal' => $flightsegments['Origin']['Airport']['Terminal'],
                        'origincity' => $flightsegments['Origin']['Airport']['CityName'],
                        'originCountryCode' => $flightsegments['Origin']['Airport']['CountryCode'],
                        'Originairport' => $flightsegments['Origin']['Airport']['AirportName'],
                        'destination' => $flightsegments['Destination']['Airport']['AirportCode'],
                        'destTerminal' => $flightsegments['Destination']['Airport']['Terminal'],
                        'destcity' => $flightsegments['Destination']['Airport']['CityName'],
                        'destCountryCode' => $flightsegments['Destination']['Airport']['CountryCode'],
                        'destairport' => $flightsegments['Destination']['Airport']['AirportName'],
                        'arrtime' => end($arrivalat),
                        'arrivaldate' => $arrivalat[0] . " " . $arrivalat[1] . " " . $arrivalat[2],
                        'Duration' => $strflightduration,
                        'GroundTime' => $GroundTime,
                    ];

                    
                }
                $arr['Depart']['Segments'] = $AirSegments;
            }

            
            $arr['Depart']['TotalOfferedForAllPax'] = $urlData['Depart']['TotalOfferedForAllPax'];
            $arr['Depart']['ServicesAndTax']        = $urlData['Depart']['ServicesAndTax'];
            $arr['Depart']['TotalOtherCharge']      = $urlData['Depart']['TotalOtherCharge'];
            $arr['Depart']['CostToCustomer']        = $urlData['Depart']['CostToCustomer'];
            
            
            $arrPassengers = isset($Results['FlightItinerary']['Passenger']) ? $Results['FlightItinerary']['Passenger'] : [];
            $arrFlightItinerary = isset($Results['FlightItinerary']) ? $Results['FlightItinerary'] : [];
            if (count($arrPassengers) > 0) {
                $arrPax = [];
                foreach ($arrPassengers as $paxDetails) {


                    $IsLCC = isset($Results['FlightItinerary']['IsLCC']) ? $Results['FlightItinerary']['IsLCC'] : 0;
                    if ($IsLCC) {
                        $arrPax[] = [
                            'Title' => $paxDetails['Title'],
                            'FirstName' => $paxDetails['FirstName'],
                            'LastName' => $paxDetails['LastName'],
                            'EmailId' => $EmailId,
                            'DateOfBirth' => $paxDetails['DateOfBirth'],
                            'PNR' => $Results['FlightItinerary']['PNR'],
                            'BookingId' => $Results['BookingId'],
                            'TicketId' => isset($paxDetails['Ticket']['TicketId']) ? $paxDetails['Ticket']['TicketId'] : '',
                            'TicketNumber' => isset($paxDetails['Ticket']['TicketNumber']) ? $paxDetails['Ticket']['TicketNumber'] : ''
                        ];
                    } else {
                        $arrPax[] = [
                            'Title' => $paxDetails['Title'],
                            'FirstName' => $paxDetails['FirstName'],
                            'LastName' => $paxDetails['LastName'],
                            'EmailId' => $EmailId,
                            'DateOfBirth' => $paxDetails['DateOfBirth'],
                            'PNR' => $Results['FlightItinerary']['PNR'],
                            'BookingId' => $Results['BookingId'],
                            'TicketId' => isset($paxDetails['Ticket']['TicketId']) ? $paxDetails['Ticket']['TicketId'] : '',
                            'TicketNumber' => isset($paxDetails['Ticket']['TicketNumber']) ? $paxDetails['Ticket']['TicketNumber'] : ''
                        ];
                    }
                }
                $arr['Depart']['Passengers'] = $arrPax;
            }


            $FareRules = isset($Results['FlightItinerary']['FareRules'][0]['FareRuleDetail']) ? $Results['FlightItinerary']['FareRules'][0]['FareRuleDetail'] : [];
            $arr['Depart']['FareRules'] = addslashes($FareRules);


            $arrFareDetails = isset($Results['FlightItinerary']['Fare']) ? $Results['FlightItinerary']['Fare'] : [];

            $arr['Depart']['FareDetails'] = [
                "Currency" => $arrFareDetails['Currency'],
                "BaseFare" => $arrFareDetails['BaseFare'],
                "AgencyTotalMarkUp" => $AgencyTotalMarkUp,
                "AgencyTotalCommisions" => $AgencyTotalCommisions,
                "Tax" => $arrFareDetails['Tax'],
                "YQTax" => $arrFareDetails['YQTax'],
                "AdditionalTxnFeeOfrd" => $arrFareDetails['AdditionalTxnFeeOfrd'],
                "AdditionalTxnFeePub" => $arrFareDetails['AdditionalTxnFeePub'],
                "OtherCharges" => $arrFareDetails['OtherCharges'],
                "Discount" => $arrFareDetails['Discount'],
                "PublishedFare" => $arrFareDetails['PublishedFare']
            ];
            
            
            
            
            //Email To Customer & Admin Depart.............
            
            $arrMarkups = isset($arrMarkupsAndPrice['Depart'])?$arrMarkupsAndPrice['Depart']:[];
            
//            $arrMarkups = [
//                        "AgencyTotalMarkUp" => @$AgencyTotalMarkUp,
//                        "AgencyTotalCommisions" => @$AgencyTotalCommisions
//                    ];
                    
            $this->bookingEmailToAgentAction($arrResponse,$arrMarkups);
            $this->bookingEmailToCustomerAction($arrResponse,$arrMarkups);
            //Email To Customer & Admin Depart Ends.............
            
            
            // Update Booking Status to B2B Depart.........
            try {
                $this->postFields .= "&MasterTPSysId=" . $MasterTPSysIdDepart;
                $this->postFields .= "&TPSysId=" . $TPSysIdDepart;
                $this->postFields .= "&VersionId=" . $VersionIdDepart;
                $this->postFields .= "&XRefBookingId=" . $Results['BookingId'] . "/" . $Results['PNR'];
                $this->postFields .= "&APIBookingRes=" . json_encode($arrResponse);
                $this->postFields .= "&ErrorCode=0";
                $model = new Gtxwebservices_Model_Webservices();
                $result = $model->updateFlightBookingDetails($this->postFields);
            } catch (Exception $error) {

            }
            // Update Booking Status to B2B Depart end.........
            
            
            
            
        } else {
            //$arrCustomErrors = unserialize(CONST_FLIGHT_CUSTOM_ERRORS);
            $ErrorCode = isset($arrResponse['Response']['Error']['ErrorCode']) ? $arrResponse['Response']['Error']['ErrorCode'] : 0;
            $arr['Depart']['error'] = $arrResponse['Response']['Error']; //$arrCustomErrors[$ErrorCode];
            
            
            // Update Booking Status to B2B Depart.........
            try {
                $this->postFields .= "&MasterTPSysId=" . $MasterTPSysIdDepart;
                $this->postFields .= "&TPSysId=" . $TPSysIdDepart;
                $this->postFields .= "&VersionId=" . $VersionIdDepart;
                $this->postFields .= "&XRefBookingId=" . '';
                $this->postFields .= "&APIBookingRes=" . json_encode($arrResponse);
                $this->postFields .= "&ErrorCode=70";
                $model = new Gtxwebservices_Model_Webservices();
                $result = $model->updateFlightBookingDetails($this->postFields);
            } catch (Exception $error) {

            }
            // Update Booking Status to B2B Depart end.........
            
            
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        // Return.............
        
        $arrResponse = '';
        
        $arrResponse = json_decode($r[1], true);

        $ErrorCode = isset($arrResponse['Response']['Error']['ErrorCode']) ? $arrResponse['Response']['Error']['ErrorCode'] : '';
        $TraceId = isset($arrResponse['Response']['TraceId']) ? $arrResponse['Response']['TraceId'] : '';
        $Results = isset($arrResponse['Response']['Response']) ? $arrResponse['Response']['Response'] : [];

        if ($ErrorCode == 0) {
            $arr['Retrun']['PNR'] = $Results['PNR'];
            $arr['Retrun']['BookingId'] = $Results['BookingId'];

            $arrSegments = isset($Results['FlightItinerary']['Segments']) ? $Results['FlightItinerary']['Segments'] : [];

            //echo "<pre>";print_r($Results['FlightItinerary']['Segments']);exit;
            if (count($arrSegments) > 0) {
                $AirSegments = [];
                foreach ($arrSegments as $key => $flightsegments) {
                    
                    // airline logos images...
                    $strAirlineCode = $flightsegments['Airline']['AirlineCode'];
                    if (file_exists($this->flightLogoPath . $strAirlineCode . ".gif")) {
                        $strAirlineLogo = $strAirlineCode . ".gif";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".png")) {
                        $strAirlineLogo = $strAirlineCode . ".png";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".jpg")) {
                        $strAirlineLogo = $strAirlineCode . ".jpg";
                    } elseif (file_exists($this->flightLogoPath . $strAirlineCode . ".jpeg")) {
                        $strAirlineLogo = $strAirlineCode . ".jpeg";
                    } else {
                        $strAirlineLogo = "noimage.png";
                    }
                    // airline logos images ends...

                    if ($key == 0) {
                        $departureDate = !empty(explode("T", $flightsegments['StopPointDepartureTime'])) ? explode("T", $flightsegments['StopPointDepartureTime']) : '';
                        $departureDate = $departureDate[0];
                    }

                    $departureat = $flightsegments['StopPointDepartureTime'];
                    $departureat = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->getDateTimeFormatString($departureat); // API time format...
                    $departureat = explode(" ", $departureat);
                    $arrivalat = $flightsegments['StopPointArrivalTime'];
                    $arrivalat = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->getDateTimeFormatString($arrivalat); // API time format...
                    $arrivalat = explode(" ", $arrivalat);

                    $flightduration = isset($flightsegments['Duration']) ? $flightsegments['Duration'] : 0;
                    $strflightduration = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->convertMinutesToHoursFormat($flightduration); // minutes to hours...

                    $GroundTime = isset($flightsegments['GroundTime']) ? $flightsegments['GroundTime'] : 0;
                    $GroundTime = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->convertMinutesToHoursFormat($GroundTime); // minutes to hours...

                    $AirSegments[] = [
                        'logo' => $strAirlineLogo,
                        'airline' => $flightsegments['Airline']['AirlineName'],
                        'airlinecode' => $flightsegments['Airline']['AirlineCode'],
                        'flightnumber' => $flightsegments['Airline']['FlightNumber'],
                        'deptime' => end($departureat),
                        'departuredate' => $departureat[0] . " " . $departureat[1] . " " . $departureat[2],
                        'Baggage' => $flightsegments['Baggage'],
                        'CabinBaggage' => $flightsegments['CabinBaggage'],
                        'airline' => $flightsegments['Airline']['AirlineName'],
                        'fareclass' => $flightsegments['Airline']['FareClass'],
                        'origin' => $flightsegments['Origin']['Airport']['AirportCode'],
                        'originTerminal' => $flightsegments['Origin']['Airport']['Terminal'],
                        'origincity' => $flightsegments['Origin']['Airport']['CityName'],
                        'originCountryCode' => $flightsegments['Origin']['Airport']['CountryCode'],
                        'Originairport' => $flightsegments['Origin']['Airport']['AirportName'],
                        'destination' => $flightsegments['Destination']['Airport']['AirportCode'],
                        'destTerminal' => $flightsegments['Destination']['Airport']['Terminal'],
                        'destcity' => $flightsegments['Destination']['Airport']['CityName'],
                        'destCountryCode' => $flightsegments['Destination']['Airport']['CountryCode'],
                        'destairport' => $flightsegments['Destination']['Airport']['AirportName'],
                        'arrtime' => end($arrivalat),
                        'arrivaldate' => $arrivalat[0] . " " . $arrivalat[1] . " " . $arrivalat[2],
                        'Duration' => $strflightduration,
                        'GroundTime' => $GroundTime,
                    ];

                    
                }
                $arr['Retrun']['Segments'] = $AirSegments;
            }

            
            $arr['Retrun']['TotalOfferedForAllPax'] = $urlData['Return']['TotalOfferedForAllPax'];
            $arr['Retrun']['ServicesAndTax']        = $urlData['Return']['ServicesAndTax'];
            $arr['Retrun']['TotalOtherCharge']      = $urlData['Return']['TotalOtherCharge'];
            $arr['Retrun']['CostToCustomer']        = $urlData['Return']['CostToCustomer'];            

            
            $arrPassengers = isset($Results['FlightItinerary']['Passenger']) ? $Results['FlightItinerary']['Passenger'] : [];
            $arrFlightItinerary = isset($Results['FlightItinerary']) ? $Results['FlightItinerary'] : [];
            if (count($arrPassengers) > 0) {
                $arrPax = [];
                foreach ($arrPassengers as $paxDetails) {


                    $IsLCC = isset($Results['FlightItinerary']['IsLCC']) ? $Results['FlightItinerary']['IsLCC'] : 0;
                    if ($IsLCC) {
                        $arrPax[] = [
                            'Title' => $paxDetails['Title'],
                            'FirstName' => $paxDetails['FirstName'],
                            'LastName' => $paxDetails['LastName'],
                            'DateOfBirth' => $paxDetails['DateOfBirth'],
                            'PNR' => $Results['FlightItinerary']['PNR'],
                            'BookingId' => $Results['BookingId'],
                            'TicketId' => isset($paxDetails['Ticket']['TicketId']) ? $paxDetails['Ticket']['TicketId'] : '',
                            'TicketNumber' => isset($paxDetails['Ticket']['TicketNumber']) ? $paxDetails['Ticket']['TicketNumber'] : ''
                        ];
                    } else {
                        $arrPax[] = [
                            'Title' => $paxDetails['Title'],
                            'FirstName' => $paxDetails['FirstName'],
                            'LastName' => $paxDetails['LastName'],
                            'DateOfBirth' => $paxDetails['DateOfBirth'],
                            'PNR' => $Results['FlightItinerary']['PNR'],
                            'BookingId' => $Results['BookingId'],
                            'TicketId' => isset($paxDetails['Ticket']['TicketId']) ? $paxDetails['Ticket']['TicketId'] : '',
                            'TicketNumber' => isset($paxDetails['Ticket']['TicketNumber']) ? $paxDetails['Ticket']['TicketNumber'] : ''
                        ];
                    }
                }
                $arr['Retrun']['Passengers'] = $arrPax;
            }


            $FareRules = isset($Results['FlightItinerary']['FareRules'][0]['FareRuleDetail']) ? $Results['FlightItinerary']['FareRules'][0]['FareRuleDetail'] : [];
            $arr['Retrun']['FareRules'] = addslashes($FareRules);


            $arrFareDetails = isset($Results['FlightItinerary']['Fare']) ? $Results['FlightItinerary']['Fare'] : [];

            $arr['Retrun']['FareDetails'] = [
                "Currency" => $arrFareDetails['Currency'],
                "BaseFare" => $arrFareDetails['BaseFare'],
                "AgencyTotalMarkUp" => $AgencyTotalMarkUpReturn,
                "AgencyTotalCommisions" => $AgencyTotalCommisionsReturn,
                "Tax" => $arrFareDetails['Tax'],
                "YQTax" => $arrFareDetails['YQTax'],
                "AdditionalTxnFeeOfrd" => $arrFareDetails['AdditionalTxnFeeOfrd'],
                "AdditionalTxnFeePub" => $arrFareDetails['AdditionalTxnFeePub'],
                "OtherCharges" => $arrFareDetails['OtherCharges'],
                "Discount" => $arrFareDetails['Discount'],
                "PublishedFare" => $arrFareDetails['PublishedFare']
            ];
            
            
            //Email To Customer & Admin Depart.............
            $arrMarkups = [];
            $arrMarkups = isset($arrMarkupsAndPrice['Return'])?$arrMarkupsAndPrice['Return']:[];
            
//            $arrMarkups = [
//                        "AgencyTotalMarkUp" => @$AgencyTotalMarkUpReturn,
//                        "AgencyTotalCommisions" => @$AgencyTotalCommisionsReturn
//                    ];
                    
            $this->bookingEmailToAgentAction($arrResponse,$arrMarkups);
            $this->bookingEmailToCustomerAction($arrResponse,$arrMarkups);
            //Email To Customer & Admin Depart Ends.............
            
            
            // Update Booking Status to B2B Depart.........
            try {
                $this->postFields .= "&MasterTPSysId=" . $MasterTPSysIdReturn;
                $this->postFields .= "&TPSysId=" . $TPSysIdReturn;
                $this->postFields .= "&VersionId=" . $VersionIdReturn;
                $this->postFields .= "&XRefBookingId=" . $Results['BookingId'] . "/" . $Results['PNR'];
                $this->postFields .= "&APIBookingRes=" . json_encode($arrResponse);
                $this->postFields .= "&ErrorCode=0";
                $model = new Gtxwebservices_Model_Webservices();
                $result = $model->updateFlightBookingDetails($this->postFields);
            } catch (Exception $error) {

            }
            // Update Booking Status to B2B Depart end.........
            
            
            
        } else {
            //$arrCustomErrors = unserialize(CONST_FLIGHT_CUSTOM_ERRORS);
            $ErrorCode = isset($arrResponse['Response']['Error']['ErrorCode']) ? $arrResponse['Response']['Error']['ErrorCode'] : 0;
            $arr['Retrun']['error'] = $arrResponse['Response']['Error']; //$arrCustomErrors[$ErrorCode];
            
            
            
            // Update Booking Status to B2B Depart.........
            try {
                $this->postFields .= "&MasterTPSysId=" . $MasterTPSysIdReturn;
                $this->postFields .= "&TPSysId=" . $TPSysIdReturn;
                $this->postFields .= "&VersionId=" . $VersionIdReturn;
                $this->postFields .= "&XRefBookingId=" . '';
                $this->postFields .= "&APIBookingRes=" . json_encode($arrResponse);
                $this->postFields .= "&ErrorCode=70";
                $model = new Gtxwebservices_Model_Webservices();
                $result = $model->updateFlightBookingDetails($this->postFields);
            } catch (Exception $error) {

            }
            // Update Booking Status to B2B Depart end.........
            
            
            
        }
        
        
        
        
        
        
        
        $JSONFileName = $_SERVER['DOCUMENT_ROOT'] . "/public/data/flight-search/flight_search_".trim($traceid).".json";
        if (file_exists($JSONFileName)) { 
            unlink($JSONFileName);
        }
        
        
        
        
        
        
        return $arr;
        //echo "<pre>";print_r($r);exit;
    }

    public function multiRequest($data, $options = array()) {

        // array of curl handles
        $curly = array();
        // data to be returned
        $result = array();

        // multi handle
        $mh = curl_multi_init();

        // loop through $data and create curl handles
        // then add them to the multi-handle
        foreach ($data as $id => $d) {

            $curly[$id] = curl_init();

            $url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
            curl_setopt($curly[$id], CURLOPT_ENCODING, "gzip");
            curl_setopt($curly[$id], CURLOPT_URL, $url);
            curl_setopt($curly[$id], CURLOPT_HEADER, 0);
             curl_setopt($curly[$id], CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);

            // post?
            if (is_array($d)) {
                if (!empty($d['post'])) {
                    curl_setopt($curly[$id], CURLOPT_POST,true);
                    curl_setopt($curly[$id], CURLOPT_POSTFIELDS, http_build_query($d['post']));
                }
            }
           curl_setopt($curly[$id], CURLOPT_HTTPHEADER, array());
            
            if (!empty($options)) {
                curl_setopt_array($curly[$id], $options);
            }

            curl_multi_add_handle($mh, $curly[$id]);
        }

        // execute the handles
        $running = null;
        do {
            curl_multi_exec($mh, $running);
        } while ($running > 0);


        // get content and remove handles
        foreach ($curly as $id => $c) {
            $result[$id] = curl_multi_getcontent($c);
            curl_multi_remove_handle($mh, $c);
        }

        // all done
        curl_multi_close($mh);

        return $result;
    }
    
    public function emailVoucherAction(){
       
       
       $this->_helper->viewRenderer->setNoRender(true);
       $this->_helper->layout->disableLayout();
       if ($this->_request->isXmlHttpRequest()) {
         
            $emailId = trim($this->getRequest()->getParam('emailId'));
            $FromName = $this->siteName;
            $FromEmail = "prashant@catpl.co.in";
            $bodyText = $this->getRequest()->getParam('bodyText');
            
            
            if(empty($emailId)) {
                $response = array('success' => false, 'msg' => 'Please enter Email ID.');
                echo json_encode($response);
                exit;
            }

            if (!filter_var($emailId, FILTER_VALIDATE_EMAIL)) {
                $msg =  "Email address is not valid.";
                $response = array('success' => false, 'msg' => $msg);
                echo json_encode($response);
                exit;
            }
            
        

            $emailData = array('fromEmail'=>$FromEmail,'fromName'=>$FromName,'subject'=>'Flight Booking Voucher','to'=>array($emailId),'bodyHtml'=>$bodyText,'bodyText'=>'');
            
            $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
            $arrEmailStatistics = array(
                "TPSysId" => 0,
                "TypeSysId" => 1,  // 1 For Email 2 For SMS
                "AgencySysId" => "16",
                "AgentSysId" => "42",
                "Title" => $bodyText,
                "Source" => $arrEmailStatisticsType[1], // 1 For Vouchers
                "Status" => 0,
                "RefSysId" => "",
                "RefSysStatus" => "",
                "CreateDate" => Zend_Date::now()->toString('YYYY-MM-dd HH:mm:ss')
            );
            
            $emailResponse = json_decode($this->mailSentByElastice($emailData),true);
            try {
                if($emailResponse['success']) {
                    $msg =  "Voucher Emailed successfully.";
                    $response = array('success' => true, 'msg' => $msg);
                    echo json_encode($response);
                    exit;
                }
             } catch (Exception $err) {
                 if($mail->send($transport)) {
                    $msg =  "Oops! there might be some technical issue, please try after some time.";
                    $response = array('success' => false, 'msg' => $msg);
                    echo json_encode($response);
                    exit;
                }
            }  
        
       }
       
   }
   
    public function bookingDetailsAction() {
         $this->_helper->layout->setLayout('flight-book-layout');
         $this->view->baseUrl = $this->baseUrl;
         $id = base64_decode($this->getRequest()->getParam('id'));
         $objTempUrl = new Flights_Model_TblTempUrl();
         $arrUrlData = $objTempUrl->getBookingData($id);
         $arrResponse = isset($arrUrlData['response']) ? json_decode($arrUrlData['response'], true) : [];
         $arrApiResponse = isset($arrUrlData['apiResponse']) ? json_decode($arrUrlData['apiResponse'], true) : [];
         $this->view->arrResponse = $arrResponse;
         
     }
     
     
     
     
     public function paymentCancelledAction(){
         $this->_helper->layout->setLayout('flight-book-layout');
         $this->view->baseUrl = $this->baseUrl; 
         $this->view->status = $this->getRequest()->getParam('status');
         
     }
   
    
     
     public function flightSSRRequestAction($data){

            $datah = array(
                "TraceId"       => $data['TraceId'],
                "ResultIndex"   => $data['resultindex']
            );

            try {
                $data_stringh = json_encode($datah);
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $this->flightSSRUrl);
                curl_setopt($ch, CURLOPT_ENCODING, "gzip");
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_POST, true);
                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($datah));
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                ));
                $response = curl_exec($ch);
            } catch (Exception $error) {
                $response = $error->getMessage();
            }

            return json_decode($response,true);
        
    }
    
    
    
    public function bookingEmailToAgentAction($data = [],$arrMarkups = []){
        
        $arrSegments = isset($data['Response']['Response']['FlightItinerary']['Segments'])?$data['Response']['Response']['FlightItinerary']['Segments']:[];
        $arrOrigin = current($arrSegments);
        $OriginCityName = isset($arrOrigin['Origin']['Airport']['CityName'])?$arrOrigin['Origin']['Airport']['CityName']:'';
        $arrDestination = end($arrSegments);
        $DestCityName = isset($arrDestination['Destination']['Airport']['CityName'])?$arrDestination['Destination']['Airport']['CityName']:'';
        
        //Mail Booking Itenary To Customer

        $html = new Zend_View();
        $html->setScriptPath(APPLICATION_PATH . '/modules/flights/views/scripts/search/');
        $html->assign('arrResponse', $data);
        $html->assign('arrMarkups', $arrMarkups);
        $html->assign('baseUrl',$this->baseUrl);
        $html->assign('siteName',$this->siteName);
        $html->assign('tollfreenumber',$this->tollfreenumber);
        $bodyText = $html->render('booking-email-to-agent.phtml');
        $subject = "Flight Booking Itinerary From ".$OriginCityName." To ".$DestCityName;
        $emailData = array('fromEmail'=>$this->superAdminEmail,'fromName'=>$this->siteName,'subject'=> $subject,'to'=>array($this->superAdminEmail,"gaurav@hellogtx.com"),'bodyHtml'=>$bodyText,'bodyText'=>'');
//        $emailData = array('fromEmail'=>$this->superAdminEmail,'fromName'=>$this->siteName,'subject'=> $subject,'to'=>array("pardeep.kp86@gmail.com","piyush@catpl.co.in"),'bodyHtml'=>$bodyText,'bodyText'=>'');
        try {
            $this->mailSentByElastice($emailData);
        } catch (Exception $err) {
            print_r($err, true);
        }

        //Mail Booking Itenary To Customer
      
        
    }
    
    public function bookingEmailToCustomerAction($data = [],$arrMarkups = []){
        
        
        $arrPassenger = isset($data['Response']['Response']['FlightItinerary']['Passenger'])?$data['Response']['Response']['FlightItinerary']['Passenger']:[];
        $ToEmailId = isset($arrPassenger[0]['Email'])?$arrPassenger[0]['Email']:'';
        
        $arrSegments = isset($data['Response']['Response']['FlightItinerary']['Segments'])?$data['Response']['Response']['FlightItinerary']['Segments']:[];
        $arrOrigin = current($arrSegments);
        $OriginCityName = isset($arrOrigin['Origin']['Airport']['CityName'])?$arrOrigin['Origin']['Airport']['CityName']:'';
        $arrDestination = end($arrSegments);
        $DestCityName = isset($arrDestination['Destination']['Airport']['CityName'])?$arrDestination['Destination']['Airport']['CityName']:'';
        
        //Mail Booking Itenary To Customer

        $html = new Zend_View();
        $html->setScriptPath(APPLICATION_PATH . '/modules/flights/views/scripts/search/');
        $html->assign('arrResponse', $data);
        $html->assign('arrMarkups', $arrMarkups);
        $html->assign('baseUrl',$this->baseUrl);
        $html->assign('siteName',$this->siteName);
        $html->assign('tollfreenumber',$this->tollfreenumber);
        $bodyText = $html->render('mail-booking-content.phtml');
        $subject = "Flight Booking Itinerary From ".$OriginCityName." To ".$DestCityName;
        $emailData = array('fromEmail'=>$this->superAdminEmail,'fromName'=>$this->siteName,'subject'=> $subject,'to'=>array($ToEmailId),'bodyHtml'=>$bodyText,'bodyText'=>'');
        try {
            $this->mailSentByElastice($emailData);
        } catch (Exception $err) {
            print_r($err, true);
        }

        //Mail Booking Itenary To Customer
        
    }
    
    
    public function errorAction(){
         $this->_helper->layout->setLayout('flight-book-layout');
         $this->view->baseUrl = $this->baseUrl; 
         $id = !empty($this->getRequest()->getParam('id'))?base64_decode($this->getRequest()->getParam('id')):'';
         
         if(!empty($id)){
            $objTempUrl = new Flights_Model_TblTempUrl();
            $arrUrlData = $objTempUrl->getUrlData($id);
            $urlData = isset($arrUrlData['UrlData'])?json_decode($arrUrlData['UrlData'],true):[];
            $this->view->errorMessage = isset($urlData['Depart']['error'])?$urlData['Depart']['error']:'Oops! There might be some technical issue, Please contact administrator.';
         }else{
             $msg = !empty($this->getRequest()->getParam('msg'))?base64_decode($this->getRequest()->getParam('msg')):'';
             $this->view->errorMessage = !empty($msg)?$msg:'Oops! There might be some technical issue, Please contact administrator.';
         }
        
        
    }
    
    

}

Youez - 2016 - github.com/yon3zu
LinuXploit