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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/gtxapi.hellogtx.com/library/Helper/Flight(02_09_2025).php
<?php

/* * *************************************************************
 * Catabatic Technology Pvt. Ltd.
 * File Name     : Flight.php
 * File Desc.    : Flight helper to including supporting functions/methods for Flights
 * Created By    : Md Sabir <sabir@catpl.co.in>
 * Created Date  : 17 Sep 2022
 * ************************************************************* */

class Zend_Controller_Action_Helper_Flight 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'];
    }

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

    public function MinutesToHours($minutes)
    {
        if ($minutes) {
            $hours = floor($minutes / 60);
            $min = $minutes - ($hours * 60);
            $LAYOVERTime = $hours . "h " . $min . 'm';
            return $LAYOVERTime;
        }
    }

    public function getTimeFromApiString($string)
    {
        if (empty($string))
            return '';

        $arr = explode("T", $string);

        $date = new DateTime($arr[0]);

        return substr(@$arr[1], 0, 5);
    }
    public function getTimeFromApiString2($string)
    {
        if (empty($string))
            return '';

        $arr = explode(" ", $string);

        $date = new DateTime($arr[0]);

        return substr(@$arr[1], 0, 5);
    }

    public function convertMinutesToHoursFormat($minutes)
    {
        if ($minutes < 1) {
            //return;
        }
        $hours = floor($minutes / 60);
        $minutes = ($minutes % 60);
        return $hours . 'h ' . $minutes . 'm';
    }
    public function convertMinutes($fromtime, $totime)
    {
        $to_time = strtotime($totime);
        $from_time = strtotime($fromtime);
        return round(abs($to_time - $from_time) / 60, 2);
    }
    public function CalculateTotalTime($time1, $time2)
    {
        $diff = abs(strtotime($time1) - strtotime($time2));

        $tmins = $diff / 60;
        $hours = floor($tmins / 60);
        $mins = $tmins % 60;
        return $hours . 'h ' . $mins . 'm';
    }

    public function GetFullUrl()
    {
        $s = &$_SERVER;
        $ssl = (!empty($s['HTTPS']) && $s['HTTPS'] == 'on') ? true : false;
        $sp = strtolower($s['SERVER_PROTOCOL']);
        $protocol = substr($sp, 0, strpos($sp, '/')) . (($ssl) ? 's' : '');
        $port = $s['SERVER_PORT'];
        $port = ((!$ssl && $port == '80') || ($ssl && $port == '443')) ? '' : ':' . $port;
        $host = isset($s['HTTP_X_FORWARDED_HOST']) ? $s['HTTP_X_FORWARDED_HOST'] : (isset($s['HTTP_HOST']) ? $s['HTTP_HOST'] : null);
        $host = isset($host) ? $host : $s['SERVER_NAME'] . $port;
        $uri = $protocol . '://' . $host . $s['REQUEST_URI'];
        $segments = explode('?', $uri, 2);
        $url = $segments[0];
        return $url;
    }

    public function getAirlinesName()
    {

        $url = $this->baseUrl . "public/data/airlinesName.json";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $output = curl_exec($ch);
        curl_close($ch);
        $response = json_decode($output, true);
        $AirlinesName = [];
        if ($response) {
            foreach ($response as $key => $value) {
                $AirlinesName[$value['AIRLINECODE']] = $value;
            }
        }

        return $AirlinesName;
    }

    public function CreateLogs($data)
    {
        $agency_sys_id = isset($data['AgencySysId']) ? $data['AgencySysId'] : '';
        $requests      = $this->getRequest()->getParams();

        $data = [
            "user_id"          => isset($data['user_id']) ? $data['user_id'] : 1,
            "agency_sys_id"    => isset($agency_sys_id) ? $agency_sys_id : '',
            "application_name" => isset($data['siteName']) ? $data['siteName'] : $_SERVER['HTTP_HOST'],
            "site_url"         => $this->GetFullUrl(),
            "module_name"      => isset($requests['module']) ? ucfirst($requests['module']) : '',
            "controller_name"  => isset($requests['controller']) ? ucfirst($requests['controller']) : '',
            "action_name"      => isset($requests['action']) ? ucfirst($requests['action']) : '',
            "custom_error"     => isset($data['custom_error']) ? $data['custom_error'] : '',
            "error"            => isset($data['error']) ? $data['error'] : '',
            "ip_address"       => $_SERVER['REMOTE_ADDR'],
            "text_udf"         => isset($data['text_udf']) ? json_encode($data['text_udf']) : '', // Response
            "char_udf"         => isset($data['char_udf']) ? json_encode($data['char_udf']) : '', // Request
            "udf1"             => isset($data['udf1']) ? $data['udf1'] : '',
            "udf2"             => isset($data['udf2']) ? $data['udf2'] : '',
            "udf5"             => isset($data['udf5']) ? $data['udf5'] : '',
            "from_destination" => isset($data['from_destination']) ? $data['from_destination'] : '',
            "to_destination"   => isset($data['to_destination']) ? $data['to_destination'] : '',
            "Pax"              => isset($data['Pax']) ? $data['Pax'] : '',
            "flight_type"      => isset($data['flight_type']) ? $data['flight_type'] : 5,
            "source"           => isset($data['source']) ? $data['source'] : 1,
            "Supplier"         => isset($data['Supplier']) ? $data['Supplier'] : '',
            "Airline"          => isset($data['Airline']) ? $data['Airline'] : '',
            "status"           => isset($data['status']) ? $data['status'] : 1, //
            "created_on"       => date('Y-m-d H:i:s'),
            "updated_on"       => date('Y-m-d'),
            "is_active"        => isset($data['is_active']) ? $data['is_active'] : true, //,
            "is_mark_for_delete" => isset($data['is_mark_for_delete']) ? $data['is_mark_for_delete'] : false, //,
        ];
        $url          = 'https://logs.hellogtx.com/api/v1/create-logs/';
        $data_stringh = json_encode($data);
        $ch           = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        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);
        return $response;
    }

    public function getRangeByValue($ratearray, $input)
    {
        foreach ($ratearray as $key => $value) {
            $keyex = explode('-', $value);
            if ($keyex[0] <= $input && $keyex[1] >= $input) {
                return $value;
            }
        }
    }

    public function createApiCallLogs($strDestination, $data)
    {

        $strPath = $_SERVER["DOCUMENT_ROOT"] . "/public/logs/" . $strDestination;

        $strFolder = trim($strPath, basename($strPath)); //exit;

        if (!file_exists($strFolder)) {  // if folder does not exists...
            mkdir($strFolder, 0777, true);
        }

        file_put_contents($strPath, $data); // wirte data to respective file...
    }
    public function createApiXMLLogs($strDestination, $data)
    {

        $strPath = $_SERVER["DOCUMENT_ROOT"] . "/public/logs/" . $strDestination;
        $strFolder = trim($strPath, basename($strPath)); //exit;

        if (!file_exists($strFolder)) {  // if folder does not exists...
            mkdir($strFolder, 0777, true);
        }
        $dom = new DOMDocument;
        $dom->preserveWhiteSpace = FALSE;
        $dom->loadXML($data);

        //Save XML as a file
        $dom->save($strPath);
    }


    function AgencyMarketPlace($arrSessionData = array(), $URL, $SECURITYKEY = null)
    {

        $jsonEncode = json_encode($arrSessionData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $URL);
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, ($jsonEncode));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        if ($SECURITYKEY) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Accept: application/json',
                'Content-Type: application/json',
                'Accept-Encoding: gzip',
                'SecurityKey: ' . $SECURITYKEY,
                'Content-Length: ' . strlen($jsonEncode),
            ));
        }


        $outputH = curl_exec($ch);
        $response = json_decode($outputH, true);
        return $response;
    }

    public function agencyTermAndCondition($AgencySysId, $SecurityKey)
    {
        if ($AgencySysId) {
            $API_URL = API_GET_AGENCY_TERMS_AND_CONDITION;
            $apiData = array(
                "AgencySysId" => $AgencySysId,
            );
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => $API_URL,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => $apiData,
            ));
            $output = curl_exec($curl);
            $response = json_decode($output, true);

            $apiDataIV = array(
                "AgencySysId" => $AgencySysId,
                "SecurityKey" => $SecurityKey
            );

            $curl_IV = curl_init(API_GET_IV_KEY);
            curl_setopt($curl_IV, CURLOPT_POST, true);
            //curl_setopt($curl, CURLOPT_HEADER, true);
            curl_setopt($curl_IV, CURLOPT_POSTFIELDS, http_build_query($apiDataIV));
            curl_setopt($curl_IV, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl_IV, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl_IV, CURLOPT_TIMEOUT, 300);
            $responseIV = curl_exec($curl_IV);
            curl_close($curl_IV);

            $IVData   = Zend_Json::decode($responseIV, true);
            $agencyData = new GTX_Model_Encrytion($response['Message'], $apiDataIV['SecurityKey'], $IVData['Message']);
            return Zend_Json::decode($agencyData->decrypt(), true);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    function getAgencyData($gtxagencysysid, $SecurityKey = null)
	{
		if ($gtxagencysysid) {
			$apiDataIV = array(
				"AgencySysId" => $gtxagencysysid,
				"SecurityKey" => $SecurityKey,
			);
            if($gtxagencysysid == 1){
                $curl_IV = curl_init('https://st.globaltravelexchange.com/webservice/agency/get-iv-key/');
            }else{
                $curl_IV = curl_init(API_GET_IV_KEY);
            }
           
			curl_setopt($curl_IV, CURLOPT_POST, true);
			//curl_setopt($curl, CURLOPT_HEADER, true);
			curl_setopt($curl_IV, CURLOPT_POSTFIELDS, http_build_query($apiDataIV));
			curl_setopt($curl_IV, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($curl_IV, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($curl_IV, CURLOPT_TIMEOUT, 300);
			$responseIV = curl_exec($curl_IV);
			curl_close($curl_IV);
			//print_r($responseIV);die;
			$apiData = array(
				"AgencySysId" => $gtxagencysysid,
			);
            if($gtxagencysysid == 1){
                $curl_p = curl_init('https://st.globaltravelexchange.com/webservice/agency/get-agency-data/');
            }else{
                $curl_p = curl_init(API_GET_AGENCY_DATA);
            }
			
			curl_setopt($curl_p, CURLOPT_POST, true);
			//curl_setopt($curl, CURLOPT_HEADER, true);
			curl_setopt($curl_p, CURLOPT_POSTFIELDS, http_build_query($apiData));
			curl_setopt($curl_p, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($curl_p, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($curl_p, CURLOPT_TIMEOUT, 300);
			$response_pro = curl_exec($curl_p);
			curl_close($curl_p);
			$IVData = Zend_Json::decode($responseIV, true);
			$data = Zend_Json::decode($response_pro, true);
			$agencyData = new GTX_Model_Encrytion($data['Message'], $apiDataIV['SecurityKey'], $IVData['Message']);
			return Zend_Json::decode($agencyData->decrypt(), true);
			//echo '<pre>';print_r(Zend_Json::decode($agencyData->decrypt(),true));
			//die('wait');
		} else {
			return 'Bad request';
		}
	}
    public function apiFlightBookingTBO($post, $AgencySysId, $Securitykey, $SectorKey = null, $searchQuery = null)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $flexiPayment = (isset($post['flexiPayment']) && !empty($post['flexiPayment'])) ? $post['flexiPayment'] : 0;
            $requestTicket = [];
            
            $ARR_SALUTIONTBO = unserialize(ARR_SALUTION);
            $ARR_SALUTION_CHILD_TBO = unserialize(ARR_SALUTION_CHILD_TBO);
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $isDocIdAllowedMandatory = isset($BookingData[0]['isDocIdAllowedMandatory']) ? $BookingData[0]['isDocIdAllowedMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = (isset($BookingData[0]['flightKey']) && !empty($BookingData[0]['flightKey'])) ? $BookingData[0]['flightKey'] : $BookingData[0]['apiTraceId'];
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';
           
            $MasterAgencyData = $this->getAgencyData($AgencySysId, $Securitykey);
            $gstnnumber = isset($MasterAgencyData['GSTINFO']) ? trim($MasterAgencyData['GSTINFO']) : '';
            $GSTINFO = isset($gstData['GstNumber']) ? trim($gstData['GstNumber']) : '';
            $gstvalidate = $this->gstvalidate($gstnnumber, $GSTINFO);
            
            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $BookableAmount = 0;
            $ProcessingAmount = 0;
            $GSTOnProcessing = 0;
            foreach ($BookingData as $k => $value) {
                if ($flexiPayment == 1) {
                    $BookableAmount += isset($value['FairRules']['BookableAmount']) ? $value['FairRules']['BookableAmount'] : 0;
                    $ProcessingAmount += isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing += isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                    $ProcessingAmount_ = isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing_ = isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                } else {
                    $ProcessingAmount = 0;
                    $GSTOnProcessing = 0;
                    $ProcessingAmount_ = 0;
                    $GSTOnProcessing_ = 0;
                }
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__ + $ProcessingAmount_ + $GSTOnProcessing_);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];

                $arrFairDetails = $value['FairRules']['FareBreakdown'];
                $ApiResultIndex = $value['FairRules']['PriceID'];
                $fareIdentifier = $value['FairRules']['fareIdentifier'];

                $AirlineName = $value['AirlineName'];
                $FlightNumber = $value['FlightNumber'];

                if (isset($searchQuery['TBO']['post']) && $searchQuery['TBO']['post']['ResultFareType'] == 5) {
                    $DocumentTypeId = "SeniorCitizen";
                } elseif (isset($searchQuery['TBO']['post']) && $searchQuery['TBO']['post']['ResultFareType'] == 3) {
                    $DocumentTypeId = "StudentId";
                }
                
                $intK = 0;
                for ($intI = 0; $intI < count($arrFairDetails); $intI++) {
                    $intPassengerCount = isset($arrFairDetails[$intI]['PassengerCount']) ? trim($arrFairDetails[$intI]['PassengerCount']) : 0;
                    for ($intJ = 0; $intJ < $intPassengerCount; $intJ++) {
                        $MealArr = [];
                        $BaggageArr = [];
                        $SeatArr = [];
                        $INK = ($intK + 1);


                        if ($intK == 0) {
                            $intMemberSysId = true;
                        } else {
                            $intMemberSysId = false;
                        }

                        // if ($customer[$intK]['paxType'] == 1) {
                        //     if ($customer[$intK]['salution'] == 2) {
                        //         $paxTitle = 'Mrs';
                        //     } else {
                        //         $paxTitle = trim($ARR_SALUTIONTBO[$customer[$intK]['salution']], ".");
                        //     }
                        // } else {
                        $paxTitle = trim($ARR_SALUTIONTBO[$customer[$intK]['salution']], ".");
                        //}

                        // if($AgencySysId == 2656 || $AgencySysId == 1){
                        //     $paxTitle = '';
                        // }

                        $PassengerType = $arrFairDetails[$intI]['PassengerType'];
                        $PassengerCount = $arrFairDetails[$intI]['PassengerCount'];
                        $intAirTransFee = "00.00";
                        $intTransactionFee = "00.00";

                        $intBaseFare = (float)($arrFairDetails[$intI]['intBaseFare'] / $PassengerCount);
                        $intTax = (float)($arrFairDetails[$intI]['intTax'] / $PassengerCount);
                        $intYQTax = (float)($arrFairDetails[$intI]['TaxBR']['intYQ'] / $PassengerCount);
                        $intAdditionalTxnFeeOfrd = isset($arrFairDetails[$intI]['TaxBR']['AdditionalTxnFeeOfrd']) ? $arrFairDetails[$intI]['TaxBR']['AdditionalTxnFeeOfrd'] : 0;
                        $intAdditionalTxnFeePub = isset($arrFairDetails[$intI]['TaxBR']['AdditionalTxnFeePub']) ? $arrFairDetails[$intI]['TaxBR']['AdditionalTxnFeePub'] : 0;
                        
                        $SelectedBag = !empty($customer[$intK]['SelectedBag']) ? json_decode($customer[$intK]['SelectedBag'], 1) : '';
                        $SelectedMeal = !empty($customer[$intK]['SelectedMeal']) ? json_decode($customer[$intK]['SelectedMeal'], 1) : '';
                        $SelectedSeat = !empty($customer[$intK]['SelectedSeat']) ? json_decode($customer[$intK]['SelectedSeat'], 1) : '';

                        $SelectedMeal = isset($SelectedMeal[$SectorKey])?[$SelectedMeal[$SectorKey]]:[];
                        $SelectedBag = isset($SelectedBag[$SectorKey])?[$SelectedBag[$SectorKey]]:[];
                        $SelectedSeat = isset($SelectedSeat[$SectorKey])?[$SelectedSeat[$SectorKey]]:[];
                        // echo "<pre>";print_r($SectorKey);
                        // echo "<pre>";print_r(($SelectedSeat));die;
                        if (!empty($SelectedMeal)) {
                            foreach ($SelectedMeal as $key_ => $val) {
                                $MealArr[] = array(
                                    'AirlineCode' => isset($val[0]['AirlineCode']) ? $val[0]['AirlineCode'] : '',
                                    'FlightNumber' => isset($val[0]['FlightNumber']) ? $val[0]['FlightNumber'] : '',
                                    'WayType' => isset($val[0]['WayType']) ? $val[0]['WayType'] : '',
                                    'Code' => isset($val[0]['Code']) ? $val[0]['Code'] : '',
                                    'Description' => isset($val[0]['Description']) ? $val[0]['Description'] : '',
                                    'AirlineDescription' => isset($val[0]['AirlineDescription']) ? $val[0]['AirlineDescription'] : '',
                                    'Quantity' => isset($val[0]['Quantity']) ? $val[0]['Quantity'] : '',
                                    'Price' => isset($val[0]['cost']) ? $val[0]['cost'] : '',
                                    'Currency' => isset($val[0]['Currency']) ? $val[0]['Currency'] : '',
                                    'Origin' => isset($val[0]['Origin']) ? $val[0]['Origin'] : '',
                                    'Destination' => isset($val[0]['Destination']) ? $val[0]['Destination'] : '',
                                );
                            }
                        }
                        if (!empty($SelectedBag)) {
                            foreach ($SelectedBag as $key_ => $val) {
                                $BaggageArr[] = array(
                                    'AirlineCode' => isset($val[0]['AirlineCode']) ? $val[0]['AirlineCode'] : '',
                                    'FlightNumber' => isset($val[0]['FlightNumber']) ? $val[0]['FlightNumber'] : '',
                                    'WayType' => isset($val[0]['WayType']) ? $val[0]['WayType'] : '',
                                    'Code' => isset($val[0]['Code']) ? $val[0]['Code'] : '',
                                    'Description' => isset($val[0]['Description']) ? $val[0]['Description'] : '',
                                    'Weight' => isset($val[0]['Weight']) ? str_replace('Kg', '', $val[0]['Weight']) : '',
                                    'Price' => isset($val[0]['cost']) ? $val[0]['cost'] : '',
                                    'Currency' => isset($val[0]['Currency']) ? $val[0]['Currency'] : '',
                                    'Origin' => isset($val[0]['Origin']) ? $val[0]['Origin'] : '',
                                    'Destination' => isset($val[0]['Destination']) ? $val[0]['Destination'] : '',
                                );
                            }
                        }
                        if (!empty($SelectedSeat)) {
                            foreach ($SelectedSeat as $key_ => $val) {
                                $SeatArr[] = array(
                                    'AirlineCode' => isset($val[0]['AirlineCode']) ? $val[0]['AirlineCode'] : '',
                                    'FlightNumber' => isset($val[0]['FlightNumber']) ? $val[0]['FlightNumber'] : '',
                                    'CraftType' => isset($val[0]['CraftType']) ? $val[0]['CraftType'] : '',
                                    'Origin' => isset($val[0]['Origin']) ? $val[0]['Origin'] : '',
                                    'Destination' => isset($val[0]['Destination']) ? $val[0]['Destination'] : '',
                                    'AvailablityType' => isset($val[0]['AvailablityType']) ? $val[0]['AvailablityType'] : '',
                                    'Description' => isset($val[0]['Description']) ? $val[0]['Description'] : '',
                                    'Code' => isset($val[0]['Code']) ? $val[0]['Code'] : '',
                                    'RowNo' => isset($val[0]['RowNo']) ? $val[0]['RowNo'] : '',
                                    'SeatNo' => isset($val[0]['SeatNo']) ? $val[0]['SeatNo'] : '',
                                    'SeatType' => isset($val[0]['SeatType']) ? $val[0]['SeatType'] : '',
                                    'SeatWayType' => isset($val[0]['SeatWayType']) ? $val[0]['SeatWayType'] : '',
                                    'Compartment' => isset($val[0]['Compartment']) ? $val[0]['Compartment'] : '',
                                    'Deck' => isset($val[0]['Deck']) ? $val[0]['Deck'] : '',
                                    'Currency' => isset($val[0]['Currency']) ? $val[0]['Currency'] : '',
                                    'Price' => isset($val[0]['Price']) ? $val[0]['Price'] : '',
                                );
                            }
                        }
                        //$getSalutation = getSalutationByid(NULL, $paxTitle);
                        if (trim($customer[$intK]['salution']) == '2' || trim($customer[$intK]['salution']) == '3' || trim($customer[$intK]['salution']) == '5') {
                            $intGender = '2';
                        } else {
                            $intGender = '1';
                        }
                        $arrPassengers[$intK] = [
                            'Title' => $paxTitle,
                            'FirstName' => trim($customer[$intK]['firstname']),
                            'LastName' => trim($customer[$intK]['lastname']),
                            'PaxType' => (int)$customer[$intK]['paxType'],
                            'Gender' => $intGender,
                            'AddressLine1' => trim($customer[$intK]['address']),
                            'AddressLine2' => '',
                            'City' => trim($customer[$intK]['city']),
                            'CountryCode' => !empty(trim($customer[$intK]['countryCodeISO'])) ? trim($customer[$intK]['countryCodeISO']) : 'IN',
                            'CountryName' => trim($customer[$intK]['countryName']),
                            'ContactNo' => trim($customer[$intK]['mobile']),
                            'Email' => trim($customer[$intK]['email']),
                            'IsLeadPax' => $intMemberSysId,
                            'Nationality' =>  !empty(trim($customer[$intK]['countryCodeISO'])) ? trim($customer[$intK]['countryCodeISO']) : 'IN',
                            'FFAirline' => '',
                            'FFNumber' => '',
                            'Fare' => [
                                'BaseFare' => number_format($intBaseFare, 2, '.', ''),
                                'Tax' => number_format($intTax, 2, '.', ''),
                                'TransactionFee' => $intTransactionFee,
                                'YQTax' => $intYQTax,
                                'PassengerType' => $PassengerType,
                                'PassengerCount' => $PassengerCount,
                                'AdditionalTxnFeeOfrd' => $intAdditionalTxnFeeOfrd,
                                'AdditionalTxnFeePub' => $intAdditionalTxnFeePub,
                                'AirTransFee' => $intAirTransFee,
                            ],
                        ];

                        if ($customer[$intK]['paxType'] == 1) {
                            if ($isAdobrMandatory == 1) {
                                $arrPassengers[$intK]['DateOfBirth'] = $customer[$intK]['dateofbirth'] . 'T00:00:00';
                            }
                        }
                        if ($customer[$intK]['paxType'] == '2') {
                            if ($isCdobrMandatory == 1) {
                                $arrPassengers[$intK]['DateOfBirth'] = $customer[$intK]['dateofbirth'] . 'T00:00:00';
                            }
                        }
                        if ($customer[$intK]['paxType'] == '3') {
                            if ($isIdobrMandatory == 1) {
                                $arrPassengers[$intK]['DateOfBirth'] = $customer[$intK]['dateofbirth'] . 'T00:00:00';
                            }
                        }

                        if ($IsPassMandatory == 1) {
                            $arrPassengers[$intK]['DateOfBirth'] = $customer[$intK]['dateofbirth'] . 'T00:00:00';
                            $arrPassengers[$intK]['PassportNo'] = $customer[$intK]['passportno'];
                            $arrPassengers[$intK]['PassportExpiry'] = $customer[$intK]['passportnoexpiry'];
                            ///$arrPassengers[$intK]['PassportIssueCountryCode'] = isset($customer[$intK]['countryCodeISO']) ? $customer[$intK]['countryCodeISO'] : 'IN';
                            $arrPassengers[$intK]['PassportIssueDate'] = $customer[$intK]['passporIssue'];
                            $arrPassengers[$intK]['PassportIssueCountryCode'] = isset($customer[$intK]['PassportNationality']) ? $customer[$intK]['PassportNationality'] : 'IN';
                            // $arrPassengers[$intK]['CellCountryCode'] = '+' . $customer[$intK]['countryCode'];
                            $arrPassengers[$intK]['CellCountryCode'] = '+91';
                        }
                        // jyt add code
                        if (!empty($fareIdentifier) && $fareIdentifier == 'NDC') {
                            $arrPassengers[$intK]['PassportIssueDate'] = $customer[$intK]['passporIssue'];
                            $arrPassengers[$intK]['CellCountryCode'] = '+91';
                            // $arrPassengers[$intK]['CellCountryCode'] = '+91' . $customer[$intK]['countryCode'];
                        }

                        if (isset($MealArr) && !empty($MealArr)) {
                            $arrPassengers[$intK]['MealDynamic'] = $MealArr;
                        }
                        if (isset($BaggageArr) && !empty($BaggageArr)) {
                            $arrPassengers[$intK]['Baggage'] = $BaggageArr;
                        }
                        if (isset($SeatArr) && !empty($SeatArr)) {
                            $arrPassengers[$intK]['SeatDynamic'] = $SeatArr;
                        }
                        if ($isDocIdAllowedMandatory) {
                            $arrPassengers[$intK]['DocumentDetails'] =  [
                                [
                                    "DocumentTypeId" => $DocumentTypeId,
                                    "DocumentNumber" => isset($customer[$intK]['docid']) ? $customer[$intK]['docid'] : '',
                                ]
                            ];
                        }
                        if ($isgstapply == 1) {
                            $arrPassengers[$intK]['GSTCompanyAddress'] = isset($gstData['GstAddress']) ? $gstData['GstAddress'] : '';
                            $arrPassengers[$intK]['GSTCompanyContactNumber'] = isset($gstData['GstPhone']) ? $gstData['GstPhone'] : '';
                            $arrPassengers[$intK]['GSTCompanyName'] = isset($gstData['GstCompany']) ? $gstData['GstCompany'] : '';
                            $arrPassengers[$intK]['GSTNumber'] = isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '';
                            $arrPassengers[$intK]['GSTCompanyEmail'] = isset($gstData['GstEmail']) ? $gstData['GstEmail'] : '';
                        }
                        $intK++;
                    }
                }

                if ($value['IsLCC'] == 1 || $value['IsLCC'] == '1') {
                    ///// This action perform on bookflight action
                    $requestTicket[$k] = array(
                        'PreferredCurrency' => 'INR',
				        'IsBaseCurrencyRequired' => 'true',
                        'EndUserIp' => '',
                        'TokenId' => '',
                        'TraceId' => $flightKey,
                        'ResultIndex' => $ApiResultIndex,
                        'Passengers' => $arrPassengers,
                    );
                } else {
                    $requestTicket[$k] = array(
                        'PreferredCurrency' => 'INR',
				        'IsBaseCurrencyRequired' => 'true',
                        'EndUserIp' => '',
                        'TokenId' => '',
                        'TraceId' => $flightKey,
                        'ResultIndex' => $ApiResultIndex,
                        'Passengers' => $arrPassengers,
                    );
                }
            }

            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($ProcessingAmount) && $ProcessingAmount > 0 && $flexiPayment == 1) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Processing Fee',
                    'Description' => 'Flexi Payment',
                    'ItemQty' => 1,
                    'ItemRates' => ($ProcessingAmount),
                    'Total' => $ProcessingAmount,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $ProcessingAmount,
                    'ServiceFeeTotal' => $GSTOnProcessing,
                    'GSTPercentage' => '18',
                    'TotalGST' => $GSTOnProcessing,
                    'SGST' => ($gstvalidate['SGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'CGST' => ($gstvalidate['CGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'IGST' => ($gstvalidate['IGST'] == 1) ? round($GSTOnProcessing,2) : 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = (float)($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => ($isgstapply == 1)?1:0,
                'ClientGSTNumber' => $GSTINFO,
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
            // echo '<pre>';print_r($agencyMarkUpGST);
            // echo '<pre>';print_r($gstvalidate);
            // echo '<pre>';print_r($Invoicedata);
            // die;
            
            if($flexiPayment == 1){
                $Invoicedata['TotalDueAmount'] = ($PublishedFare - ($BookableAmount + $GSTOnProcessing + $ProcessingAmount));
                $Invoicedata['TotalAdvance'] = ($BookableAmount + $ProcessingAmount + $GSTOnProcessing);
                $Invoicedata['InvoiceStatus'] = 2;
            }
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBooking($post, $AgencySysId, $Securitykey)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $bookingHold = (isset($post['bookingHold']) && !empty($post['bookingHold'])) ? $post['bookingHold'] : 0;
            $flexiPayment = (isset($post['flexiPayment']) && !empty($post['flexiPayment'])) ? $post['flexiPayment'] : 0;
            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $APIbookingId = isset($BookingData[0]['APIBookingId']) ? $BookingData[0]['APIBookingId'] : '';
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isHoldAllowed = isset($BookingData[0]['isHoldAllowed']) ? $BookingData[0]['isHoldAllowed'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $isDocIdAllowedMandatory = isset($BookingData[0]['isDocIdAllowedMandatory']) ? $BookingData[0]['isDocIdAllowedMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = isset($BookingData[0]['flightKey']) ? $BookingData[0]['flightKey'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';

            
            $MasterAgencyData = $this->getAgencyData($AgencySysId, $Securitykey);
            $gstnnumber = isset($MasterAgencyData['GSTINFO']) ? $MasterAgencyData['GSTINFO'] : '';
            $GSTINFO = isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '';
            $gstvalidate = $this->gstvalidate($gstnnumber, $GSTINFO);
            
            $arrPassengers = [];
            $deliveryInfo = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            $APITotalMealPrice = 0;
            $APITotalBagPrice = 0;
            $APITotalSeatPrice = 0;
            foreach ($customer as $key => $value) {
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                $SelectedBag = !empty($value['SelectedBag']) ? json_decode($value['SelectedBag'], 1) : '';
                $SelectedMeal = !empty($value['SelectedMeal']) ? json_decode($value['SelectedMeal'], 1) : '';
                $SelectedSeat = !empty($value['SelectedSeat']) ? json_decode($value['SelectedSeat'], 1) : '';

                if ($value['paxType'] == '1') {
                    $PaxType = 'ADULT';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                }
                if ($value['paxType'] == '2') {
                    $PaxType = 'CHILD';
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                }
                if ($value['paxType'] == '3') {
                    $PaxType = 'INFANT';
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                }

                if ($key == 0) {
                    $deliveryInfo['emails'][$key] = trim($value['email']);
                    $deliveryInfo['contacts'][$key] =  trim($value['countryCode']) . '' . trim($value['mobile']);
                }

                $arrPassengers[$key] = [
                    'ti' => $paxTitle,
                    'fN' => trim($value['firstname']),
                    'lN' => trim($value['lastname']),
                    'pt' => $PaxType,
                ];
                if ($value['paxType'] == '1') {
                    if ($isAdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $value['dateofbirth'];
                    }
                }
                if ($value['paxType'] == '2') {
                    if ($isCdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $value['dateofbirth'];
                    }
                }
                if ($value['paxType'] == '3') {
                    if ($isIdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $value['dateofbirth'];
                    }
                }

                if ($IsPassMandatory == 1) {
                    $arrPassengers[$key]['pNum'] = $value['passportno'];
                    $arrPassengers[$key]['eD'] = $value['passportnoexpiry'];
                    $arrPassengers[$key]['pid'] = $value['passporIssue'];
                    $arrPassengers[$key]['pNat'] = $value['PassportNationality'];
                }
                if ($isDocIdAllowedMandatory == 1) {
                    $arrPassengers[$key]['di'] = isset($value['docid']) ? $value['docid']:'';
                }
                $MealArr = [];
                if (!empty($SelectedMeal)) {
                    foreach ($SelectedMeal as $key_ => $val) {
                        $APITotalMealPrice += isset($val[0]['cost']) ? $val[0]['cost'] : 0;
                        $MealArr[] = array('key' => $val[0]['key'], 'code' => $val[0]['Code']);
                    }
                }
                $BaggArr = [];
                if (!empty($SelectedBag)) {
                    foreach ($SelectedBag as $key_ => $val) {
                        $APITotalBagPrice += isset($val[0]['cost']) ? $val[0]['cost'] : 0;
                        $BaggArr[] = array('key' => $val[0]['key'], 'code' => $val[0]['Code']);
                    }
                }
                $SeatArr = [];
                if (!empty($SelectedSeat)) {
                    foreach ($SelectedSeat as $key_ => $val) {
                        $APITotalSeatPrice += isset($val[0]['amount']) ? $val[0]['amount'] : 0;
                        $SeatArr[] = array('key' => $val[0]['key'], 'code' => $val[0]['code']);
                    }
                }
                if (!empty($MealArr)) {
                    $arrPassengers[$key]['ssrMealInfos'] = $MealArr;
                }
                if (!empty($BaggArr)) {
                    $arrPassengers[$key]['ssrBaggageInfos'] = $BaggArr;
                }
                if (!empty($SeatArr)) {
                    $arrPassengers[$key]['ssrSeatInfos'] = $SeatArr;
                }
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            $BookableAmount = 0;
            $ProcessingAmount = 0;
            $GSTOnProcessing = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                if ($flexiPayment == 1) {
                    $BookableAmount += isset($value['FairRules']['BookableAmount']) ? $value['FairRules']['BookableAmount'] : 0;
                    $ProcessingAmount += isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing += isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                    $ProcessingAmount_ = isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing_ = isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                } else {
                    $ProcessingAmount = 0;
                    $GSTOnProcessing = 0;
                    $ProcessingAmount_ = 0;
                    $GSTOnProcessing_ = 0;
                }
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__ + $ProcessingAmount_ + $GSTOnProcessing_);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
            }
            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($ProcessingAmount) && $ProcessingAmount > 0 && $flexiPayment == 1) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Processing Fee',
                    'Description' => 'Flexi Payment',
                    'ItemQty' => 1,
                    'ItemRates' => ($ProcessingAmount),
                    'Total' => $ProcessingAmount,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $ProcessingAmount,
                    'ServiceFeeTotal' => $GSTOnProcessing,
                    'GSTPercentage' => '18',
                    'TotalGST' => $GSTOnProcessing,
                    'SGST' => ($gstvalidate['SGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'CGST' => ($gstvalidate['CGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'IGST' => ($gstvalidate['IGST'] == 1) ? round($GSTOnProcessing,2) : 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => $isgstapply,
                'ClientGSTNumber' => $GSTINFO,
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
            if($flexiPayment == 1){
                $Invoicedata['TotalDueAmount'] = ($PublishedFare - ($BookableAmount + $GSTOnProcessing + $ProcessingAmount));
                $Invoicedata['TotalAdvance'] = ($BookableAmount + $ProcessingAmount + $GSTOnProcessing);
                $Invoicedata['InvoiceStatus'] = 2;
            }
            $amount = $intPublishedFare;
            ///echo $amount .'+'. $APITotalMealPrice .'+'. $APITotalBagPrice .'+'. $APITotalSeatPrice;
            $paymentInfos[] = array('amount' => number_format(($amount + $APITotalMealPrice + $APITotalBagPrice + $APITotalSeatPrice), 2, '.', ''));

            $requestTicket = array(
                'bookingId' => $APIbookingId,
                'paymentInfos' => $paymentInfos,
                'travellerInfo' => $arrPassengers,
                'deliveryInfo' => $deliveryInfo,
            );
            if ($isHoldAllowed == 1 && $bookingHold == 1) {
				//$data['paymentInfos'] = $paymentInfos;
				unset($requestTicket['paymentInfos']);
			}
            // if($AgencySysId == '2656'){
            //     echo "<pre>";print_r(($requestTicket));
            //     die;
            // }
            $gstInfo = array(
                'gstNumber' =>   isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '',
                'email' =>   isset($gstData['GstEmail']) ? $gstData['GstEmail'] : '',
                'registeredName' =>  isset($gstData['GstCompany']) ? $gstData['GstCompany'] : '',
                'mobile' =>  isset($gstData['GstPhone']) ? $gstData['GstPhone'] : '',
                'address' => isset($gstData['GstAddress']) ? $gstData['GstAddress'] : '',
            );
            if ($isgstapply == 1) {
                $requestTicket['gstInfo'] = $gstInfo;
            }
            // echo "<pre>";print_r(($requestTicket));
            // echo "<pre>";print_r(($Invoicedata));
            // die;
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBookingTRAVCLAN($post, $AgencySysId, $Securitykey)
    {
        if ($post && $AgencySysId) {
            // echo "post<pre>";print_r($post);die;
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $bookingHold = (isset($post['bookingHold']) && !empty($post['bookingHold'])) ? $post['bookingHold'] : 0;
            $flexiPayment = (isset($post['flexiPayment']) && !empty($post['flexiPayment'])) ? $post['flexiPayment'] : 0;
            $requestTicket = [];
            // $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            // $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $APIbookingId = isset($BookingData[0]['APIBookingId']) ? $BookingData[0]['APIBookingId'] : '';
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isHoldAllowed = isset($BookingData[0]['isHoldAllowed']) ? $BookingData[0]['isHoldAllowed'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $isDocIdAllowedMandatory = isset($BookingData[0]['isDocIdAllowedMandatory']) ? $BookingData[0]['isDocIdAllowedMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = isset($BookingData[0]['flightKey']) ? $BookingData[0]['flightKey'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';
            $apiTraceId = isset($BookingData[0]['apiTraceId']) ? $BookingData[0]['apiTraceId'] : '';
																		
            
            $MasterAgencyData = $this->getAgencyData($AgencySysId, $Securitykey);
            $gstnnumber = isset($MasterAgencyData['GSTINFO']) ? $MasterAgencyData['GSTINFO'] : '';
            $GSTINFO = isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '';
            $gstvalidate = $this->gstvalidate($gstnnumber, $GSTINFO);
            
            $PaxData = [];
            $deliveryInfo = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            $APITotalMealPrice = 0;
            $APITotalBagPrice = 0;
            $APITotalSeatPrice = 0;
         
            // echo "arrUrlData<pre>";print_r(json_encode($arrUrlData));
            // die;
          
            
            foreach ($customer as $key => $value) {
                $bagAmt = 0;
                $mealAmt = 0;
                $seatAmt = 0;
                $ssr = [];
                $seatData = [];
                $baggData = [];
                $mealData = [];
                if ($key == 0) {
                    $isLeadPax = true;
                } else {
                    $isLeadPax = false;
                }
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                $SelectedBag = !empty($value['SelectedBag']) ? json_decode($value['SelectedBag'], 1) : '';
                $SelectedMeal = !empty($value['SelectedMeal']) ? json_decode($value['SelectedMeal'], 1) : '';
                $SelectedSeat = !empty($value['SelectedSeat']) ? json_decode($value['SelectedSeat'], 1) : '';

                if(!empty($SelectedBag)){
                    foreach ($SelectedMeal as $STSEC => $valBg) {
                            $baggData[] = ["code" => isset($valBg[0]['Code']) ? $valBg[0]['Code'] :'',
                                "origin" => isset($valBg[0]['Origin']) ? $valBg[0]['Origin'] :'',
                                "destination" => isset($valBg[0]['Destination']) ? $valBg[0]['Destination']:'',
                                "amt" => isset($valBg[0]['Price']) ? $valBg[0]['Price'] :0
                            ];
                        }
                }
                if(!empty($SelectedMeal)){
                    foreach ($SelectedMeal as $STSEC => $valML) {
                        $mealData[] = ["code" => isset($valML[0]['Code']) ? $valML[0]['Code'] :'',
                                "origin" => isset($valML[0]['Origin']) ? $valML[0]['Origin'] :'',
                                "destination" => isset($valML[0]['Destination']) ? $valML[0]['Destination'] :'',
                                "amt" => isset($valML[0]['Price']) ? $valML[0]['Price'] :0
                            ];
                        }
                }
             
                if(!empty($SelectedSeat)){
                    foreach ($SelectedSeat as $STSEC => $valST) {
                        $seatData[] = ["code" => isset($valST[0]['code']) ? $valST[0]['code'] :'',
                                "origin" => isset($valST[0]['Origin']) ? $valST[0]['Origin'] :'',
                                "destination" => isset($valST[0]['Destination']) ? $valST[0]['Destination']:'',
                                "amt" => isset($valST[0]['Price']) ? $valST[0]['Price'] :0,
                                "seat" => isset($valST[0]['seatNo']) ? $valST[0]['seatNo'] :''
                            ];
                        }
                }
                if($baggData){
                    $ssr['baggage'] = $baggData;
                }
                if($mealData){
                    $ssr['meal'] = $mealData;
                }
                if($seatData){
                    $ssr['seat'] = $seatData;
                }
                if($value['paxType'] == 1){
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                    $paxTitle = ($paxTitle == 'Ms')?'Miss':$paxTitle;
                }elseif($value['paxType'] == 2){
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                }else{
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                    $paxTitle = ($paxTitle == 'Mstr')?'Mr':$paxTitle;
                }

                if (trim($value['salution']) == '2' || trim($value['salution']) == '3' || trim($value['salution']) == '5') {
                    $intGender = 'Female';
                } else {
                    $intGender = 'Male';
                }
                $PaxData[] = [
                    "title" => $paxTitle, 
                    "firstName" => $value['firstname'], 
                    "lastName" => $value['lastname'], 
                    "passportNumber" =>  ($IsPassMandatory) ? $value['passportno'] : "",
                    "passportExpiry" => ($IsPassMandatory) ?  date('Y-m-d',(strtotime($value['passportnoexpiry']))) : null,//"2026-12-06", 
                    "passportIssueDate" => ($IsPassMandatory) ?  date('Y-m-d',(strtotime($value['passporIssue']))) : null,//"2026-12-06", 
                    "gender" => $intGender, 
                    "isLeadPax" => $isLeadPax, 
                    "paxType" => (int)$value['paxType'], 
                    "addressLineOne" => "", 
                    "addressLineTwo" => "", 
                    "city" => "", 
                    "cellCountryCode" => $value['countryCode'], 
                    "contactNumber" => (string)$value['mobile'], 
                    "countryCode" => $value['countryCodeISO'],
                    "countryName" => "India", 
                    "dateOfBirth" => isset($value['dateofbirth']) ? $value['dateofbirth'] :'',//"1987-12-06", 
                    "email" => $value['email'], 
                    "frequentFlyerAirlineCode" => null, 
                    "frequentFlyerNumber" => null, 
                    "gstCompanyAddress" => (isset($value['gstaddress']) && !empty($value['gstaddress'])) ? $value['gstaddress']:null, 
                    "gstCompanyContactNumber" => (isset($value['gstphone']) && !empty($value['gstphone'])) ? $value['gstphone']:null, 
                    "gstCompanyEmail" => (isset($value['gstemail']) && !empty($value['gstemail'])) ? $value['gstemail']:null, 
                    "gstCompanyName" => (isset($value['companyname']) && !empty($value['companyname'])) ? $value['companyname']:null, 
                    "gstNumber" => (isset($value['gstnnumber']) && !empty($value['gstnnumber'])) ? $value['gstnnumber']:null, 
                    "ssr" => isset($ssr) && !empty($ssr) ? $ssr :""
                ];

            }
            $request['itineraryCode'] = $flightKey;
            $request['post'] = array(
                "traceId" => $apiTraceId,
                "passengers" => $PaxData
            );
            $data = array('status' => true, 'message' => 'success', 'requestBook' => $request, 'Invoicedata' => '');
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function gstvalidate($clientgst, $agencygst = null)
	{
		if ($clientgst && $agencygst) {
			$tin_client = substr($clientgst, 0, 2);
			$tin_agency = substr($agencygst, 0, 2);

			$url = $this->baseUrl . "public/data/gst-state-code-list.json";
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
			$output = curl_exec($ch);
			curl_close($ch);
			$response = json_decode($output, true);
			if ($tin_client && $tin_agency) {
				$tin_clientId = array_filter($response, function ($var) use ($tin_client) {
					return ($var['tin'] == $tin_client);
				});
				$tin_agencyId = array_filter($response, function ($var) use ($tin_agency) {
					return ($var['tin'] == $tin_agency);
				});
				$tin_clientId = array_values($tin_clientId);
				$tin_agencyId = array_values($tin_agencyId);
				$tin_clientId = (isset($tin_clientId[0]['tin']) && !empty($tin_clientId[0]['tin'])) ? $tin_clientId[0]['tin'] : '';
				$tin_agencyId = (isset($tin_agencyId[0]['tin']) && !empty($tin_agencyId[0]['tin'])) ? $tin_agencyId[0]['tin'] : '';
				if ($tin_clientId == $tin_agencyId) {
					$data = array('SGST' => true, 'CGST' => true, 'IGST' => false, 'client' => $tin_clientId, 'agency' => $tin_agencyId);
				} else {
					$data = array('SGST' => false, 'CGST' => false, 'IGST' => true, 'client' => $tin_clientId, 'agency' => $tin_agencyId);
				}
			}
			return $data;
		} else {
			$data = array('SGST' => true, 'CGST' => true, 'IGST' => false, 'client' => 0, 'agency' => 0);
			return ($data);
		}
	}
    public function apiFlightBookingEtrave($post, $AgencySysId)
    {
        if ($post) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $APIbookingId = isset($BookingData[0]['APIBookingId']) ? $BookingData[0]['APIBookingId'] : '';
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = isset($BookingData[0]['flightKey']) ? $BookingData[0]['flightKey'] : '';
            $searchID = (isset($post['searchID']) && !empty($post['searchID'])) ? $post['searchID'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';

            $arrPassengers = [];
            $deliveryInfo = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            $APITotalMealPrice = 0;
            $APITotalBagPrice = 0;
            $APITotalSeatPrice = 0;


            $misxItems_name = [];
            $BookingFlightDetails = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];

                $BaggSSRInfo = [];
                $MealsSSRInfo = [];
                $SeatsSSRInfo = [];
                if ($value['Segments']) {
                    foreach ($value['Segments'] as $seg) {
                    }
                }
                $BookingSSRDetails = array_merge($BaggSSRInfo, $MealsSSRInfo, $SeatsSSRInfo);
                $BookingFlightDetails[] = array(
                    'Search_Key' => $value['Search_Key'],
                    'Flight_Key' => $value['Flight_Key'],
                    'BookingSSRDetails' => $BookingSSRDetails,
                );
            }

            foreach ($customer as $key => $val) {
                $TotalBagPrice += !empty($val['BagPrice']) ? ($val['BagPrice']) : 0;
                $TotalMealPrice += !empty($val['MealPrice']) ? ($val['MealPrice']) : 0;
                $TotalSeatPrice += !empty($val['SeatPrice']) ? ($val['SeatPrice']) : 0;
                $SelectedBag = !empty($val['SelectedBag']) ? json_decode($val['SelectedBag'], 1) : '';
                $SelectedMeal = !empty($val['SelectedMeal']) ? json_decode($val['SelectedMeal'], 1) : '';
                $SelectedSeat = !empty($val['SelectedSeat']) ? json_decode($val['SelectedSeat'], 1) : '';

                $DOB = date('m/d/Y', strtotime($val['dateofbirth']));

                if ($val['paxType'] == '1') {
                    $PaxType = 0;
                    $DOBRequired = $isAdobrMandatory;
                    $paxTitle = ($ARR_SALUTION[$val['salution']]);
                    //$paxTitle = ($paxTitle == 'Ms') ? 'Miss' : $paxTitle;
                }
                if ($val['paxType'] == '2') {
                    $PaxType = 1;
                    $DOBRequired = $isCdobrMandatory;
                    $paxTitle = ($ARR_SALUTION_CHILD[$val['salution']]);
                    $paxTitle = ($paxTitle == 'Miss') ? 'Ms' : $paxTitle;
                }
                if ($val['paxType'] == '3') {
                    $PaxType = 2;
                    $DOBRequired = $isIdobrMandatory;
                    $paxTitle = ($ARR_SALUTION_CHILD[$val['salution']]);
                    $paxTitle = ($paxTitle == 'Miss') ? 'Ms' : $paxTitle;
                }
                if (trim($val['salution']) == '2' || trim($val['salution']) == '3' || trim($val['salution']) == '5') {
                    $intGender = 1;
                } else {
                    $intGender = 0;
                }
                $Age = date_diff(date_create($val['dateofbirth']), date_create('today'))->y;
                $PaxData[] = array(
                    "Pax_Id" => ($key + 1),
                    "Title" => $paxTitle,
                    "First_Name" => $val['firstname'],
                    "Last_Name" => $val['lastname'],
                    "DOB" => ($DOBRequired) ? $DOB : null,
                    "Age" => ($DOBRequired) ? $Age : null,
                    "Gender" => $intGender,
                    "Pax_type" => $PaxType,
                    "Passport_Issuing_Country" => ($IsPassMandatory) ? $val['PassportNationality'] : "",
                    "Passport_Number" => ($IsPassMandatory) ? $val['passportno'] : "",
                    "Passport_Expiry" => ($IsPassMandatory) ? $val['passportnoexpiry'] : "",
                    "Nationality" => $val['countryCodeISO'],
                    "FrequentFlyerDetails" => null,
                );
            }

            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $gstvalidate = [];
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => 0,
                'ClientGSTNumber' => '',
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];

            $gstInfo = array(
                'gstNumber' =>   isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '',
                'email' =>   isset($gstData['GstEmail']) ? $gstData['GstEmail'] : '',
                'registeredName' =>  isset($gstData['GstCompany']) ? $gstData['GstCompany'] : '',
                'mobile' =>  isset($gstData['GstPhone']) ? $gstData['GstPhone'] : '',
                'address' => isset($gstData['GstAddress']) ? $gstData['GstAddress'] : '',
            );
            $requestTicket = array(
                'Auth_Header' => array(
                    "IP_Address" => $_SERVER['REMOTE_ADDR'],
                    "Request_Id" => $searchID,
                    "IMEI_Number" => "3434334343111"
                ),
                'Customer_Mobile' => $customer[0]['mobile'],
                'Passenger_Mobile' => $customer[0]['mobile'],
                'WhatsAPP_Mobile' => $customer[0]['mobile'],
                'Passenger_Email' => $customer[0]['email'],
                'PAX_Details' => $PaxData,
                'GST' => $isgstapply,
                'GST_Number' => ($isgstapply) ? $gstInfo['gstNumber'] : '',
                'GST_HolderName' => ($isgstapply) ? $gstInfo['registeredName'] : '',
                'GST_Address' => ($isgstapply) ? $gstInfo['address'] : '',
                'BookingFlightDetails' => $BookingFlightDetails,
                'CostCenterId' => 0,
                'ProjectId' => 0,
                'BookingRemark' => '',
                'CorporateStatus' => 0,
                'CorporatePaymentMode' => 0,
                'MissedSavingReason' => null,
                'CorpTripType' => null,
                'CorpTripSubType' => null,
                'TripRequestId' => null,
                'BookingAlertIds' => null,
            );


            // echo "<pre>";print_r(($requestTicket));
            // echo "<pre>";print_r(($Invoicedata));
            // die;
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBookingSFAPI($post, $AgencySysId)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $ICSourceSysId = (isset($post['ICSourceSysId']) && !empty($post['ICSourceSysId'])) ? $post['ICSourceSysId'] : 0;
            $APIbookingId = isset($BookingData[0]['APIBookingId']) ? $BookingData[0]['APIBookingId'] : '';
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = isset($BookingData[0]['flightKey']) ? $BookingData[0]['flightKey'] : '';
            $bookingId = isset($BookingData[0]['ticket_id']) ? $BookingData[0]['ticket_id'] : '';
            $TravelDate = isset($BookingData[0]['FromUTCTime']) ? date('Y-m-d', strtotime($BookingData[0]['FromUTCTime'])) : '';
            $booking_token_id = isset($BookingData[0]['booking_token_id']) ? $BookingData[0]['booking_token_id'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';
            $static = isset($BookingData[0]['static']) ? $BookingData[0]['static'] : '';
            $adultCount = isset($post['AdultCount']) ? $post['AdultCount'] : 0;
            $childCount = isset($post['ChildCount']) ? $post['ChildCount'] : 0;
            $infantCount = isset($post['InfantCount']) ? $post['InfantCount'] : 0;
            $totalPaxCount = $adultCount + $childCount + $infantCount;

            $emails = trim($customer[0]['email']);
            $contacts =  trim($customer[0]['mobile']);
            $contact_name =  trim($customer[0]['firstname']) . ' ' . trim($customer[0]['lastname']);

            $arrPassengers = [];
            $deliveryInfo = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            $APITotalMealPrice = 0;
            $APITotalBagPrice = 0;
            $APITotalSeatPrice = 0;
            foreach ($customer as $key => $value) {
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                $SelectedBag = !empty($value['SelectedBag']) ? json_decode($value['SelectedBag'], 1) : '';
                $SelectedMeal = !empty($value['SelectedMeal']) ? json_decode($value['SelectedMeal'], 1) : '';
                $SelectedSeat = !empty($value['SelectedSeat']) ? json_decode($value['SelectedSeat'], 1) : '';
                $strPaxDateOfBirth = $value['dateofbirth'];
                if ($value['paxType'] == '1') {
                    $PaxType = 'ADULT';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                    $strPaxDateOfBirth = date('Y-m-d', strtotime('-20 years'));
                }
                if ($value['paxType'] == '2') {
                    $PaxType = 'CHILD';
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                    $strPaxDateOfBirth = date('Y-m-d', strtotime('-5 years'));
                }
                if ($value['paxType'] == '3') {
                    $PaxType = 'INFANT';
                    $strPaxDateOfBirth = $strPaxDateOfBirth;
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                }
                if ($paxTitle == 'Master') {
                    $gender = 'Mstr';
                } elseif ($paxTitle == 'Ms') {
                    $gender = 'Miss';
                } else {
                    $gender = $paxTitle;
                }
                $Age = date_diff(date_create($strPaxDateOfBirth), date_create('today'))->y;
                $arrPassengers[$key] = array(
                    "gender" => $gender,
                    "first_name" => trim($value['firstname']),
                    "middle_name" => "",
                    "last_name" => trim($value['lastname']),
                    "age" => (int)$Age,
                    "dob" => $strPaxDateOfBirth,
                    "passport_no" => "",
                    "passport_expire_date" => "",
                );
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
            }

            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $gstvalidate = [];
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => 0,
                'ClientGSTNumber' => '',
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
            $amount =  ($intPublishedFare);
            $requestTicket = array(
                "adult" => (int)$adultCount,
                "children" => (int)$childCount,
                "infant" => (int)$infantCount,
                "total_book_seats" => (int)$totalPaxCount,
                "total_amount" => $amount,
                "contact_name" => $contact_name,
                "contact_email" => $emails,
                "contact_number" => $contacts,
                "return_date" => "",
                "flight_traveller_details" => $arrPassengers,
                "booking_token_id" => $booking_token_id,
                "end_user_ip" => ''
            );


           
            if($ICSourceSysId == 23){
                $requestTicket['id'] = $bookingId;
                $requestTicket['onward_date'] = $TravelDate;
                $requestTicket['dep_city_code'] = $SourceAirportCode;
                $requestTicket['arr_city_code'] = $DestAirportCode;
                $requestTicket['static'] = $static;
                $requestTicket['travel_z_gear'] = 1;
            }else{
                $requestTicket['flight_id'] =  $bookingId;
                $requestTicket['departure_date'] =  $TravelDate;
                $requestTicket['travel_z_gear'] = 0;
            }

            // echo "<pre>";print_r(($requestTicket));
            // echo "<pre>";print_r(($Invoicedata));
            // die;
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBookingAIRIQFULL($post, $AgencySysId)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $IsInternational = isset($BookingData[0]['IsInternational']) ? $BookingData[0]['IsInternational'] :false;
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $isHoldAllowed = isset($BookingData[0]['isHoldAllowed']) ? $BookingData[0]['isHoldAllowed'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $JourneyType = isset($BookingData[0]['JourneyType']) ? $BookingData[0]['JourneyType'] : 1;
            $adultCount = isset($post['AdultCount']) ? $post['AdultCount'] : 0;
            $childCount = isset($post['ChildCount']) ? $post['ChildCount'] : 0;
            $infantCount = isset($post['InfantCount']) ? $post['InfantCount'] : 0;
            $totalPaxCount = $adultCount + $childCount + $infantCount;

            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            
            $ticket_id = isset($BookingData[0]['ticket_id']) ? $BookingData[0]['ticket_id'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';

           

            $emails = trim($customer[0]['email']);
            $contacts =  trim($customer[0]['mobile']);
            $contact_name =  trim($customer[0]['firstname']) . ' ' . trim($customer[0]['lastname']);

            $PaxData = [];
            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $key => $val) {
                $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                $ssrSeatInfos = [];
                $ssrMealInfos = [];
                $ssrBaggageInfos = [];
                // if (!empty($selectedSeatSession) && isset($selectedSeatSession[$seg['segmentid']]) && !empty($selectedSeatSession[$seg['segmentid']])) {
                //     $selectedSeat = $selectedSeatSession[$seg['segmentid']];
                //     foreach ($selectedSeat as $ck=>$val) {
                //         $SeatPrice_ += $val['amount'];
                //         $SeatPrice += $val['amount'];
                //         $SeatsSSRInfo[] = ['SeatID'=>$val['SeatID'],'PaxRefNumber'=>$ck];
                //     }
                // }
                // if (!empty($SelectedBaggSessionNew) && isset($SelectedBaggSessionNew[$seg['segmentid']]) && !empty($SelectedBaggSessionNew[$seg['segmentid']])) {
                //     $selectedBag = $SelectedBaggSessionNew[$seg['segmentid']];
                //     foreach ($selectedBag as $ck=>$val) {
                //         $BagPrice_ += $val['Price'];
                //         $BagPrice += $val['Price'];
                       
                //     }
                // }
                // if (!empty($SelectedMealSessionNew) && isset($SelectedMealSessionNew[$seg['segmentid']]) && !empty($SelectedMealSessionNew[$seg['segmentid']])) {
                //     $selectedMeal = $SelectedMealSessionNew[$seg['segmentid']];
                //     foreach ($selectedMeal as $ck=>$val) {
                //         $MealPrice_ += $val['Price'];
                //         $MealPrice += $val['Price'];
                //         $MealsSSRInfo[] = ['MealID'=>$val['MealID'],'PaxRefNumber'=>$ck];
                //     }
                // }

                // if ($SelectedSeat) {
                //     foreach ($SelectedSeat as $STSEC => $valST) {
                //         $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                //         $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                //         $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                //     }
                // }
                // if ($SelectedBag) {
                //     foreach ($SelectedBag as $STSEC => $valST) {
                //         $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                //         $SSR_TypeDesc = isset($valST[$key]['Description']) ? $valST[$key]['Description'] : '';
                //         $amount = isset($valST[$key]['Price']) ? $valST[$key]['Price'] : '';
                //         $BaggSSRInfo[] = ['BaggageID'=>$val['BaggageID'],'PaxRefNumber'=>$ck];
                //         // $ssrBaggageInfos[$STSEC] = ['BaggageID' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                //     }
                // }
                // if ($SelectedMeal) {
                //     foreach ($SelectedMeal as $STSEC => $valST) {
                //         $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                //         $SSR_TypeDesc = isset($valST[$key]['Description']) ? $valST[$key]['Description'] : '';
                //         $amount = isset($valST[$key]['Price']) ? $valST[$key]['Price'] : '';
                //         $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                //     }
                // }

                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;

                $DOB = isset($val['dateofbirth']) ? date('d/m/Y',strtotime($val['dateofbirth'])) :'';
                if($val['paxType'] == 1){
                    $PaxType = 'ADT';
                    $InfantRef = false;
                    $paxTitle = $val['title'];
                }elseif($val['paxType'] == 2){
                    $PaxType = 'CHD';
                    $InfantRef = false;
                    $paxTitle = $val['title'];
                }else{
                    $PaxType = 'INF';
                    $InfantRef = 1;
                    $paxTitle = $val['title'];
                }
                if (trim($val['salution']) == '2' || trim($val['salution']) == '3' || trim($val['salution']) == '5') {
                    $intGender = 'Female';
                } else {
                    $intGender = 'Male';
                }
                $PaxData[$key] = array(
                    "PaxRefNumber"=>(string)($key+1),
                    "Title"=>$paxTitle,
                    "FirstName"=> $val['firstname'],
                    "LastName"=>$val['lastname'],
                    "Gender"=>$intGender,
                    "PaxType"=>$PaxType,
                    "PassportCountryCode"=>($IsPassMandatory)?$val['PassportNationality']:"",
                    "PassportNo"=>($IsPassMandatory)?$val['PassportNo']:"",
                    "PassportExpiry"=>($IsPassMandatory)?date('d/m/Y',strtotime($val['PassportExpiry'])):"",
                    "PassportIssuedDate"=>($IsPassMandatory)?date('d/m/Y',strtotime($val['passporIssue'])):"",
                    "InfantRef"=>$InfantRef
                );
                if ($isAdobrMandatory == 1 && $val['paxType'] == 1) {
                    $PaxData[$key]['DOB'] = $DOB;
                }
                if ($isCdobrMandatory == 1 && $val['paxType'] == 2) {
                    $PaxData[$key]['DOB'] = $DOB;
                }
                if ($isIdobrMandatory == 1 && $val['paxType'] == 3) {
                    $PaxData[$key]['DOB'] = $DOB;
                }
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
        
          
            
            foreach ($BookingData as $k => $value) {
                $FlighstInfo = [];
                $GrossAmount = 0;
                $TotalAmount_ = 0;

                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                $GrossAmount = (isset($value['FairRules']['GrossAmount'])) ? $value['FairRules']['GrossAmount'] : 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                    
										
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
                if ($value['Segments']) {
                    foreach ($value['Segments'] as $seg) {
                        $FlighstInfo[] = array(
                            'FlightID'=> $seg['segmentid'],
                            'FlightNumber'=> str_replace('-',' ',$seg['SegFlightNumber']),
                            'Origin'=> $seg['originAirportCode'],
                            'Destination'=> $seg['destinationAirportCode'],
                            'DepartureDateTime'=> isset($seg['originDepTime']) ? date('d M Y H:i', strtotime($seg['originDepTime'])) :'',
                            'ArrivalDateTime'=> isset($seg['destinationArrTime']) ? date('d M Y H:i', strtotime($seg['destinationArrTime'])) :'',
                        );
                    }
                }
                $TotalAmount_ = ($GrossAmount + $BagPrice + $MealPrice + $SeatPrice);

                $ItineraryFlightsInfo[$k]['Token'] = $value['Token'];
                $ItineraryFlightsInfo[$k]['FlighstInfo'] = $FlighstInfo;
                $ItineraryFlightsInfo[$k]['PaymentMode'] = 'T';
                $ItineraryFlightsInfo[$k]['PaymentInfo'] = [['TotalAmount'=>$TotalAmount_]];
                if(!empty($BaggSSRInfo)){
                    $ItineraryFlightsInfo[$k]['BaggSSRInfo'] = $BaggSSRInfo;
                }
                if(!empty($MealsSSRInfo)){
                    $ItineraryFlightsInfo[$k]['MealsSSRInfo'] = $MealsSSRInfo;
                }
                if(!empty($SeatsSSRInfo)){
                    $ItineraryFlightsInfo[$k]['SeatsSSRInfo'] = $SeatsSSRInfo;
                }
            }

           
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $gstvalidate = [];
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => 0,
                'ClientGSTNumber' => '',
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];

            $requestTicket = array(
                'BaseOrigin'=>$SourceAirportCode,
                'BaseDestination'=>$DestAirportCode,
                'TripType'=>($JourneyType == 2)?'R':'O',
                'AdultCount'=>$adultCount,
                'ChildCount'=>$childCount,
                'InfantCount'=>$infantCount,
                'TrackId'=>$ApiResultIndex,
                'BlockPNR'=>$isHoldAllowed,
                'AgentInfo'=>[],

                'ItineraryFlightsInfo'=>$ItineraryFlightsInfo,
                'PaxDetailsInfo'=>$PaxData,
                'AddressDetails'=>[
                    'CountryCode' => $customer[0]['countryCode'],
                    'ContactNumber' =>$customer[0]['mobile'],
                    'EmailID' =>$customer[0]['email']
                ],
            );
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBookingAIRIQ($post, $AgencySysId)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            
            $ticket_id = isset($BookingData[0]['ticket_id']) ? $BookingData[0]['ticket_id'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';

            $adultCount = isset($post['AdultCount']) ? $post['AdultCount'] : 0;
            $childCount = isset($post['ChildCount']) ? $post['ChildCount'] : 0;
            $infantCount = isset($post['InfantCount']) ? $post['InfantCount'] : 0;
            $totalPaxCount = $adultCount + $childCount + $infantCount;

            $emails = trim($customer[0]['email']);
            $contacts =  trim($customer[0]['mobile']);
            $contact_name =  trim($customer[0]['firstname']) . ' ' . trim($customer[0]['lastname']);

            $arrPassengers = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            foreach ($customer as $key => $value) {
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                
                $strPaxDateOfBirth = $value['dateofbirth'];
                if ($value['paxType'] == '1') {
                    $PaxType = 'adult_info';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                    $strPaxDateOfBirth = date('Y-m-d', strtotime('-20 years'));
                }
                if ($value['paxType'] == '2') {
                    $PaxType = 'child_info';
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                    $strPaxDateOfBirth = date('Y-m-d', strtotime('-5 years'));
                }
                if ($value['paxType'] == '3') {
                    $PaxType = 'infant_info';
                    $strPaxDateOfBirth = $strPaxDateOfBirth;
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                }
                if ($paxTitle == 'Master') {
                    $gender = 'Mstr.';
                } elseif ($paxTitle == 'Mr') {
                    $gender = 'Mr.';
                } elseif ($paxTitle == 'Ms') {
                    $gender = 'Miss';
                } else {
                    $gender = $paxTitle;
                }
                $arrPassengers[$value['paxType']][$key] = array(
                    "title" => $gender,
                    "first_name" => trim($value['firstname']),
                    "last_name" => trim($value['lastname']),
                    "dob" => date('Y/m/d', strtotime($strPaxDateOfBirth)),
                );
                if ($value['paxType'] == '3') {
                  $arrPassengers[$value['paxType']][$key]['travel_with'] = 1;
                }
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
            }

            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $gstvalidate = [];
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => 0,
                'ClientGSTNumber' => '',
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
            // I have change this requestTicket data set because show API 3 pax add "The child info fields is required." before this data to send req arrPassengers
            $requestTicket['adult_info'] = isset($arrPassengers[1]) ? array_values($arrPassengers[1]) : '';
            if ($arrPassengers[2] && !empty($arrPassengers[2])) {
                $requestTicket['child_info'] = isset($arrPassengers[2]) ? array_values($arrPassengers[2]) : '';
            }
            if ($arrPassengers[3] && !empty($arrPassengers[3])) {
                $requestTicket['infant_info'] = isset($arrPassengers[3]) ? array_values($arrPassengers[3]) : '';
            }
			
            $requestTicket["adult"] = (int)$adultCount;
            $requestTicket["child"] = (int)$childCount;
            $requestTicket["infant"] = (int)$infantCount;
            $requestTicket["total_pax"] = (int)$totalPaxCount;
            $requestTicket["email"] = $emails;
            $requestTicket["phone"] = $contacts;
            $requestTicket["ticket_id"] = $ticket_id;
            // echo "requestTicket<pre>";print_r($requestTicket);die;
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function apiFlightBookingGOFLYSMART($post, $AgencySysId)
    {
        if ($post && $AgencySysId) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $IsInternational = isset($BookingData[0]['IsInternational']) ? $BookingData[0]['IsInternational'] :false;
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $bookingRefNo = isset($BookingData[0]['response_ref']) ? $BookingData[0]['response_ref'] : '';
            $TravelDate = isset($BookingData[0]['FromUTCTime']) ? date('d/m/Y', strtotime($BookingData[0]['FromUTCTime'])) : '';
           
            $requestTicket = [];
            $ARR_SALUTION = unserialize(ARR_SALUTIONTRIPJACK);
            $ARR_SALUTION_CHILD = unserialize(ARR_SALUTIONTRIPJACK);
            
            $ticket_id = isset($BookingData[0]['ticket_id']) ? $BookingData[0]['ticket_id'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';
            $Currency = isset($BookingData[0]['FairRules']['Currency']) ? $BookingData[0]['FairRules']['Currency'] : 'INR';

            $adultCount = isset($post['AdultCount']) ? $post['AdultCount'] : 0;
            $childCount = isset($post['ChildCount']) ? $post['ChildCount'] : 0;
            $infantCount = isset($post['InfantCount']) ? $post['InfantCount'] : 0;
            $totalPaxCount = $adultCount + $childCount + $infantCount;

            $emails = trim($customer[0]['email']);
            $contacts =  trim($customer[0]['mobile']);
            $contact_name =  trim($customer[0]['firstname']) . ' ' . trim($customer[0]['lastname']);

            $arrPassengers = [];
            $TotalMealPrice = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            foreach ($customer as $key => $value) {
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                
                $dob = (isset($value['dateofbirth']) && !empty($value['dateofbirth'])) ? date('Y-m-d',strtotime($value['dateofbirth'])) :'';
                if ($value['paxType'] == '1') {
                    $PaxType = 'adult';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                } elseif ($value['paxType'] == '2') {
                    $PaxType = 'child';
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                } else {
                    $paxTitle = ($ARR_SALUTION_CHILD[$value['salution']]);
                    $PaxType = 'infant';
                }
                if ($paxTitle == 'Master') {
                    $gender = 'Mstr';
                } elseif ($paxTitle == 'Ms') {
                    $gender = 'Miss';
                } else {
                    $gender = $paxTitle;
                }
                $arrPassengers[$key] = array(
                    "title" => $gender,
                    "first_name" => trim($value['firstname']),
                    "last_name" => trim($value['lastname']),
                    "type" => $PaxType,
                    "dob" => "",
                    "nationality" => $value['countryCodeISO'],
                    "passport_num" => ($IsInternational == 1) ?  $value['passportno'] : "",
                );
                if ($value['paxType'] == 1) {
                    if ($isAdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $dob;
                    }
                }
                if ($value['paxType'] == 2) {
                    if ($isCdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $dob;
                    }
                }
                if ($value['paxType'] == 3) {
                    if ($isIdobrMandatory == 1) {
                        $arrPassengers[$key]['dob'] = $dob;
                    }
                }
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
            }

            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            $gstvalidate = [];
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => 0,
                'ClientGSTNumber' => '',
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
           
            $requestTicket = array(
                "query" => array(
                  "nAdt" => $adultCount,
                  "nInf" => $infantCount,
                  "nChd" => $childCount,
                  "legs" => [
                    array(
                      "dst" => $DestAirportCode,
                      "src" => $SourceAirportCode,
                      "dep" => $TravelDate
                    )
                  ]
                ),
                "flight_keys" => [$ticket_id],
                "total_price" => $intPublishedFare,
                "currency" => $Currency,
                "paxes" => $arrPassengers,
                "client_details" => array(
                    "email" => $emails,
                    "phone" => $contacts,
                ),
                "agent_reference" => $bookingRefNo
            );

           
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsAIRIQFULL($post, $Ticketing)
    {
        $ItinearyDetails = (isset($Ticketing['Bookingresponse']['ItinearyDetails']) && !empty($Ticketing['Bookingresponse']['ItinearyDetails'])) ? $Ticketing['Bookingresponse']['ItinearyDetails'] : [];
        $travellerInfos = [];
        $response = [];
        if ($ItinearyDetails) {
            foreach ($ItinearyDetails as $k => $Itineary) {
                $Item = $Itineary['Item'][0];
                $AirPNR = $Item['AirIqPNR'];
                $BookingTrackId = $Item['BookingTrackId'];
                $ResponseStatus = $Item['Resultcode'];
                if ($ResponseStatus == 1) {
                    $TravellerInfo = $Item['TravellerInfo']['Item'];
                    $strTicketPNRLCC = [];
                    if ($TravellerInfo) {
                        foreach ($TravellerInfo as $pk => $pax) {
                            $SegmentInformation = $pax['SegmentInformation']['Item'];
                            $segment = [];
                            $AirlinePNR = [];
                            $TicketNo = [];
                            $pnrDetails = [];
                            $ssrMealInfos = [];
                            $ssrSeatInfos = [];
                            $ssrBaggageInfos = [];
                            $ticketNumberDetails = [];
                            $BagPrice_ = 0;
                            $MealPrice_ = 0;
                            $SeatPrice_ = 0;
                            if ($SegmentInformation) {
                                foreach ($SegmentInformation as $seg) {
                                    $MealPrice_ += isset($seg['MealsAmount']) ? $seg['MealsAmount'] : 0;
                                    $BagPrice_ += isset($seg['BaggageAmount']) ? $seg['BaggageAmount'] : 0;
                                    $SeatPrice_ += isset($seg['SeatAmount']) ? $seg['SeatAmount'] : 0;
                                    $AirlinePNR[] = $seg['AirlinePNR'];
                                    $strTicketPNRLCC[] = $seg['AirlinePNR'];
                                    $TicketNo[] = $seg['TicketNo'];
                                    $originAirportCode = $seg['Origin'];
                                    $destinationAirportCode = $seg['Destination'];
                                    $segment[] = $originAirportCode . '-' . $destinationAirportCode;
                                    $pnrDetails[$originAirportCode . '-' . $destinationAirportCode] = $seg['AirlinePNR'];
                                    $ticketNumberDetails[$originAirportCode . '-' . $destinationAirportCode] = $seg['TicketNo'];

                                    if ($BagPrice_ > 0) {
                                        $ssrBaggageInfos[$originAirportCode . '-' . $destinationAirportCode] = ['code' => $seg['BaggagePreference'], 'amount' => $seg['BaggageAmount'], 'desc' => $seg['BaggagePreference']];
                                    }
                                    if ($MealPrice_ > 0) {
                                        $ssrMealInfos[$originAirportCode . '-' . $destinationAirportCode] = ['code' => $seg['MealsPreference'], 'amount' => $seg['MealsAmount'], 'desc' => $seg['MealsPreference']];
                                    }
                                    if ($SeatPrice_ > 0) {
                                        $ssrSeatInfos[$originAirportCode . '-' . $destinationAirportCode] = ['code' => $seg['SeatPreference'], 'amount' => $seg['SeatAmount']];
                                    }
                                }
                            }
                            $TicketNumber = $pax['TicketNumber'];
                            $AirlinePNR = array_values(($AirlinePNR));
                            $TicketNo = array_values(($TicketNo));
                            $travellerInfos[] = array(
                                'ticketNumberDetails' => $ticketNumberDetails,
                                'ssrBaggageInfos' => $ssrBaggageInfos,
                                'ssrMealInfos' => $ssrMealInfos,
                                'ssrSeatInfos' => $ssrSeatInfos,
                                'pnrDetails' => $pnrDetails,
                                'ti' => $pax['Title'],
                                'fN' => $pax['FirstName'],
                                'lN' => $pax['LastName'],
                                'pt' => strtoupper(strtolower($pax['PaxType'])),
                            );
                            $customerPnr = array(
                                'PNR_Number' => implode('-', $AirlinePNR),
                                'TicketId' => implode('-', $AirlinePNR),
                                'TicketNumber' => implode('-', $TicketNumber),
                                'sectors' => implode('@@', $segment),
                            );
                        }
                    }
                }
                $response = array(
                    'status' => array('success' => true),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $travellerInfos)),
                    'order' => array('bookingId' => $AirPNR, 'BookingTrackId' => $BookingTrackId, 'status' => 'SUCCESS', 'customerpnr' => $customerPnr),
                );
                return $response;
            }
            // return $response;
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsTRAVCLAN($post, $results)
    {
       
        if ($post) {
            $passanger = $pnrDetails = array();
            $AirPNRDetails = isset($results['results']['details'][0]['pnr']) ? $results['results']['details'][0]['pnr'] : [];
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
           
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $segmentArray = [];
            if ($BookingData) {
                $bookingId = [];
                $status = [];
                $success = [];
                $PNRDetailsAPI = [];
                $sectorarray = [];
                $ticketNumberDetails = [];
                $pnrDetails = [];
                if($results['results']['details']){
                    foreach ($results['results']['details'] as $keys=>$dataValue) {
                        $BookStatus = isset($dataValue['bookingStatus']) ? $dataValue['bookingStatus'] : '';
                        $APIStatus = isset($dataValue['isSuccessful']) ? $dataValue['isSuccessful'] : '';
                
                        if ($APIStatus == 1 && $BookStatus == 'CONFIRMED') {
                            $status[] = 'SUCCESS';
                            $success[] = true;
                        } elseif ($APIStatus == 1 && ($BookStatus == 'PENDING')) {
                            $status[] = 'PENDING';
                            $success[] = true;
                        } else{
                            $status[] = 'FAILED';
                            $success[] = false;
                        }
                        $bookingId[] = isset($dataValue['bmsBookingCode']) ? $dataValue['bmsBookingCode'] : '';
                
                        $PNRDetailsAPI = isset($dataValue['pnrDetails']) ? $dataValue['pnrDetails'] :'';
                        $temppnrDetails = [];
                        $tempPNRnumber = [];
                        if($PNRDetailsAPI){
                            foreach ($PNRDetailsAPI as $key => $Datass) {
                                $originAirportCode = !empty($Datass['origin']) ? $Datass['origin'] : '';
                                $destinationAirportCode = !empty($Datass['destination']) ? $Datass['destination'] : '';
                              
                                $tempPNRnumber[] = !empty($Datass['pnr'])?$Datass['pnr']:$PNR;
                                if (isset($Datass['pnr']) && !empty($Datass['pnr'])) {
                                    $temppnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = $Datass['pnr']; 
                                } else {
                                    $temppnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = $PNR;
                                }
                            }
                        }
                        if(isset($BookingData[$keys])){
                            foreach ($BookingData[$keys]['Segments'] as $key => $Data) {
                                $originAirportCode = !empty($Data['originAirportCode']) ? $Data['originAirportCode'] : '';
                                $destinationAirportCode = !empty($Data['destinationAirportCode']) ? $Data['destinationAirportCode'] : '';
                                $segmentArray[] = trim($originAirportCode) . '-' . trim($destinationAirportCode);
                                $secT = trim($originAirportCode) . '-' . trim($destinationAirportCode);
                                $sectorarray[] = $originAirportCode . '-' . $destinationAirportCode;
                                if (isset($temppnrDetails[$secT]) && !empty($temppnrDetails[$secT])) {
                                    $pnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = $temppnrDetails[$secT]; 
                                    $ticketNumberDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = $temppnrDetails[$secT];
                                } else {
                                    $pnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = implode(',',$tempPNRnumber);
                                    $ticketNumberDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = implode(',',$tempPNRnumber);
                                }
                            }
                        }
                    }
                }

                $misxItems_name = [];
                $TotalPay = 0;
                $GSTOnMarkUp_ = 0;
                $intPublishedFare = 0;
                $BookableAmount = 0;
                $ProcessingAmount = 0;
                $GSTOnProcessing = 0;
                foreach ($BookingData as $k => $value) {
                    $intPublishedFare += $value['FairRules']['intPublishedFare'];
                    if ($flexiPayment == 1) {
                        $BookableAmount += isset($value['FairRules']['BookableAmount']) ? $value['FairRules']['BookableAmount'] : 0;
                        $ProcessingAmount += isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                        $GSTOnProcessing += isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                        $ProcessingAmount_ = isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                        $GSTOnProcessing_ = isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                    } else {
                        $ProcessingAmount = 0;
                        $GSTOnProcessing = 0;
                        $ProcessingAmount_ = 0;
                        $GSTOnProcessing_ = 0;
                    }
                    $PublishedFare__ = 0;
                    $GSTOnMarkUp__ = 0;
                    $FixedMarkUp__ = 0;
                    foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                        $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                        $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                        $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                        $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                        $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                        $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                        $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                        $FixedMarkUp__ += ($FixedMarkUp);
                        $GSTOnMarkUp__ += ($GSTOnMarkUp);
                    }
                    $TotalFare = ($PublishedFare__);
                    $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                    $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__ + $ProcessingAmount_ + $GSTOnProcessing_);
                    $TotalGST = $GSTOnMarkUp__;
                    $GSTOnMarkUp_ += $GSTOnMarkUp__;
                    $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                    $TotalcouponVal = 0;
                    $SourceAirportCode = $value['SourceAirportCode'];
                    $DestAirportCode = $value['DestAirportCode'];
                    $FlightNumber = $value['FlightNumber'];
                    $AirlineName = $value['AirlineName'];
                    $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                    $misxItems_name[] = [
                        'AgencySysId' => $AgencySysId,
                        'AgentSysId' => 0,
                        'MisxItems_name' => 'Flight',
                        'Description' => $Description,
                        'ItemQty' => 1,
                        'ItemRates' => round(($TotalFare), 2),
                        'Total' => round(($TotalFare), 2),
                        'DiscountType' => 1,
                        'Discount' => 1,
                        'TotalDiscount' => round(($TotalcouponVal), 2),
                        'TotalAmount' => round(($TotalAmount), 2),
                        'MarkupType' => '',
                        'Markup' => round(($FixedMarkUp__), 2),
                        'TotalMarkup' => round(($FixedMarkUp__), 2),
                        'SubTotal' => round(($SubTotal), 2),
                        'ServiceFeeTotal' => $TotalGST,
                        'GSTPercentage' => '18',
                        'TotalGST' => round($TotalGST, 2),
                        'SGST' => round((($TotalGST / 2)), 2),
                        'CGST' => round((($TotalGST / 2)), 2),
                        'IGST' => round(($TotalGST), 2),
                        'ItemsSACCode' => '',
                    ];
                }
                
                $BagPrice = 0;
                $MealPrice = 0;
                $SeatPrice = 0;
                foreach ($customer as $kkkk => $ValCustomer) {
                    $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                    $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                    $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
                }
                $itemCount = count($misxItems_name);
                if (!empty($BagPrice)) {
                    $misxItems_name[$itemCount] = array(
                        'MisxItems_name' => 'Add ons',
                        'Description' => 'Baggage',
                        'ItemQty' => 1,
                        'ItemRates' => ($BagPrice),
                        'Total' => $BagPrice,
                        'DiscountType' => 0,
                        'Discount' => 0,
                        'TotalDiscount' => 0,
                        'TotalAmount' => 0,
                        'MarkupType' => '',
                        'Markup' => 0,
                        'TotalMarkup' => 0,
                        'SubTotal' => $BagPrice,
                        'ServiceFeeTotal' => 0,
                        'GSTPercentage' => 0,
                        'TotalGST' => 0,
                        'SGST' => 0,
                        'CGST' => 0,
                        'IGST' => 0,
                        'ItemsSACCode' => '',
                    );
                }
                $itemCount = count($misxItems_name);
                if (!empty($MealPrice)) {
                    $misxItems_name[$itemCount] = array(
                        'MisxItems_name' => 'Add ons',
                        'Description' => 'Meal',
                        'ItemQty' => 1,
                        'ItemRates' => ($MealPrice),
                        'Total' => $MealPrice,
                        'DiscountType' => 0,
                        'Discount' => 0,
                        'TotalDiscount' => 0,
                        'TotalAmount' => 0,
                        'MarkupType' => '',
                        'Markup' => 0,
                        'TotalMarkup' => 0,
                        'SubTotal' => $MealPrice,
                        'ServiceFeeTotal' => 0,
                        'GSTPercentage' => 0,
                        'TotalGST' => 0,
                        'SGST' => 0,
                        'CGST' => 0,
                        'IGST' => 0,
                        'ItemsSACCode' => '',
                    );
                }
                $itemCount = count($misxItems_name);
                if (!empty($SeatPrice)) {
                    $misxItems_name[$itemCount] = array(
                        'MisxItems_name' => 'Add ons',
                        'Description' => 'Seat',
                        'ItemQty' => 1,
                        'ItemRates' => ($SeatPrice),
                        'Total' => $SeatPrice,
                        'DiscountType' => 0,
                        'Discount' => 0,
                        'TotalDiscount' => 0,
                        'TotalAmount' => 0,
                        'MarkupType' => '',
                        'Markup' => 0,
                        'TotalMarkup' => 0,
                        'SubTotal' => $SeatPrice,
                        'ServiceFeeTotal' => 0,
                        'GSTPercentage' => 0,
                        'TotalGST' => 0,
                        'SGST' => 0,
                        'CGST' => 0,
                        'IGST' => 0,
                        'ItemsSACCode' => '',
                    );
                }
                $itemCount = count($misxItems_name);
                if (!empty($ProcessingAmount) && $ProcessingAmount > 0 && $flexiPayment == 1) {
                    $misxItems_name[$itemCount] = array(
                        'MisxItems_name' => 'Processing Fee',
                        'Description' => 'Flexi Payment',
                        'ItemQty' => 1,
                        'ItemRates' => ($ProcessingAmount),
                        'Total' => $ProcessingAmount,
                        'DiscountType' => 0,
                        'Discount' => 0,
                        'TotalDiscount' => 0,
                        'TotalAmount' => 0,
                        'MarkupType' => '',
                        'Markup' => 0,
                        'TotalMarkup' => 0,
                        'SubTotal' => $ProcessingAmount,
                        'ServiceFeeTotal' => $GSTOnProcessing,
                        'GSTPercentage' => '18',
                        'TotalGST' => $GSTOnProcessing,
                        'SGST' => ($gstvalidate['SGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                        'CGST' => ($gstvalidate['CGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                        'IGST' => ($gstvalidate['IGST'] == 1) ? round($GSTOnProcessing,2) : 0,
                        'ItemsSACCode' => '',
                    );
                }
                $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
                $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
                $agencyMarkUpGST = ($GSTOnMarkUp_);
                $TotalDiscount = 0;
                
                $Invoicedata = [
                    'AgentSysId' => 0,
                    'CustomerSysId' => 0,
                    'TPSysId' => 0,
                    'MasterTPSysId' => 0,
                    'ProposalID' => 0 . '/V1',
                    'InvoiceDate' => date('Y-m-d'),
                    'isDisplayMarkup' => true,
                    'PaymentDueDate' => date('Y-m-d'),
                    'PaymentDate' => date('Y-m-d'),
                    'ClientGST' => $isgstapply,
                    'ClientGSTNumber' => $GSTINFO,
                    'Currency' => $currencySysId,
                    'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                    'InvoiceStatus' => 1,
                    'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                    'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                    'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                    'SumdiscountItem' => 0,
                    'OtherDiscount' => round(($TotalDiscount), 2),
                    'otherDiscountVal' => round(($TotalDiscount), 2),
                    'TotalAdvance' => round(($PublishedFare), 2),
                    'TotalDueAmount' => round(($PublishedFare), 2),
                    'InvoiceValue' => round(($PublishedFare), 2),
                    'notes' => 'Flight Ticket',
                    'termsandcondition' => '',
                    'client_state' => '',
                    'Advance' => 0,
                    'PaymentType' => 4,
                    'paymentNote' => 'Online',
                    'misxItems_name' => $misxItems_name,
                ];
               
              
                $ARR_SALUTION = unserialize(ARR_SALUTION);
                $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
                $PNRArray = [];
                foreach ($customer as $key => $val) {
                    $ticketNumber = isset($ticketNumberDetails[$key]) ? $ticketNumberDetails[$key] : [];
                    $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                    $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                    $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                    $ssrSeatInfos = [];
                    $ssrMealInfos = [];
                    $ssrBaggageInfos = [];
                    if ($SelectedSeat) {
                        foreach ($SelectedSeat as $STSEC => $valST) {
                            $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                            $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                            $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                        }
                    }
                    if ($SelectedBag) {
                        foreach ($SelectedBag as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['Description']) ? $valST[$key]['Description'] : '';
                            $amount = isset($valST[$key]['Price']) ? $valST[$key]['Price'] : '';
                            $ssrBaggageInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    if ($SelectedMeal) {
                        foreach ($SelectedMeal as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['Description']) ? $valST[$key]['Description'] : '';
                            $amount = isset($valST[$key]['Price']) ? $valST[$key]['Price'] : '';
                            $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    $paxtype = $val['paxType'];
                    if ($paxtype == 1) {
                        $paxtypeName = 'ADULT';
                        $Salutation = $ARR_SALUTION[$val['salution']];
                    } else if ($paxtype == 2) {
                        $paxtypeName = 'CHILD';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    } else {
                        $paxtypeName = 'INFANT';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    }

                    $passanger[] = array(
                        'pnrDetails' => $pnrDetails,
                        'ticketNumberDetails' => $ticketNumber,
                        'ssrSeatInfos' => $ssrSeatInfos,
                        'ssrBaggageInfos' => $ssrBaggageInfos,
                        'ssrMealInfos' => $ssrMealInfos,
                        'ti' => $Salutation,
                        'pt' => $paxtypeName,
                        'fN' => $val['firstname'],
                        'lN' => $val['lastname'],
                        'id' => $paxtype,
                        'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
                    );
                    $PNR_Number = array_values($pnrDetails);
                    $TicketNumber_ = array_values($ticketNumber);
                    $sectors = array_values(array_flip($pnrDetails));
                    $PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
                    $PNRArray[$key]['sectors'] = implode('@@', $segmentArray);
                }

               

                $response = array(
                    'status' => array('success' => $success),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
                    'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
                );
                return ["response" => $response,'Invoicedata'=>$Invoicedata];
            }
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsEtrave($post, $Ticketing, $results)
    {
        if ($post && $Ticketing) {
            $passanger = $pnrDetails = array();
            $BookStatus = isset($Ticketing['Response_Header']['Status_Id']) ? $Ticketing['Response_Header']['Status_Id'] : 0;
            $bookingId = isset($Ticketing['Booking_RefNo']) ? $Ticketing['Booking_RefNo'] : 0;
            $AirPNRDetails = isset($results['AirPNRDetails']) ? $results['AirPNRDetails'] : [];
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $segmentArray = [];
            if ($BookingData) {
                foreach ($BookingData as $key => $Data) {
                    $SourceAirportCode = trim($Data['SourceAirportCode']);
                    $DestAirportCode = trim($Data['DestAirportCode']);

                    if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                        foreach ($Data['Segments'] as $sskey => $ssVal) {

                            $originAirportCode = $ssVal['originAirportCode'];
                            $destinationAirportCode = $ssVal['destinationAirportCode'];
                            $segmentArray[] = $originAirportCode . '-' . $destinationAirportCode;

                            if (isset($Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs']) && count($Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs']) == count($Data['Segments'])) {
                                $AirlinePNRDetails = isset($Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs'][$sskey]) ? $Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs'][$sskey] : '';
                                $Airline_PNR = (isset($AirlinePNRDetails['Airline_PNR']) && !empty($AirlinePNRDetails['Airline_PNR'])) ? $AirlinePNRDetails['Airline_PNR'] : '';
                                $CRS_PNR = (isset($AirPNRDetails[$key]['CRS_PNR']) && !empty($AirPNRDetails[$key]['CRS_PNR'])) ? $AirPNRDetails[$key]['CRS_PNR'] : '';
                                $pnrDetails[trim($ssVal['originAirportCode']) . '-' . trim($ssVal['destinationAirportCode'])] = (!empty($CRS_PNR) && $CRS_PNR != $Airline_PNR) ? $Airline_PNR . '-' . $CRS_PNR : $Airline_PNR;
                            } else {
                                $AirlinePNRDetails = isset($Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs'][0]) ? $Ticketing['AirlinePNRDetails'][$key]['AirlinePNRs'][0] : '';
                                $Airline_PNR = (isset($AirlinePNRDetails['Airline_PNR']) && !empty($AirlinePNRDetails['Airline_PNR'])) ? $AirlinePNRDetails['Airline_PNR'] : '';
                                $CRS_PNR = (isset($AirPNRDetails[$key]['CRS_PNR']) && !empty($AirPNRDetails[$key]['CRS_PNR'])) ? $AirPNRDetails[$key]['CRS_PNR'] : '';
                                $pnrDetails[trim($ssVal['originAirportCode']) . '-' . trim($ssVal['destinationAirportCode'])] = (!empty($CRS_PNR) && $CRS_PNR != $Airline_PNR) ? $Airline_PNR . '-' . $CRS_PNR : $Airline_PNR;
                            }
                        }
                    } else {
                        $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => '');
                    }
                }

                $ticketNumberDetails = [];
                if ($AirPNRDetails) {
                    foreach ($AirPNRDetails as $k => $val) {
                        if ($val['PAXTicketDetails']) {
                            foreach ($val['PAXTicketDetails'] as $k => $value) {
                                if ($value['TicketDetails']) {
                                    foreach ($value['TicketDetails'] as $val) {
                                        if ($val['SegemtWiseChanges']) {
                                            foreach ($val['SegemtWiseChanges'] as $va) {
                                                $Origin = $va['Origin'];
                                                $Destination = $va['Destination'];
                                                $secKey = $Origin . '-' . $Destination;
                                                $ticketNumberDetails[$k][$secKey] = $val['Ticket_Number'];
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                $ARR_SALUTION = unserialize(ARR_SALUTION);
                $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
                $PNRArray = [];
                foreach ($customer as $key => $val) {
                    $ticketNumber = isset($ticketNumberDetails[$key]) ? $ticketNumberDetails[$key] : [];
                    $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                    $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                    $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                    $ssrSeatInfos = [];
                    $ssrMealInfos = [];
                    $ssrBaggageInfos = [];
                    if ($SelectedSeat) {
                        foreach ($SelectedSeat as $STSEC => $valST) {
                            $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                            $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                            $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                        }
                    }
                    if ($SelectedBag) {
                        foreach ($SelectedBag as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrBaggageInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    if ($SelectedMeal) {
                        foreach ($SelectedMeal as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    $paxtype = $val['paxType'];
                    if ($paxtype == 1) {
                        $paxtypeName = 'ADULT';
                        $Salutation = $ARR_SALUTION[$val['salution']];
                    } else if ($paxtype == 2) {
                        $paxtypeName = 'CHILD';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    } else {
                        $paxtypeName = 'INFANT';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    }

                    $passanger[] = array(
                        'pnrDetails' => $pnrDetails,
                        'ticketNumberDetails' => $ticketNumber,
                        'ssrSeatInfos' => $ssrSeatInfos,
                        'ssrBaggageInfos' => $ssrBaggageInfos,
                        'ssrMealInfos' => $ssrMealInfos,
                        'ti' => $Salutation,
                        'pt' => $paxtypeName,
                        'fN' => $val['firstname'],
                        'lN' => $val['lastname'],
                        'id' => $paxtype,
                        'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
                    );
                    $PNR_Number = array_values($pnrDetails);
                    $TicketNumber_ = array_values($ticketNumber);
                    $sectors = array_values(array_flip($pnrDetails));
                    $PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
                    $PNRArray[$key]['sectors'] = implode('@@', $segmentArray);
                }

                if ($BookStatus == 22) {
                    $status = 'PENDING';
                    $success = true;
                } elseif ($BookStatus == 33) {
                    $status = 'BLOCK';
                    $success = true;
                } elseif ($BookStatus == 11) {
                    $status = 'SUCCESS';
                    $success = true;
                }

                $response = array(
                    'status' => array('success' => $success),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
                    'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
                );
                return $response;
            }
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsNextra($post, $Ticketing)
	{
		$passanger = $bookingId = $pnrDetails = array();

		if ($post) {
            $FlightBookingData = isset($post['BookingData']) ? $post['BookingData'] : [];
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
			$bookingId = isset($Ticketing['ApiStatus']['Result']['flightRecord']['txid']) ? $Ticketing['ApiStatus']['Result']['flightRecord']['txid'] : '';
			$BookStatus = isset($Ticketing['ApiStatus']['Result']['flightRecord']['booking_status']) ? $Ticketing['ApiStatus']['Result']['flightRecord']['booking_status'] : '';
			$Airline_PNR = isset($Ticketing['ApiStatus']['Result']['flightRecord']['airline_pnr']) ? $Ticketing['ApiStatus']['Result']['flightRecord']['airline_pnr'] : '';
			$gdsPnr = isset($Ticketing['ApiStatus']['Result']['flightRecord']['gds_pnr']) ? $Ticketing['ApiStatus']['Result']['flightRecord']['gds_pnr'] : '';
			$flightTickets = isset($Ticketing['ApiStatus']['Result']['flightTickets']) ? $Ticketing['ApiStatus']['Result']['flightTickets'] : [];
			$passengerRecords = isset($Ticketing['ApiStatus']['Result']['passengerRecords']) ? $Ticketing['ApiStatus']['Result']['passengerRecords'] : [];
			$APIStatus = (isset($Ticketing['ApiStatus']['Status']) && $Ticketing['ApiStatus']['Status'] == 'OK') ? true : false;

			if ($APIStatus == 1 && $BookStatus == 'confirmed') {
				$status = 'SUCCESS';
				$success = true;
			} elseif ($APIStatus == 1 && ($BookStatus == 'pending' || $BookStatus == 'queued')) {
				$status = 'PENDING';
				$success = true;
			} else{
				$status = 'FAILED';
				$success = false;
			}

			$ARR_SALUTION = unserialize(ARR_SALUTION);
			$sectorarray = [];
			$SegmentsArray = [];
			foreach ($FlightBookingData as $key => $Data) {
				if (isset($Data['Segments']) && !empty($Data['Segments'])) {
					foreach ($Data['Segments'] as $sskey => $ssVal) {
						$SegmentsArray[] = $ssVal;
						$originAirportCode = !empty($ssVal['originAirportCode']) ? $ssVal['originAirportCode'] : $ssVal['OriginAirportCode'];
						$destinationAirportCode = !empty($ssVal['destinationAirportCode']) ? $ssVal['destinationAirportCode'] : $ssVal['DestAirportCode'];
						$sectorarray[] = $originAirportCode . '-' . $destinationAirportCode;
					}
				}
			}
			$ticketNumber = [];
			$pnrDetails = [];
			if ($SegmentsArray) {
				foreach ($SegmentsArray as $sskey => $ssVal) {
					$originAirportCode = !empty($ssVal['originAirportCode']) ? $ssVal['originAirportCode'] : $ssVal['OriginAirportCode'];
					$destinationAirportCode = !empty($ssVal['destinationAirportCode']) ? $ssVal['destinationAirportCode'] : $ssVal['DestAirportCode'];
					if (isset($Airline_PNR) && !empty($Airline_PNR)) {
						$pnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = (!empty($gdsPnr) && $gdsPnr != $Airline_PNR) ? $Airline_PNR . '-' . $gdsPnr : $Airline_PNR; //$segmentBookingDetails[$sskey]['pnr'];
						$ticketNumber[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = $Airline_PNR;
					} else {
						$pnrDetails[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = '';
						$ticketNumber[trim($originAirportCode) . '-' . trim($destinationAirportCode)] = '';
					}
				}
			}

			$PNRArray = [];
			foreach ($customer as $key => $val) {
				$APIflightTickets = isset($passengerRecords[$key]) ? $passengerRecords[$key] : [];
				$ticketNumberNew = [];
				if($ticketNumber){
					foreach($ticketNumber as $tkey=>$tkval){
						$ticketNumberNew[$tkey] = !empty($APIflightTickets['paxid'])?$APIflightTickets['paxid']:$tkval;
					}
				}

				$SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
				$SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
				$SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
				$ssrSeatInfos = [];
				$ssrMealInfos = [];
				$ssrBaggageInfos = [];
				if ($SelectedSeat) {
					foreach ($SelectedSeat as $STSEC => $valST) {
						$seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
						$amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
						$ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
					}
				}
				if ($SelectedBag) {
					// foreach($SelectedBag as $STSEC=>$valST){
					// echo "valST<pre>";print_r($valST);
					$Code = isset($SelectedBag[$key]['Code']) ? $SelectedBag[$key]['Code'] : '';
					$bagKey = isset($SelectedBag[$key]['key']) ? $SelectedBag[$key]['key'] : '';
					$strPlit = explode("_", $bagKey);
					$SSR_TypeDesc = isset($SelectedBag[$key]['desc']) ? $SelectedBag[$key]['desc'] : '';
					$amount = isset($SelectedBag[$key]['amount']) ? $valST[$key]['amount'] : '';
					$ssrBaggageInfos[$strPlit[0] . '-' . $strPlit[1]] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
					// }
				}
				if ($SelectedMeal) {
					// foreach($SelectedMeal as $STSEC=>$valST){
					$Code = isset($SelectedMeal[$key]['Code']) ? $SelectedMeal[$key]['Code'] : '';
					$SSR_TypeDesc = isset($SelectedMeal[$key]['desc']) ? $SelectedMeal[$key]['desc'] : '';
					$MealKey = isset($SelectedMeal[$key]['key']) ? $SelectedMeal[$key]['key'] : '';
					$strPlitMeal = explode("_", $MealKey);
					$amount = isset($SelectedMeal[$key]['amount']) ? $SelectedMeal[$key]['amount'] : '';
					$ssrMealInfos[$strPlitMeal[0] . '-' . $strPlitMeal[1]] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
					// }
				}
				$paxtype = $val['paxType'];
                if ($paxtype == 1) {
                    $paxtypeName = 'ADULT';
                    $Salutation = $ARR_SALUTION[$val['salution']];
                } else if ($paxtype == 2) {
                    $paxtypeName = 'CHILD';
                    $Salutation = $ARR_SALUTION[$val['salution']];
                } else {
                    $paxtypeName = 'INFANT';
                    $Salutation = $ARR_SALUTION[$val['salution']];
                }

                

				$passanger[] = array(
					'pnrDetails' => $pnrDetails,
					'ticketNumberDetails' => $ticketNumberNew,
					'ssrSeatInfos' => $ssrSeatInfos,
					'ssrBaggageInfos' => $ssrBaggageInfos,
					'ssrMealInfos' => $ssrMealInfos,
					'ti' => $Salutation,
					'pt' => $paxtypeName,
				    'fN' => $val['firstname'],
                    'lN' => $val['lastname'],
					'id' => $paxtype,
					'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
				);
				$PNR_Number = array_values($pnrDetails);
				$TicketNumber_ = array_values($ticketNumberNew);
				$sectors = array_values(array_flip($pnrDetails));
				$PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
				$PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
				$PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
				$PNRArray[$key]['sectors'] = implode('@@', $sectorarray);
			}
			$response = array(
				'status' => array('success' => $success),
				'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
				'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
			);

			// echo "<pre>";
			// print_r(($response));
			// die;
			return $response;
		}
	}
    
    public function SetGTXUpdateData($response, $post)
    {
        if ($response) {
            $ResponseStatus = isset($response['status']['success']) ? $response['status']['success'] : 0;
            $ErrorMessage = isset($response['errors'][0]['message']) ? $response['errors'][0]['message'] : '';
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $ICSourceSysId = (isset($post['ICSourceSysId']) && !empty($post['ICSourceSysId'])) ? $post['ICSourceSysId'] : 0;
            $searchID = (isset($post['searchID']) && !empty($post['searchID'])) ? $post['searchID'] : 0;
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $strTicketPNRLCC = isset($response['itemInfos']['AIR']['travellerInfos'][0]['pnrDetails']) ? $response['itemInfos']['AIR']['travellerInfos'][0]['pnrDetails'] : '';
            $Passenger = isset($response['itemInfos']['AIR']['travellerInfos']) ? $response['itemInfos']['AIR']['travellerInfos'] : '';
            $LastTicketDate = !empty($response['itemInfos']['AIR']['timeLimit']) ? $response['itemInfos']['AIR']['timeLimit'] : '';
            $strBookingIdLCC = isset($response['order']['bookingId']) ? $response['order']['bookingId'] : '0';
            $OrderStatus = isset($response['order']['status']) ? $response['order']['status'] : '';
            $strgdsPnrs = isset($response['itemInfos']['AIR']['travellerInfos'][0]['gdsPnrs']) ? $response['itemInfos']['AIR']['travellerInfos'][0]['gdsPnrs'] : '';
            $resultsTBO = [];
            if ($BookingData) {
                foreach ($BookingData as $k => $value) {
                    $finalpnr = [];
                    $finalgdspnr = [];
                    $segmentArray = [];
                    if ($value['Segments']) {
                        foreach ($value['Segments'] as $seg) {
                            $originAirportCode = $seg['originAirportCode'];
                            $destinationAirportCode = $seg['destinationAirportCode'];
                            $segmentArray[] = $AirportCode = $originAirportCode . '-' . $destinationAirportCode;
                            $finalgdspnr[] = isset($strgdsPnrs[$AirportCode]) ? $strgdsPnrs[$AirportCode] : '';
                            $finalpnr[] = isset($strTicketPNRLCC[$AirportCode]) ? $strTicketPNRLCC[$AirportCode] : '';
                        }
                        $customerpnr = [];
                        if ($Passenger) {
                            foreach ($Passenger as $pk => $pax) {
                                $pnrDetails = isset($pax['pnrDetails'])?$pax['pnrDetails']:[];
                                $ticketNumberDetails = isset($pax['ticketNumberDetails']) ? $pax['ticketNumberDetails'] : [];
                                $TicketNumber = [];
                                $TicketId = [];
                                foreach ($segmentArray as $sgvl) {
                                    $TicketNumber[] = isset($pnrDetails[$sgvl]) ? $pnrDetails[$sgvl] : '';
                                    $TicketId[] = (isset($ticketNumberDetails[$sgvl]) && !empty($ticketNumberDetails[$sgvl])) ? $ticketNumberDetails[$sgvl] : '';
                                }
                                $customerpnr[$pk]['PNR_Number'] = implode('-', $pnrDetails);
                                $customerpnr[$pk]['TicketId'] = implode('-', $TicketNumber);
                                $customerpnr[$pk]['TicketNumber'] = implode('-', $TicketId);
                                $customerpnr[$pk]['sectors'] = implode('@@', $segmentArray);
                            }
                        }
                        $PNRNew = array_values(array_unique($finalpnr));
                        $GDSpnr = array_values(array_unique($finalgdspnr));
                        $resultsTBO[$k] = array(
                            'customerpnr' => $customerpnr,
                            'PNRNumber' => implode('-', $PNRNew),
                            'GDSPNRNumber' => implode('-', $GDSpnr),
                            'ErrorCode' => 0,
                            'ErrorMessage' => $ErrorMessage,
                            'IsBookingStatus' => $ResponseStatus,
                            'OnwardAutoTicket' => ($OrderStatus == 'PENDING') ? 0 : $ResponseStatus,
                            'IsPriceChanged' => false,
                            'sectorTitle' => $value['SourceAirportCode'] . '-' . $value['DestAirportCode'],
                            'BookingId' => !empty($value['bookingId']) ? $value['bookingId'] : $searchID,
                            'APIBookingId' => ($ICSourceSysId == 8) ? $strBookingIdLCC[$k] : $strBookingIdLCC,
                            'LastTicketDate' => $LastTicketDate,
                            'FareRules' => [],
                        );
                    }
                }
            }
            return $resultsTBO;
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
   
    public function apiFlightBookingNextra($post, $NEXTRAOFFICEID, $NEXTRAPASSWORD, $NEXTRAUSERNAME, $wsmode, $AgencySysId, $Securitykey)
    {
        if ($post) {
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $gstData = (isset($post['gstData']) && !empty($post['gstData'])) ? $post['gstData'] : [];
            $bookingHold = (isset($post['bookingHold']) && !empty($post['bookingHold'])) ? $post['bookingHold'] : 0;
            $flexiPayment = (isset($post['flexiPayment']) && !empty($post['flexiPayment'])) ? $post['flexiPayment'] : 0;
            $requestTicket = [];
            $ARR_SALUTION = array("1" => "Mr", "2" => "Mrs", "3" => "Ms", "4" => "Master", "5" => "Miss");
          
            $isgstapply = isset($gstData['isgstapply']) ? $gstData['isgstapply'] : false;
            $APIbookingId = isset($BookingData[0]['APIBookingId']) ? $BookingData[0]['APIBookingId'] : '';
            $interNationalSearch = isset($post['interNationalSearch']) ? $post['interNationalSearch'] : '';
            $isAdobrMandatory = isset($BookingData[0]['isDobAdult']) ? $BookingData[0]['isDobAdult'] : false;
            $isCdobrMandatory = isset($BookingData[0]['isDobChild']) ? $BookingData[0]['isDobChild'] : false;
            $isHoldAllowed = isset($BookingData[0]['isHoldAllowed']) ? $BookingData[0]['isHoldAllowed'] : false;
            $isIdobrMandatory = isset($BookingData[0]['isDobInfant']) ? $BookingData[0]['isDobInfant'] : false;
            $IsPassMandatory = isset($BookingData[0]['IsPassMandatory']) ? $BookingData[0]['IsPassMandatory'] : false;
            $isDocIdAllowedMandatory = isset($BookingData[0]['isDocIdAllowedMandatory']) ? $BookingData[0]['isDocIdAllowedMandatory'] : false;
            $ApiResultIndex = isset($BookingData[0]['ApiResultIndex']) ? $BookingData[0]['ApiResultIndex'] : '';
            $flightKey = isset($BookingData[0]['flightKey']) ? $BookingData[0]['flightKey'] : '';
            $currencySysId = isset($BookingData[0]['FairRules']['currencySysId']) ? $BookingData[0]['FairRules']['currencySysId'] : '';

            
            $MasterAgencyData = $this->getAgencyData($AgencySysId, $Securitykey);
            $gstnnumber = isset($MasterAgencyData['GSTINFO']) ? $MasterAgencyData['GSTINFO'] : '';
            $GSTINFO = isset($gstData['GstNumber']) ? $gstData['GstNumber'] : '';
            $gstvalidate = $this->gstvalidate($gstnnumber, $GSTINFO);
            
            $arrPassengers = [];
            $ssrList = [];
            $deliveryInfo = [];
            $TotalMealPrice = 0;
            $adultCount = 0;
            $childCount = 0;
            $infantCount = 0;
            $TotalBagPrice = 0;
            $TotalSeatPrice = 0;
            $APITotalMealPrice = 0;
            $APITotalBagPrice = 0;
            $APITotalSeatPrice = 0;
            foreach ($customer as $key => $value) {
                $TotalBagPrice += !empty($value['BagPrice']) ? ($value['BagPrice']) : 0;
                $TotalMealPrice += !empty($value['MealPrice']) ? ($value['MealPrice']) : 0;
                $TotalSeatPrice += !empty($value['SeatPrice']) ? ($value['SeatPrice']) : 0;
                $SelectedBag = !empty($value['SelectedBag']) ? json_decode($value['SelectedBag'], 1) : '';
                $SelectedMeal = !empty($value['SelectedMeal']) ? json_decode($value['SelectedMeal'], 1) : '';
                $SelectedSeat = !empty($value['SelectedSeat']) ? json_decode($value['SelectedSeat'], 1) : '';
                
                if($value['dateofbirth']){
                    $DOB = date('Y-m-d',strtotime($value['dateofbirth']));
                    $Age = date_diff(date_create($DOB), date_create('today'))->y;
                }
                if($value['paxType'] == 1){
                    $adultCount += 1;
                    $PaxType = 'Adult';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                }elseif($value['paxType'] == 2){
                    $childCount += 1;
                    $PaxType = 'Child';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                }else{
                    $infantCount += 1;
                    $PaxType = 'Infant';
                    $paxTitle = ($ARR_SALUTION[$value['salution']]);
                }
                $arrPassengers[$key] = array(
                    "title" => $paxTitle,
                    "first_name" => $value['firstname'],
                    "last_name" => $value['lastname'],
                    "dob" => $DOB,
                    "type" => $PaxType,
                    "tour_code" => "",
                    "deal_code" => "",
                    "frequent_flyer_number" => "",
                    "visa" => "",
                    "passport_placeofissue" => "",
                    "passport" => ($IsPassMandatory) ? $value['passportno'] : "",
                    "passport_dateofexpiry" => ($IsPassMandatory) ? $value['passportnoexpiry'] : "",
                    "passport_dateofissue" => ($IsPassMandatory) ? $value['passporIssue'] : "",

                    "agentid" => $NEXTRAOFFICEID,
                    "meal_preference" => "",
                    "seat_preference" => "",
                    "additional_segmentinfo" => "",
                    "profileid" => ($key + 1),
                    "paxssrinfo" => [],
                );

                $MealArr = [];
                if (!empty($SelectedMeal)) {
                    foreach ($SelectedMeal as $key_ => $val) {
                        $MealArr[] = [
                            "carrier" => $val[0]['carrier'],
                            "destination" => $val[0]['destination'],
                            "jtype" => "onward",
                            "origin" => $val[0]['origin'],
                            "first_name" => $value['firstname'],
                            "last_name" => $value['lastname'],
                            "passenger_title" => $paxTitle,
                            "paxid" => $key + 1,
                            "paxtype" => $PaxType,
                            "ssr_chargeableamount" => $val[0]['chargeableamount'],
                            "ssrcode" => $val[0]['ssrcode'],
                            "ssrname" => $val[0]['ssrname'],
                            "ssrtype" => $val[0]['ssrtype']
                        ];
                    }
                }
                $BaggArr = [];
                if (!empty($SelectedBag)) {
                    foreach ($SelectedBag as $key_ => $val) {
                        $BaggArr[] = [
                            "carrier" => $val[0]['carrier'],
                            "destination" => $val[0]['destination'],
                            "jtype" => "onward",
                            "origin" => $val[0]['origin'],
                            "passenger_fname" => $value['firstname'],
                            "passenger_lname" => $value['lastname'],
                            "passenger_title" => $paxTitle,
                            "paxid" => $key + 1,
                            "paxtype" => $PaxType,
                            "ssr_chargeableamount" => $val[0]['chargeableamount'],
                            "ssrcode" => $val[0]['ssrcode'],
                            "ssrname" => $val[0]['ssrname'],
                            "ssrtype" => $val[0]['ssrtype']
                        ];
                    }
                }
                $ssrList[] = array_values(array_merge($BaggArr,$MealArr));
                
            }

            $misxItems_name = [];
            $TotalPay = 0;
            $GSTOnMarkUp_ = 0;
            $intPublishedFare = 0;
            $BookableAmount = 0;
            $ProcessingAmount = 0;
            $GSTOnProcessing = 0;
            foreach ($BookingData as $k => $value) {
                $intPublishedFare += $value['FairRules']['intPublishedFare'];
                if ($flexiPayment == 1) {
                    $BookableAmount += isset($value['FairRules']['BookableAmount']) ? $value['FairRules']['BookableAmount'] : 0;
                    $ProcessingAmount += isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing += isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                    $ProcessingAmount_ = isset($value['FairRules']['ProcessingAmount']) ? $value['FairRules']['ProcessingAmount'] : 0;
                    $GSTOnProcessing_ = isset($value['FairRules']['GSTOnProcessing']) ? $value['FairRules']['GSTOnProcessing'] : 0;
                } else {
                    $ProcessingAmount = 0;
                    $GSTOnProcessing = 0;
                    $ProcessingAmount_ = 0;
                    $GSTOnProcessing_ = 0;
                }
                $PublishedFare__ = 0;
                $GSTOnMarkUp__ = 0;
                $FixedMarkUp__ = 0;
                foreach ($value['FairRules']['FareBreakdown'] as $FareBreakdown) {
                    $BaseFare_ = isset($FareBreakdown['BaseFare']) ? ($FareBreakdown['BaseFare']) : 0;
                    $TDSEarn = isset($FareBreakdown['TDSEarn']) ? ($FareBreakdown['TDSEarn']) : 0;
                    $FixedMarkUp = isset($FareBreakdown['FixedMarkUp']) ? ($FareBreakdown['FixedMarkUp']) : 0;
                    $GSTOnMarkUp = isset($FareBreakdown['GSTOnMarkUp']) ? ($FareBreakdown['GSTOnMarkUp']) : 0;
                    $CommissionEarned = isset($FareBreakdown['CommissionEarned']) ? ($FareBreakdown['CommissionEarned']) : 0;
                    $Tax = isset($FareBreakdown['Tax']) ? ($FareBreakdown['Tax']) : 0;
                    $PublishedFare__ += ($BaseFare_ + $CommissionEarned + $Tax + $TDSEarn);
                    $FixedMarkUp__ += ($FixedMarkUp);
                    $GSTOnMarkUp__ += ($GSTOnMarkUp);
                }
                $TotalFare = ($PublishedFare__);
                $TotalAmount = ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__);
                $TotalPay += ($PublishedFare__ + $FixedMarkUp__ + $GSTOnMarkUp__ + $ProcessingAmount_ + $GSTOnProcessing_);
                $TotalGST = $GSTOnMarkUp__;
                $GSTOnMarkUp_ += $GSTOnMarkUp__;
                $SubTotal = ($TotalAmount - $GSTOnMarkUp__);
                $TotalcouponVal = 0;
                $SourceAirportCode = $value['SourceAirportCode'];
                $DestAirportCode = $value['DestAirportCode'];
                $FlightNumber = $value['FlightNumber'];
                $AirlineName = $value['AirlineName'];
                $Description = $SourceAirportCode . '-' . $DestAirportCode . '-' . $AirlineName . ' ' . $FlightNumber;
                $misxItems_name[] = [
                    'AgencySysId' => $AgencySysId,
                    'AgentSysId' => 0,
                    'MisxItems_name' => 'Flight',
                    'Description' => $Description,
                    'ItemQty' => 1,
                    'ItemRates' => round(($TotalFare), 2),
                    'Total' => round(($TotalFare), 2),
                    'DiscountType' => 1,
                    'Discount' => 1,
                    'TotalDiscount' => round(($TotalcouponVal), 2),
                    'TotalAmount' => round(($TotalAmount), 2),
                    'MarkupType' => '',
                    'Markup' => round(($FixedMarkUp__), 2),
                    'TotalMarkup' => round(($FixedMarkUp__), 2),
                    'SubTotal' => round(($SubTotal), 2),
                    'ServiceFeeTotal' => $TotalGST,
                    'GSTPercentage' => '18',
                    'TotalGST' => round($TotalGST, 2),
                    'SGST' => round((($TotalGST / 2)), 2),
                    'CGST' => round((($TotalGST / 2)), 2),
                    'IGST' => round(($TotalGST), 2),
                    'ItemsSACCode' => '',
                ];
            }
            $BagPrice = 0;
            $MealPrice = 0;
            $SeatPrice = 0;
            foreach ($customer as $kkkk => $ValCustomer) {
                $BagPrice += !empty($ValCustomer['BagPrice']) ? $ValCustomer['BagPrice'] : 0;
                $MealPrice += !empty($ValCustomer['MealPrice']) ? $ValCustomer['MealPrice'] : 0;
                $SeatPrice += !empty($ValCustomer['SeatPrice']) ? $ValCustomer['SeatPrice'] : 0;
            }
            $itemCount = count($misxItems_name);
            if (!empty($BagPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Baggage',
                    'ItemQty' => 1,
                    'ItemRates' => ($BagPrice),
                    'Total' => $BagPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $BagPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($MealPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Meal',
                    'ItemQty' => 1,
                    'ItemRates' => ($MealPrice),
                    'Total' => $MealPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $MealPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($SeatPrice)) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Add ons',
                    'Description' => 'Seat',
                    'ItemQty' => 1,
                    'ItemRates' => ($SeatPrice),
                    'Total' => $SeatPrice,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $SeatPrice,
                    'ServiceFeeTotal' => 0,
                    'GSTPercentage' => 0,
                    'TotalGST' => 0,
                    'SGST' => 0,
                    'CGST' => 0,
                    'IGST' => 0,
                    'ItemsSACCode' => '',
                );
            }
            $itemCount = count($misxItems_name);
            if (!empty($ProcessingAmount) && $ProcessingAmount > 0 && $flexiPayment == 1) {
                $misxItems_name[$itemCount] = array(
                    'MisxItems_name' => 'Processing Fee',
                    'Description' => 'Flexi Payment',
                    'ItemQty' => 1,
                    'ItemRates' => ($ProcessingAmount),
                    'Total' => $ProcessingAmount,
                    'DiscountType' => 0,
                    'Discount' => 0,
                    'TotalDiscount' => 0,
                    'TotalAmount' => 0,
                    'MarkupType' => '',
                    'Markup' => 0,
                    'TotalMarkup' => 0,
                    'SubTotal' => $ProcessingAmount,
                    'ServiceFeeTotal' => $GSTOnProcessing,
                    'GSTPercentage' => '18',
                    'TotalGST' => $GSTOnProcessing,
                    'SGST' => ($gstvalidate['SGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'CGST' => ($gstvalidate['CGST'] == 1) ? round(($GSTOnProcessing / 2),2) : 0,
                    'IGST' => ($gstvalidate['IGST'] == 1) ? round($GSTOnProcessing,2) : 0,
                    'ItemsSACCode' => '',
                );
            }
            $TotalInvoiceValue = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice - $GSTOnMarkUp_);
            $PublishedFare = ($TotalPay + $MealPrice + $BagPrice + $SeatPrice);
            $agencyMarkUpGST = ($GSTOnMarkUp_);
            $TotalDiscount = 0;
            
            $Invoicedata = [
                'AgentSysId' => 0,
                'CustomerSysId' => 0,
                'TPSysId' => 0,
                'MasterTPSysId' => 0,
                'ProposalID' => 0 . '/V1',
                'InvoiceDate' => date('Y-m-d'),
                'isDisplayMarkup' => true,
                'PaymentDueDate' => date('Y-m-d'),
                'PaymentDate' => date('Y-m-d'),
                'ClientGST' => $isgstapply,
                'ClientGSTNumber' => $GSTINFO,
                'Currency' => $currencySysId,
                'TotalInvoiceValue' => round(($TotalInvoiceValue), 2),
                'InvoiceStatus' => 1,
                'TotalSGST' => ($gstvalidate['SGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalCGST' => ($gstvalidate['CGST'] == 1) ? round((($agencyMarkUpGST / 2)), 2) : 0,
                'TotalIGST' => ($gstvalidate['IGST'] == 1) ? round(($agencyMarkUpGST), 2) : 0,
                'SumdiscountItem' => 0,
                'OtherDiscount' => round(($TotalDiscount), 2),
                'otherDiscountVal' => round(($TotalDiscount), 2),
                'TotalAdvance' => round(($PublishedFare), 2),
                'TotalDueAmount' => round(($PublishedFare), 2),
                'InvoiceValue' => round(($PublishedFare), 2),
                'notes' => 'Flight Ticket',
                'termsandcondition' => '',
                'client_state' => '',
                'Advance' => 0,
                'PaymentType' => 4,
                'paymentNote' => 'Online',
                'misxItems_name' => $misxItems_name,
            ];
            if($flexiPayment == 1){
                $Invoicedata['TotalDueAmount'] = ($PublishedFare - ($BookableAmount + $GSTOnProcessing + $ProcessingAmount));
                $Invoicedata['TotalAdvance'] = ($BookableAmount + $ProcessingAmount + $GSTOnProcessing);
                $Invoicedata['InvoiceStatus'] = 2;
            }
           
            $ssrListData = [];
            if($ssrList){
                foreach($ssrList as $ssrVal){
                    if($ssrVal){
                        foreach($ssrVal as $ssrData){
                            $ssrListData[] = $ssrData;
                        }
                    }
                }
            }
            $requestTicket['bookingrequest'] = array(
                "taxInfoStr" => $ApiResultIndex,
                "leademail" => ($customer[0]['email']),
                "leadmobile" => (string)($customer[0]['mobile']),
                "leadcountry" => trim($customer[0]['countryCodeISO']),
                "leadcity" => $customer[0]['city'],
                "leadstate" => $customer[0]['city'],
                "paymentmode" => "cashcard",
                "domint" => ($interNationalSearch)?'international':'domestic',
                "numadults" => (string)($adultCount),
                "numchildren" => (string)($childCount),
                "numinfants" => (string)($infantCount),
                "passengerList" => $arrPassengers,
                "ssrList" => ['SSRRow'=>$ssrListData],
            );
            $requestTicket['bookingrequest']['credentials']['agentid'] = $NEXTRAOFFICEID;
            $requestTicket['bookingrequest']['credentials']['officeid'] = $NEXTRAOFFICEID;
            $requestTicket['bookingrequest']['credentials']['password'] = $NEXTRAPASSWORD;
            $requestTicket['bookingrequest']['credentials']['username'] = $NEXTRAUSERNAME;
            $requestTicket['bookingrequest']['wsmode'] = $wsmode;
            $data = array('status' => true, 'message' => 'success', 'requestTicket' => $requestTicket, 'Invoicedata' => $Invoicedata);
            return ($data);
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsTravelZGear($post, $Ticketing, $results)
    {
        if ($post && $Ticketing) {
            $passanger = $pnrDetails = array();
            $BookStatus = (isset($results['replyCode']) && $results['replyCode'] == 0) ? true : false;
            $bookingId = isset($Ticketing['bookingId']) ? $Ticketing['bookingId'] : 0;
            $AirPNRDetails = (isset($results['data']['flight_pnrs']) && !empty($results['data']['flight_pnrs'])) ? $results['data']['flight_pnrs'] : '';
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $segmentArray = [];
            if ($BookingData) {
                foreach ($BookingData as $key => $Data) {
                    $SourceAirportCode = trim($Data['SourceAirportCode']);
                    $DestAirportCode = trim($Data['DestAirportCode']);
                    if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                        foreach ($Data['Segments'] as $sskey => $ssVal) {
                            $OnwardGroupPNR = trim($AirPNRDetails);
                            $originAirportCode = $ssVal['originAirportCode'];
                            $destinationAirportCode = $ssVal['destinationAirportCode'];
                            $segmentArray[] = $originAirportCode . '-' . $destinationAirportCode;
                            if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                                foreach ($Data['Segments'] as $key => $ssVal) {
                                    $pnrDetails[trim($ssVal['originAirportCode']) . '-' . trim($ssVal['destinationAirportCode'])] = $OnwardGroupPNR;
                                }
                            } else {
                                $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => $OnwardGroupPNR);
                            }
                        }
                    } else {
                        $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => '');
                    }
                }

                $ticketNumberDetails = [];

                $ARR_SALUTION = unserialize(ARR_SALUTION);
                $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
                $PNRArray = [];
                foreach ($customer as $key => $val) {
                    $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                    $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                    $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                    $ssrSeatInfos = [];
                    $ssrMealInfos = [];
                    $ssrBaggageInfos = [];
                    if ($SelectedSeat) {
                        foreach ($SelectedSeat as $STSEC => $valST) {
                            $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                            $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                            $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                        }
                    }
                    if ($SelectedBag) {
                        foreach ($SelectedBag as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrBaggageInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    if ($SelectedMeal) {
                        foreach ($SelectedMeal as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    $paxtype = $val['paxType'];
                    if ($paxtype == 1) {
                        $paxtypeName = 'ADULT';
                        $Salutation = $ARR_SALUTION[$val['salution']];
                    } else if ($paxtype == 2) {
                        $paxtypeName = 'CHILD';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    } else {
                        $paxtypeName = 'INFANT';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    }

                    $passanger[] = array(
                        'pnrDetails' => $pnrDetails,
                        'ticketNumberDetails' => $pnrDetails,
                        'ssrSeatInfos' => $ssrSeatInfos,
                        'ssrBaggageInfos' => $ssrBaggageInfos,
                        'ssrMealInfos' => $ssrMealInfos,
                        'ti' => $Salutation,
                        'pt' => $paxtypeName,
                        'fN' => $val['firstname'],
                        'lN' => $val['lastname'],
                        'id' => $paxtype,
                        'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
                    );
                    $PNR_Number = array_values($pnrDetails);
                    $TicketNumber_ = array_values($pnrDetails);
                    $sectors = array_values(array_flip($pnrDetails));
                    $PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
                    $PNRArray[$key]['sectors'] = implode('@@', $segmentArray);
                }

                if ($BookStatus == 1) {
                    $status = 'SUCCESS';
                    $success = true;
                } else {
                    $status = 'PENDING';
                    $success = true;
                }

                $response = array(
                    'status' => array('success' => $success),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
                    'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
                );
                return $response;
            }
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsAIRIQ($post, $Ticketing, $results)
    {
        if ($post && $Ticketing) {
            $passanger = $pnrDetails = array();
            // $BookStatus = (isset($Ticketing['results']['status']) && $Ticketing['results']['status'] == 'success') ? true : false;// remove thsi ['status'] I have change this code because this code not availabel in API resposne and table
            $BookStatus = (isset($Ticketing['status']) && $Ticketing['status'] == 'success') ? true : false;
            $bookingId = isset($Ticketing['BookingId']) ? $Ticketing['BookingId'] : 0;
           
            $AirPNRDetails = (isset($results['data']['pnr']) && !empty($results['data']['pnr'])) ? $results['data']['pnr'] : '';
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $segmentArray = [];
            
            if ($BookingData) {
                foreach ($BookingData as $key => $Data) {
                    $SourceAirportCode = trim($Data['SourceAirportCode']);
                    $DestAirportCode = trim($Data['DestAirportCode']);
                    if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                        foreach ($Data['Segments'] as $sskey => $ssVal) {
                            $OnwardGroupPNR = trim($AirPNRDetails);
                            $originAirportCode = $ssVal['originAirportCode'];
                            $destinationAirportCode = $ssVal['destinationAirportCode'];
                            $segmentArray[] = $originAirportCode . '-' . $destinationAirportCode;
                            if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                                foreach ($Data['Segments'] as $key => $ssVal) {
                                    $pnrDetails[trim($ssVal['originAirportCode']) . '-' . trim($ssVal['destinationAirportCode'])] = $OnwardGroupPNR;
                                }
                            } else {
                                $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => $OnwardGroupPNR);
                            }
                        }
                    } else {
                        $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => '');
                    }
                }

                $ticketNumberDetails = [];

                $ARR_SALUTION = unserialize(ARR_SALUTION);
                $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
                $PNRArray = [];
                foreach ($customer as $key => $val) {
                    $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                    $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                    $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                    $ssrSeatInfos = [];
                    $ssrMealInfos = [];
                    $ssrBaggageInfos = [];
                    if ($SelectedSeat) {
                        foreach ($SelectedSeat as $STSEC => $valST) {
                            $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                            $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                            $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                        }
                    }
                    if ($SelectedBag) {
                        foreach ($SelectedBag as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrBaggageInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    if ($SelectedMeal) {
                        foreach ($SelectedMeal as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    $paxtype = $val['paxType'];
                    if ($paxtype == 1) {
                        $paxtypeName = 'ADULT';
                        $Salutation = $ARR_SALUTION[$val['salution']];
                    } else if ($paxtype == 2) {
                        $paxtypeName = 'CHILD';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    } else {
                        $paxtypeName = 'INFANT';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    }

                    $passanger[] = array(
                        'pnrDetails' => $pnrDetails,
                        'ticketNumberDetails' => $pnrDetails,
                        'ssrSeatInfos' => $ssrSeatInfos,
                        'ssrBaggageInfos' => $ssrBaggageInfos,
                        'ssrMealInfos' => $ssrMealInfos,
                        'ti' => $Salutation,
                        'pt' => $paxtypeName,
                        'fN' => $val['firstname'],
                        'lN' => $val['lastname'],
                        'id' => $paxtype,
                        'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
                    );
                    $PNR_Number = array_values($pnrDetails);
                    $TicketNumber_ = array_values($pnrDetails);
                    $sectors = array_values(array_flip($pnrDetails));
                    $PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
                    $PNRArray[$key]['sectors'] = implode('@@', $segmentArray);
                }

                if ($BookStatus == 1) {
                    $status = 'SUCCESS';
                    $success = true;
                } else {
                    $status = 'PENDING';
                    $success = true;
                }

                $response = array(
                    'status' => array('success' => $success),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
                    'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
                );
                return $response;
            }
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }
    public function SetbookingDetailsGOFLYSMART($post, $Ticketing, $results)
    {
        if ($post && $Ticketing) {
            $passanger = $pnrDetails = array();
            $BookStatus = (isset($Ticketing['success'])) ? $Ticketing['success'] : false;
            $bookingId = isset($Ticketing['_data']['booking_reference']) ? $Ticketing['_data']['booking_reference'] : 0;
           
            $AirPNRDetails = (isset($results['_data']['booking_items'][0]['confirmations'][0]['pnr']) && !empty($results['_data']['booking_items'][0]['confirmations'][0]['pnr'])) ? $results['_data']['booking_items'][0]['confirmations'][0]['pnr'] : '';
            $BookingData = (isset($post['BookingData']) && !empty($post['BookingData'])) ? $post['BookingData'] : [];
            $customer = (isset($post['customer']) && !empty($post['customer'])) ? $post['customer'] : [];
            $segmentArray = [];
            
            if ($BookingData) {
                foreach ($BookingData as $key => $Data) {
                    $SourceAirportCode = trim($Data['SourceAirportCode']);
                    $DestAirportCode = trim($Data['DestAirportCode']);
                    if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                        foreach ($Data['Segments'] as $sskey => $ssVal) {
                            $OnwardGroupPNR = trim($AirPNRDetails);
                            $originAirportCode = $ssVal['originAirportCode'];
                            $destinationAirportCode = $ssVal['destinationAirportCode'];
                            $segmentArray[] = $originAirportCode . '-' . $destinationAirportCode;
                            if (isset($Data['Segments']) && !empty($Data['Segments'])) {
                                foreach ($Data['Segments'] as $key => $ssVal) {
                                    $pnrDetails[trim($ssVal['originAirportCode']) . '-' . trim($ssVal['destinationAirportCode'])] = $OnwardGroupPNR;
                                }
                            } else {
                                $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => $OnwardGroupPNR);
                            }
                        }
                    } else {
                        $pnrDetails = array($SourceAirportCode . '-' . $DestAirportCode => '');
                    }
                }

                $ticketNumberDetails = [];

                $ARR_SALUTION = unserialize(ARR_SALUTION);
                $ARR_SALUTION_CHILD = unserialize(ARR_SALUTION);
                $PNRArray = [];
                foreach ($customer as $key => $val) {
                    $SelectedSeat = isset($val['SelectedSeat']) ? $val['SelectedSeat'] : [];
                    $SelectedBag = isset($val['SelectedBag']) ? $val['SelectedBag'] : [];
                    $SelectedMeal = isset($val['SelectedMeal']) ? $val['SelectedMeal'] : [];
                    $ssrSeatInfos = [];
                    $ssrMealInfos = [];
                    $ssrBaggageInfos = [];
                    if ($SelectedSeat) {
                        foreach ($SelectedSeat as $STSEC => $valST) {
                            $seatNo = isset($valST[$key]['seatNo']) ? $valST[$key]['seatNo'] : '';
                            $amount = isset($valST[$key]['amount']) ? $valST[$key]['amount'] : '';
                            $ssrSeatInfos[$STSEC] = ['code' => $seatNo, 'amount' => $amount];
                        }
                    }
                    if ($SelectedBag) {
                        foreach ($SelectedBag as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrBaggageInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    if ($SelectedMeal) {
                        foreach ($SelectedMeal as $STSEC => $valST) {
                            $Code = isset($valST[$key]['Code']) ? $valST[$key]['Code'] : '';
                            $SSR_TypeDesc = isset($valST[$key]['SSR_TypeDesc']) ? $valST[$key]['SSR_TypeDesc'] : '';
                            $amount = isset($valST[$key]['Total_Amount']) ? $valST[$key]['Total_Amount'] : '';
                            $ssrMealInfos[$STSEC] = ['code' => $Code, 'desc' => $SSR_TypeDesc, 'amount' => $amount];
                        }
                    }
                    $paxtype = $val['paxType'];
                    if ($paxtype == 1) {
                        $paxtypeName = 'ADULT';
                        $Salutation = $ARR_SALUTION[$val['salution']];
                    } else if ($paxtype == 2) {
                        $paxtypeName = 'CHILD';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    } else {
                        $paxtypeName = 'INFANT';
                        $Salutation = $ARR_SALUTION_CHILD[$val['salution']];
                    }

                    $passanger[] = array(
                        'pnrDetails' => $pnrDetails,
                        'ticketNumberDetails' => $pnrDetails,
                        'ssrSeatInfos' => $ssrSeatInfos,
                        'ssrBaggageInfos' => $ssrBaggageInfos,
                        'ssrMealInfos' => $ssrMealInfos,
                        'ti' => $Salutation,
                        'pt' => $paxtypeName,
                        'fN' => $val['firstname'],
                        'lN' => $val['lastname'],
                        'id' => $paxtype,
                        'DOB' => isset($val['dateofbirth']) ? $val['dateofbirth'] : '',
                    );
                    $PNR_Number = array_values($pnrDetails);
                    $TicketNumber_ = array_values($pnrDetails);
                    $sectors = array_values(array_flip($pnrDetails));
                    $PNRArray[$key]['PNR_Number'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketId'] = implode('-', $PNR_Number);
                    $PNRArray[$key]['TicketNumber'] = implode('-', $TicketNumber_);
                    $PNRArray[$key]['sectors'] = implode('@@', $segmentArray);
                }

                if ($BookStatus == 1) {
                    $status = 'SUCCESS';
                    $success = true;
                } else {
                    $status = 'PENDING';
                    $success = true;
                }

                $response = array(
                    'status' => array('success' => $success),
                    'itemInfos' => array('AIR' => array('travellerInfos' => $passanger)),
                    'order' => array('bookingId' => $bookingId, 'status' => $status, 'customerpnr' => $PNRArray),
                );
                return $response;
            }
        } else {
            $data = array('status' => false, 'message' => 'Invalid request');
            return ($data);
        }
    }

    function AgencyWallaetBalance($apiDataIV)
    {
        if ($apiDataIV) {
            $curl_IV = curl_init(API_GET_AGENCY_BALANCE);
            curl_setopt($curl_IV, CURLOPT_POST, true);
            //curl_setopt($curl, CURLOPT_HEADER, true);
            curl_setopt($curl_IV, CURLOPT_POSTFIELDS, http_build_query($apiDataIV));
            curl_setopt($curl_IV, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl_IV, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl_IV, CURLOPT_TIMEOUT, 300);
            $responseIV = curl_exec($curl_IV);
            curl_close($curl_IV);
            return Zend_Json::decode($responseIV, true);
        } else {
            return 'Bad request';
        }
    }

    public function Getdays($start, $end)
    {
        $date1 = new DateTime($start);
        $date2 = new DateTime($end);
        $days  = $date2->diff($date1)->format('%a');
        return $days;
    }
    function calculateFlexiPayment($data, $action = null, $SSR = false)
    {
        $PublishFare = isset($data['PublishFare']) ? $data['PublishFare'] : 0;
        $DateOfTravel = isset($data['DateOfTravel']) ? $data['DateOfTravel'] : date('Y-m-d');
        $WallaetBalance = isset($data['WallaetBalance']) ? $data['WallaetBalance'] : [];
        $validateDays = isset($data['validateDays']) ? $data['validateDays'] : 0;
        $interNationalSearch = isset($data['interNationalSearch']) ? (int)$data['interNationalSearch'] : 0;
        $intFlightRoute = isset($data['intFlightRoute']) ? (int)$data['intFlightRoute'] : 0;
        $adultCount = isset($data['adultCount']) ? (int)$data['adultCount'] : 1;
        $childCount  = isset($data['childCount']) ? (int)$data['childCount'] : 0;
        $infantCount  = isset($data['infantCount']) ? (int)$data['infantCount'] : 0;
        $getMarkupNew = isset($data['getMarkup']['Markup']) ? $data['getMarkup']['Markup'] : [];
        $TaxSettingDetail = isset($data['getMarkup']['TaxSetting']) ? $data['getMarkup']['TaxSetting'] : [];
        $arrApiServiceTax = (isset($TaxSettingDetail['TaxPercentage']) && !empty($TaxSettingDetail['TaxPercentage'])) ? $TaxSettingDetail['TaxPercentage'] : 0;
        $IsFlexiPayment = (!empty($getMarkupNew['IsFlexiPayment']) && $getMarkupNew['IsFlexiPayment'] == 1) ? (bool)$getMarkupNew['IsFlexiPayment'] : false;
        $MinDepositAmount = !empty($getMarkupNew['MinDepositAmount']) ? (float)$getMarkupNew['MinDepositAmount'] : 0;
        if($SSR){
            $MinDepositAmount = 0; 
        }
        $ProcessingFee = !empty($getMarkupNew['ProcessingFee']) ? (float)$getMarkupNew['ProcessingFee'] : 0;
        $FlexiBookingPayCancelBefore = !empty($getMarkupNew['FlexiBookingPayCancelBefore']) ? (int)$getMarkupNew['FlexiBookingPayCancelBefore'] : 0;
        $FlexiBookingActiveBefore = !empty($getMarkupNew['FlexiBookingActiveBefore']) ? (int)$getMarkupNew['FlexiBookingActiveBefore'] : 0;
        $FlexiBookingActiveTo = !empty($getMarkupNew['FlexiBookingActiveTo']) ? (float)$getMarkupNew['FlexiBookingActiveTo'] : 0;
        $DayMinus = '-' . $FlexiBookingPayCancelBefore . ' day';
        $currentDate = date('Y-m-d');
        $DeadLineDate = date('Y-m-d', strtotime($DateOfTravel . $DayMinus));

        $DayPlus = '+' . $FlexiBookingActiveBefore . ' day';
        $betweenDate = date('Y-m-d', strtotime($currentDate . $DayPlus));
        $validateDaysActiveTo = $this->Getdays($betweenDate, $DateOfTravel);
        if ($interNationalSearch == 1) {
            $AdultFlexiCost = !empty($getMarkupNew['AdultFlexiCostFI']) ? ((float)$getMarkupNew['AdultFlexiCostFI'] * $adultCount) : 0;
            $ChildFlexiCost = !empty($getMarkupNew['ChildFlexiCostFI']) ? ((float)$getMarkupNew['ChildFlexiCostFI'] * $childCount) : 0;
            $InfantFlexiCost = !empty($getMarkupNew['InfantFlexiCostFI']) ? ((float)$getMarkupNew['InfantFlexiCostFI'] * $infantCount) : 0;
        } else {
            $AdultFlexiCost = !empty($getMarkupNew['AdultFlexiCostFD']) ? ((float)$getMarkupNew['AdultFlexiCostFD'] * $adultCount) : 0;
            $ChildFlexiCost = !empty($getMarkupNew['ChildFlexiCostFD']) ? ((float)$getMarkupNew['ChildFlexiCostFD'] * $childCount) : 0;
            $InfantFlexiCost = !empty($getMarkupNew['InfantFlexiCostFD']) ? ((float)$getMarkupNew['InfantFlexiCostFD'] * $infantCount) : 0;
        }
        $BookableAmount = ($AdultFlexiCost + $ChildFlexiCost + $InfantFlexiCost);
        // echo '<pre>';print_r($validateDays.' >= '. $FlexiBookingActiveBefore .' && '. $validateDaysActiveTo.' <= '. $FlexiBookingActiveTo);
        // echo '<pre>';print_r($IsFlexiPayment);

        // die;
        if ($IsFlexiPayment == 1 && $validateDays >= $FlexiBookingActiveBefore && $validateDaysActiveTo <= $FlexiBookingActiveTo) {
            $currentcreditBalance = isset($WallaetBalance['creditBalance']) ? $WallaetBalance['creditBalance'] : 0;
            if ($currentcreditBalance >= $MinDepositAmount) {
                $ProcessingFeeAmount = $this->calculateServiceTax($PublishFare, $ProcessingFee);
                $ProcessingAmount = isset($ProcessingFeeAmount['serviceTaxAmount']) ? $ProcessingFeeAmount['serviceTaxAmount'] : 0;

                $arrGSTOn = $this->calculateServiceTax($ProcessingAmount, $arrApiServiceTax);
                $intGSTOnProcessing = isset($arrGSTOn['serviceTaxAmount']) ? $arrGSTOn['serviceTaxAmount'] : 0;

                if ($interNationalSearch == 1 && $action != 'Review' && $intFlightRoute == 2) {
                    $BookableAmount = ($BookableAmount * $intFlightRoute);
                    // $ProcessingAmount = ($ProcessingAmount * $intFlightRoute);
                    // $intGSTOnProcessing = ($intGSTOnProcessing * $intFlightRoute);
                    // $TotalBookableAmount = ($TotalBookableAmount * $intFlightRoute);
                }
                $TotalBookableAmount = ($BookableAmount + $ProcessingAmount + $intGSTOnProcessing);
                if ($interNationalSearch == 1 && $action == 'Review' && $intFlightRoute == 2) {
                    $TotalBookableAmount = 0;
                }
                if($SSR){
                    $DataSet = [
                        'status' => true,
                        'message' => 'success',
                        'IsFlexiPayment' => $IsFlexiPayment,
                        'FlexiBookingActiveBefore' => $FlexiBookingActiveBefore,
                        'PublishFare' => $PublishFare,
                        'ProcessingFee' => $ProcessingFee,
                        'ProcessingAmount' => $ProcessingAmount,
                        'GSTOnProcessing' => $intGSTOnProcessing,
                        'DeadLineDate' => $DeadLineDate,
                        'BookableAmount' => ($BookableAmount),
                    ];
                    return $DataSet;
                }
                
                if ($PublishFare > $TotalBookableAmount) {
                    $DataSet = [
                        'status' => true,
                        'message' => 'success',
                        'IsFlexiPayment' => $IsFlexiPayment,
                        'FlexiBookingActiveBefore' => $FlexiBookingActiveBefore,
                        'PublishFare' => $PublishFare,
                        'ProcessingFee' => $ProcessingFee,
                        'ProcessingAmount' => $ProcessingAmount,
                        'GSTOnProcessing' => $intGSTOnProcessing,
                        'DeadLineDate' => $DeadLineDate,
                        'BookableAmount' => ($BookableAmount),
                    ];
                } else {
                    $DataSet = [
                        'status' => false,
                        'message' => 'Not applicable.',
                        'IsFlexiPayment' => false,
                        'FlexiBookingActiveBefore' => '',
                        'PublishFare' => $PublishFare,
                        'ProcessingFee' => 0,
                        'ProcessingAmount' => 0,
                        'DeadLineDate' => 0,
                        'BookableAmount' => 0,
                    ];
                }
            } else {
                $DataSet = [
                    'status' => false,
                    'message' => 'minimum deposite required.',
                    'IsFlexiPayment' => false,
                    'FlexiBookingActiveBefore' => '',
                    'PublishFare' => '',
                    'ProcessingFee' => '',
                    'ProcessingAmount' => '',
                    'DeadLineDate' => '',
                    'BookableAmount' => 0,
                ];
            }
        } else {
            $DataSet = [
                'status' => false,
                'message' => 'Not eligible for flexi payment',
                'IsFlexiPayment' => false,
                'FlexiBookingActiveBefore' => '',
                'PublishFare' => '',
                'ProcessingFee' => '',
                'ProcessingAmount' => '',
                'DeadLineDate' => '',
                'BookableAmount' => 0,
            ];
        }
        return $DataSet;
    }
    function calculateServiceTax($intAmount, $percentAgencySTax)
    {
        $percentAgencySTax = !empty($percentAgencySTax) ? $percentAgencySTax : 0;
        $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