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/b2bzend/application/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/b2bzend/application/models//TblPackage.php
<?php

/**
 * Class Package Master
 * Description 	This model contains the basic activity functions needed for packages.
 * @name	Package Master
 * @author	Ravi Khare
 * @version 	1.0
 * @copyright 	Catabatic Automation Pvt. 7001Ltd.
 * Handle 	Packate Related function
 *
 */
class Travel_Model_TblPackage extends Zend_Db_Table_Abstract {
#declare class vairables

    public $intId = NULL;
    private $db = NULL;
    private $imageServerUrl = NULL;
    public $searchArr = '';

    /**
     * Class Constructors
     */
    public function __construct() {

#initialize db adapter
        $this->db = Zend_Db_Table::getDefaultAdapter();

        $request = Zend_Controller_Front::getInstance()->getRequest();
// $this->baseUrl = $request->getScheme() . '://' . $request->getHttpHost();

        $registry = Zend_Registry::getInstance();
        $this->imageServerUrl = @$registry->imageServerURL;
    }

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

    /**
     * This function is Use to get Package List
     * @param   Void
     * @return  Array	
     */
    public function getCityList() {
        $sql = "SELECT CityId,Title,Country FROM TB_Master_Geo_City WHERE IsMarkForDel = '0' AND IsActive = '1' AND IsApproved = '1' ORDER BY TITLE ASC ";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getMarketPlaceList() {
        $sqlPackage = "SELECT * FROM TB_Master_MPType";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function currencyExchangeRateWithSameCurrency($fromcurrency, $tocurrency, $FAgencySysId) {
        $returnVal = 1;

        if ($fromcurrency != $tocurrency) {
            $sqlPackage = "SELECT Rate FROM TB_IC_CurrencyConversion WHERE FCurrencyType = '" . @$fromcurrency . "' AND TCurrencyType = '" . @$tocurrency . "' AND IsDelete = 0 AND IsActive = 1 ";
            $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            $MarkUpPersentage = 0;
            if ($FAgencySysId) {
                $sqlPackage = "SELECT ExchangeRateMaarkup FROM TB_Agency WHERE AgencySysId = $FAgencySysId";
                $resultAgency = $this->db->query($sqlPackage)->fetchAll();
                $MarkUpPersentage = isset($resultAgency[0]['ExchangeRateMaarkup']) ? (float) $resultAgency[0]['ExchangeRateMaarkup'] : 0;
            }
            if ($MarkUpPersentage > 0) {
                $exchangeMarkup = (((float) ($resultPackage[0]['Rate']) * $MarkUpPersentage) / 100);
                $exchangeMarkupkaMarkup = ($exchangeMarkup * $MarkUpPersentage) / 100;
                $returnVal = isset($resultPackage[0]['Rate']) ? ((float) $resultPackage[0]['Rate'] - $exchangeMarkup + $exchangeMarkupkaMarkup) : 1;
            } else {
                $returnVal = isset($resultPackage[0]['Rate']) ? (float) $resultPackage[0]['Rate'] : 1;
            }
        }
        return $returnVal;
    }

    public function currencyExchangeRate($fromcurrency, $tocurrency, $FAgencySysId = NULL) {
        $returnVal = 1;
        $AgencySysId = isset(Travel_Model_AgencyAuth::getIdentity()->AgencySysId) ? (int) Travel_Model_AgencyAuth::getIdentity()->AgencySysId : null;
        if ($fromcurrency != $tocurrency) {
            $sqlPackage = "SELECT Rate FROM TB_IC_CurrencyConversion WHERE FCurrencyType = '" . @$fromcurrency . "' AND TCurrencyType = '" . @$tocurrency . "' AND IsDelete = 0 AND IsActive = 1 ";
            $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            $MarkUpPersentage = 0;
            if ($AgencySysId && $AgencySysId > 0) {
                $sqlPackage = "SELECT ExchangeRateMaarkup FROM TB_Agency WHERE AgencySysId = $AgencySysId";
                $resultAgency = $this->db->query($sqlPackage)->fetchAll();
                $MarkUpPersentage = isset($resultAgency[0]['ExchangeRateMaarkup']) ? (float) $resultAgency[0]['ExchangeRateMaarkup'] : 0;
            } else if ($FAgencySysId) {
                $sqlPackage = "SELECT ExchangeRateMaarkup FROM TB_Agency WHERE AgencySysId = $FAgencySysId";
                $resultAgency = $this->db->query($sqlPackage)->fetchAll();
                $MarkUpPersentage = isset($resultAgency[0]['ExchangeRateMaarkup']) ? (float) $resultAgency[0]['ExchangeRateMaarkup'] : 0;
            }
            if ($MarkUpPersentage > 0) {
                $returnVal = isset($resultPackage[0]['Rate']) ? ((float) $resultPackage[0]['Rate'] + ((float) ($resultPackage[0]['Rate']) * $MarkUpPersentage) / 100) : 1;
            } else {
                $returnVal = isset($resultPackage[0]['Rate']) ? (float) $resultPackage[0]['Rate'] : 1;
            }
        }
        return $returnVal;
    }

    public function getCurrencyList() {
        $sqlPackage = "SELECT * FROM TB_Master_Currency WHERE IsDelete = '0' AND IsActive = '1' ORDER BY Symbol ASC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getAgencyUser($AgencySysId) {
        $sqlPackage = "SELECT * FROM TB_Agency INNER JOIN TB_Agency_User ON TB_Agency.AgencySysId = TB_Agency_User.AgencySysId WHERE TB_Agency.AgencySysId = '" . @$AgencySysId . "'";
        $resultPackage = $this->db->query($sqlPackage)->fetch();
        return $resultPackage;
    }

    public function getPackMPRate($packid, $travelers, $tripdate, $MarketPlaceId = NULL) {
//       echo $sqlPackage = "SELECT * FROM TB_TravelPlan_MarketWise_Rate WHERE TPIntSysId = '".@$packid."' AND IsMarkForDel = '0' AND IsActive = '1'  AND (FromDate>='".@$tripdate."' OR ToDate>= '".@$tripdate."')";
        $cond = '';
        if ($MarketPlaceId != '') {
            $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $sqlPackage = "SELECT TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) $cond ORDER BY Pax DESC";

        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getPackMPRateRowWise($packid, $travelers, $tripdate, $MarketPlaceId = NULL, $adult = 0) {
        $totalAdult = 0;
        if ((int) $adult > 2) {
            $totalAdult = $adult;
        } else {
            $totalAdult = 2;
        }
        $cond = '';
        if ($MarketPlaceId != '') {
            $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $sqlPackage = "SELECT TOP 1 TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE PAX >= '" . $totalAdult . "' AND TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) $cond ORDER BY Pax ASC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        if (empty($resultPackage)) {
            $PAXQUERY = "SELECT TOP 1 Pax FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE PAX <= '" . $totalAdult . "' AND TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) $cond ORDER BY Pax DESC";
            $resultPackagePax = $this->db->query($PAXQUERY)->fetchAll();
            if (!empty($resultPackagePax)) {
                $sqlPackage = "SELECT TOP 1 TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE Pax <= '" . $resultPackagePax[0]['Pax'] . "' AND TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) $cond ORDER BY Pax DESC";
                $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            }
        }
        return $resultPackage;
    }

    public function getPackRate($packid, $tripdate, $MarketPlaceId = NULL) {
        $cond = '';
        if ($MarketPlaceId != '') {
            $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $sqlPackage = "SELECT * FROM TB_TravelPlan_Rate as TBTPMWR WHERE TPSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) AND CAST(TBTPMWR.ValidTill AS DATE) $cond";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getPackRateRowWiseNotAccurate($packid, $tripdate, $MarketPlaceId = NULL, $adult = 0) {
        $totalAdult = 0;
        if ((int) $adult > 2) {
            $totalAdult = $adult;
        } else {
            $totalAdult = 2;
        }
        $cond = '';
        if ($MarketPlaceId != '') {
            $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $sqlPackage = "SELECT TOP 1 * FROM TB_TravelPlan_Rate as TBTPMWR WHERE PAX <= '" . $totalAdult . "' AND CostDO IS NOT NULL AND TPSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) AND CAST(TBTPMWR.ValidTill AS DATE) $cond ORDER BY Pax DESC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        if (empty($resultPackage)) {
            $PAXQUERY = "SELECT TOP 1 * FROM TB_TravelPlan_Rate as TBTPMWR WHERE PAX >= '" . $totalAdult . "' AND CostDO IS NOT NULL AND TPSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) AND CAST(TBTPMWR.ValidTill AS DATE) $cond ORDER BY Pax ASC";
            $resultPackagePax = $this->db->query($PAXQUERY)->fetchAll();
            if (!empty($resultPackagePax)) {
                $sqlPackage = "SELECT TOP 1 * FROM TB_TravelPlan_Rate as TBTPMWR WHERE Pax <= '" . $resultPackagePax[0]['Pax'] . "' AND CostDO IS NOT NULL AND TPSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) AND CAST(TBTPMWR.ValidTill AS DATE) $cond ORDER BY Pax DESC";
                $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            }
        }
        return $resultPackage;
    }

    public function getRoomWiseData($roomjsonArray) {
        $twinSharing = $tripleSharing = $getHexaRoom = $getQuintRoom = $getQuadRoom = $getExtraBedChild = $getExtraWithoutBedAdult = $getExtraBedAdult = $getSingleOccAdult = 0;
        if (is_array($roomjsonArray)) {
            foreach ($roomjsonArray as $jsonArray) {
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'single') {
                    $getSingleOccAdult = $getSingleOccAdult + 1;
                }
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'twin') {
                    $twinSharing = $jsonArray['Adult'];
                }
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'triple') {
                    $tripleSharing = $jsonArray['Adult'];
                }
                if (isset($jsonArray['AdultBedType']) && $jsonArray['AdultBedType'] == 'extrabed') {
                    $getExtraBedAdult = $getExtraBedAdult + 1;
                }
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'quad') {
                    $getQuadRoom = $jsonArray['Adult'];
                }
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'quint') {
                    $getQuintRoom = $jsonArray['Adult'];
                }
                if (isset($jsonArray['adult_type']) && $jsonArray['adult_type'] == 'hexa') {
                    $getHexaRoom = $jsonArray['Adult'];
                }
                if (isset($jsonArray['Child']) && $jsonArray['Child'] > 0) {
                    for ($c = 1;
                            $c <= $jsonArray['Child'];
                            $c++) {
                        if (isset($jsonArray['ChildBedType_' . $c]) && $jsonArray['ChildBedType_' . $c] == 'extrabed') {
                            $getExtraBedChild = $getExtraBedChild + 1;
                        }
                        if (isset($jsonArray['ChildBedType_' . $c]) && $jsonArray['ChildBedType_' . $c] == 'withoutbed') {
                            $getExtraWithoutBedAdult = $getExtraWithoutBedAdult + 1;
                        }
                    }
                }
            }
        }
        return $roomWisePax = array(
            "singleSharing" => $getSingleOccAdult,
            "twinSharing" => $twinSharing,
            "tripleSharing" => $tripleSharing,
            "getQuadRoom" => $getQuadRoom,
            "getQuintRoom" => $getQuintRoom,
            "getHexaRoom" => $getHexaRoom,
            "getExtraBedChild" => $getExtraBedChild,
            "getExtraWithoutBedAdult" => $getExtraWithoutBedAdult
        );
    }

    public function getPackRateRowWise($packid, $tripdate, $MarketPlaceId = null, $adultOld = 0, $roomjson = null) {
        $sqlPackageTP = "SELECT TOP 1 IsFixPriceCalculate,IsquadPrice,IsSharingPrice,MinPax FROM TB_TravelPlan WHERE TPSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND IsActive = '1'";
        $resultPackageTP = $this->db->query($sqlPackageTP)->fetch();
        $checkAccuratePrice = isset($resultPackageTP['IsFixPriceCalculate']) ? (int) $resultPackageTP['IsFixPriceCalculate'] : 1;
        $IsquadPrice = isset($resultPackageTP['IsquadPrice']) ? (int) $resultPackageTP['IsquadPrice'] : 0;
        $IsSharingPrice = isset($resultPackageTP['IsSharingPrice']) ? $resultPackageTP['IsSharingPrice'] : 0;
        $MinPax = isset($resultPackageTP['MinPax']) ? $resultPackageTP['MinPax'] : 0;
        $roomjsonArray = ($roomjson) ? json_decode($roomjson, true) : array();
        $AdultCount = ($roomjsonArray) ? (int) array_sum((array_column($roomjsonArray, 'Adult'))) : 0;
        $ChildCount = ($roomjsonArray) ? (int) array_sum((array_column($roomjsonArray, 'Child'))) : 0;
        $InfentCount = ($roomjsonArray) ? (int) array_sum((array_column($roomjsonArray, 'Infant'))) : 0;
        $totalPax = $AdultCount + $ChildCount + $InfentCount;
        if ($totalPax < $MinPax) {
            return array();
        }
        $getPaxArray = $this->getRoomWiseData($roomjsonArray);
        $getSingleOccAdult = $getPaxArray["singleSharing"];
        $twinSharing = $getPaxArray["twinSharing"];
        $tripleSharing = $getPaxArray["tripleSharing"];
        $getQuadRoom = $getPaxArray["getQuadRoom"];
        $getQuintRoom = $getPaxArray["getQuintRoom"];
        $getHexaRoom = $getPaxArray["getHexaRoom"];
        $getExtraBedChild = $getPaxArray["getExtraBedChild"];
        $getExtraWithoutBedAdult = $getPaxArray["getExtraWithoutBedAdult"];
        if (($getQuadRoom > 0) || ($getQuintRoom > 0) || ($getHexaRoom > 0)) {
            if ($IsquadPrice == 0) {
                return array();
            }
        }
        if ($checkAccuratePrice == 1) {
            $return = true;
            if ($IsSharingPrice != 1) {
                if ($twinSharing % 2 != 0) {
                    $return = false;
                }
                if ($tripleSharing % 3 != 0) {
                    $return = false;
                }
                if ($getQuadRoom % 4 != 0) {
                    $return = false;
                }
                if ($getQuintRoom % 5 != 0) {
                    $return = false;
                }
                if ($getHexaRoom % 6 != 0) {
                    $return = false;
                }
            }
            if ($return == true) {
                $totalAdult = 0;
                if ((int) $AdultCount > 2) {
                    if (($AdultCount % 2) == 1) {
                        $totalAdult = $AdultCount - 1;
                    } else {
                        $totalAdult = $AdultCount;
                    }
                } else {
                    $totalAdult = 2;
                }
                $cond = '';
                if ($MarketPlaceId != '') {
                    $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
                }
                $sqlPackage = "SELECT TOP 1 * FROM TB_TravelPlan_Rate as TBTPMWR WHERE PAX = '" . $totalAdult . "' AND TPSysId = '" . @$packid . "' AND CostDO is not null AND IsMarkForDel = '0' AND IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) AND CAST(TBTPMWR.ValidTill AS DATE) $cond ORDER BY Pax DESC";
                $resultPackage = $this->db->query($sqlPackage)->fetchAll();
                if (!empty($resultPackage)) {
                    if ($getSingleOccAdult > 0) {
                        if (isset($resultPackage[0]['CostSO']) && ($resultPackage[0]['CostSO'])) {
                            $return = true;
                        } else {
                            $return = false;
                        }
                    } else {
                        $return = true;
                    }
                    if ($getExtraBedAdult > 0 || $tripleSharing > 0) {
                        if (isset($resultPackage[0]['AdultCostExtraBed']) && ($resultPackage[0]['AdultCostExtraBed'])) {
                            $getExtraBed = true;
                        } else {
                            $getExtraBed = false;
                        }
                    } else {
                        $getExtraBed = true;
                    }
                    if ($getExtraWithoutBedAdult > 0) {
                        if ((isset($resultPackage[0]['CostWithoutBed']) && ($resultPackage[0]['CostWithoutBed'])) || (isset($resultPackage[0]['CostChildWOEBTwoToFour']) && ($resultPackage[0]['CostChildWOEBTwoToFour']))) {
                            $CostWithoutBed = true;
                        } else {
                            $CostWithoutBed = false;
                        }
                    } else {
                        $CostWithoutBed = true;
                    }
                    if ($getExtraBedChild > 0) {
                        if (isset($resultPackage[0]['CostExtraBed']) && ($resultPackage[0]['CostExtraBed'])) {
                            $CostExtraBed = true;
                        } else {
                            $CostExtraBed = false;
                        }
                    } else {
                        $CostExtraBed = true;
                    }
                    if ($InfentCount > 0) {
                        if (isset($resultPackage[0]['CostInfent']) && ($resultPackage[0]['CostInfent'])) {
                            $infent_return = true;
                        } else {
                            $infent_return = false;
                        }
                    } else {
                        $infent_return = true;
                    }
                    if ($getQuadRoom > 0) {
                        if (isset($resultPackage[0]['CostQuad']) && ($resultPackage[0]['CostQuad'])) {
                            $cost_quad_return = true;
                        } else {
                            $cost_quad_return = false;
                        }
                    } else {
                        $cost_quad_return = true;
                    }
                    if ($getQuintRoom > 0) {
                        if (isset($resultPackage[0]['CostQuint']) && ($resultPackage[0]['CostQuint'])) {
                            $cost_quint_return = true;
                        } else {
                            $cost_quint_return = false;
                        }
                    } else {
                        $cost_quint_return = true;
                    }
                    if ($getHexaRoom > 0) {
                        if (isset($resultPackage[0]['CostHexa']) && ($resultPackage[0]['CostHexa'])) {
                            $cost_hexa_return = true;
                        } else {
                            $cost_hexa_return = false;
                        }
                    } else {
                        $cost_hexa_return = true;
                    }
                } else {
                    $return = false;
                }
                if ($return && $infent_return && $CostExtraBed && $CostWithoutBed && $getExtraBed && $cost_quad_return && $cost_hexa_return && $cost_quint_return) {
                    return $resultPackage;
                } else {
                    return array();
                }
            } else {
                return array();
            }
        } else {
            $return = true;
            if ($IsSharingPrice != 1) {
                if ($twinSharing % 2 != 0) {
                    $return = false;
                }
                if ($tripleSharing % 3 != 0) {
                    $return = false;
                }
                if ($getQuadRoom % 4 != 0) {
                    $return = false;
                }
                if ($getQuintRoom % 5 != 0) {
                    $return = false;
                }
                if ($getHexaRoom % 6 != 0) {
                    $return = false;
                }
            }
            if ($return == true) {
                $resultPackage = $this->getPackRateRowWiseNotAccurate($packid, $tripdate, $MarketPlaceId, $adultOld);
                if (!empty($resultPackage)) {
                    if ($getSingleOccAdult > 0) {
                        if (isset($resultPackage[0]['CostSO']) && ($resultPackage[0]['CostSO'])) {
                            $return = true;
                        } else {
                            $return = false;
                        }
                    } else {
                        $return = true;
                    }
                    if ($getExtraBedAdult > 0 || $tripleSharing > 0) {
                        if (isset($resultPackage[0]['AdultCostExtraBed']) && ($resultPackage[0]['AdultCostExtraBed'])) {
                            $getExtraBed = true;
                        } else {
                            $getExtraBed = false;
                        }
                    } else {
                        $getExtraBed = true;
                    }
                    if ($getExtraWithoutBedAdult > 0) {
// if (isset($resultPackage[0]['CostWithoutBed']) && ($resultPackage[0]['CostWithoutBed'])) {
                        if ((isset($resultPackage[0]['CostWithoutBed']) && ($resultPackage[0]['CostWithoutBed'])) || (isset($resultPackage[0]['CostChildWOEBTwoToFour']) && ($resultPackage[0]['CostChildWOEBTwoToFour']))) {
                            $CostWithoutBed = true;
                        } else {
                            $CostWithoutBed = false;
                        }
                    } else {
                        $CostWithoutBed = true;
                    }
                    if ($getExtraBedChild > 0) {
                        if (isset($resultPackage[0]['CostExtraBed']) && ($resultPackage[0]['CostExtraBed'])) {
                            $CostExtraBed = true;
                        } else {
                            $CostExtraBed = false;
                        }
                    } else {
                        $CostExtraBed = true;
                    }
                    if ($InfentCount > 0) {
                        if (isset($resultPackage[0]['CostInfent']) && ($resultPackage[0]['CostInfent'])) {
                            $infent_return = true;
                        } else {
                            $infent_return = false;
                        }
                    } else {
                        $infent_return = true;
                    }
                    if ($getQuadRoom > 0) {
                        if (isset($resultPackage[0]['CostQuad']) && ($resultPackage[0]['CostQuad'])) {
                            $cost_quad_return = true;
                        } else {
                            $cost_quad_return = false;
                        }
                    } else {
                        $cost_quad_return = true;
                    }
                    if ($getQuintRoom > 0) {
                        if (isset($resultPackage[0]['CostQuint']) && ($resultPackage[0]['CostQuint'])) {
                            $cost_quint_return = true;
                        } else {
                            $cost_quint_return = false;
                        }
                    } else {
                        $cost_quint_return = true;
                    }
                    if ($getHexaRoom > 0) {
                        if (isset($resultPackage[0]['CostHexa']) && ($resultPackage[0]['CostHexa'])) {
                            $cost_hexa_return = true;
                        } else {
                            $cost_hexa_return = false;
                        }
                    } else {
                        $cost_hexa_return = true;
                    }
                } else {
                    $return = false;
                }
                if ($return && $infent_return && $CostExtraBed && $CostWithoutBed && $getExtraBed && $cost_quad_return && $cost_hexa_return && $cost_quint_return) {
                    return $resultPackage;
                } else {
                    return array();
                }
            } else {
                return array();
            }
        }
    }

    public function getCustPackRate($packid, $travelers, $tripdate) {
//        $sqlPackage = "SELECT * FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate WHERE TPIntSysId = '".@$packid."' AND IsMarkForDel = '0' AND IsActive = '1'  AND (FromDate>='".@$tripdate."' OR ToDate>= '".@$tripdate."')";
        $sqlPackage = "SELECT TBTPMWR.*,TBMC.Symbol FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate as TBTPMWR "
                . " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType "
                . " WHERE TPIntSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE)";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getCustPackRateRowWise($packid, $travelers, $tripdate) {
        $totalAdult = 0;
        if ((int) $travelers > 2) {
            $totalAdult = $travelers;
        } else {
            $totalAdult = 2;
        }
//        $sqlPackage = "SELECT * FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate WHERE TPIntSysId = '".@$packid."' AND IsMarkForDel = '0' AND IsActive = '1'  AND (FromDate>='".@$tripdate."' OR ToDate>= '".@$tripdate."')";
        $sqlPackage = "SELECT TOP 1  TBTPMWR.*,TBMC.Symbol FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate as TBTPMWR "
                . " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType "
                . " WHERE PAX >= '" . $totalAdult . "' AND TPIntSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) ORDER BY Pax ASC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();

        if (empty($resultPackage)) {
            $PAXQUERY = "SELECT TOP 1  TBTPMWR.*,TBMC.Symbol FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate as TBTPMWR "
                    . " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType "
                    . " WHERE PAX <= '" . $totalAdult . "' AND TPIntSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) ORDER BY Pax DESC";

            $resultPackagePax = $this->db->query($PAXQUERY)->fetchAll();
            if (!empty($resultPackagePax)) {
                $sqlPackage = "SELECT TOP 1  TBTPMWR.*,TBMC.Symbol FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate as TBTPMWR "
                        . " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType "
                        . " WHERE PAX <= '" . $resultPackagePax[0]['Pax'] . "' AND TPIntSysId = '" . @$packid . "' AND IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) ORDER BY Pax DESC";

                $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            }
        }


        return $resultPackage;
    }

    public function getPackageList($intLoggedinUserAgencySysId) {
        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
//echo "<pre>"; print_r($searchArr); die;

            if (isset($this->searchArr['IsMaster']) && $this->searchArr['IsMaster'] == 1) {
                $cond .= " AND TBTP.MasterRefId = 0";
            }
            if (isset($this->searchArr['cityresval']) && $this->searchArr['cityresval'] != '' && $this->searchArr['cityresval'] != 0) {
                $cond .= " AND TBTPIP.PlaceSysId = '" . $this->searchArr['cityresval'] . "' ";
            }

            if (isset($this->searchArr['economyType']) && $this->searchArr['economyType'] != '' && $this->searchArr['economyType'] != 0) {
                $cond .= " AND TBTP.EconomyMask = '" . $this->searchArr['economyType'] . "' ";
            }

            if (isset($this->searchArr['packageStatus']) && $this->searchArr['packageStatus'] != '') {
                $cond .= " AND TBTP.IsActive = '" . $this->searchArr['packageStatus'] . "' ";
            }


            if (isset($this->searchArr['pkgTPId']) && $this->searchArr['pkgTPId'] != '') {
                $cond .= " AND TBTP.TPSysId = '" . (int) $this->searchArr['pkgTPId'] . "' ";
            }

            if (isset($this->searchArr['UserSysId']) && $this->searchArr['UserSysId'] != '' && $this->searchArr['UserSysId'] != 0) {
                $cond .= " AND TBTP.AgentSysId = '" . $this->searchArr['UserSysId'] . "' ";
            }

//            if($this->searchArr['supplierId']!=0)
//            {
//              $sql .= " AND tmia.SupplierSysId = '".$this->searchArr['supplierId']."'";
//            }
//            
            if (isset($this->searchArr['PackageName']) && $this->searchArr['PackageName'] != "") {
                $packageName = $this->searchArr['PackageName'];
                $cond .= " AND TBTP.Title LIKE '%$packageName%'";
            }
            if (isset($this->searchArr['IsFixedDepartureFilter']) && $this->searchArr['IsFixedDepartureFilter'] != '') {
                $cond .= " AND TBTP.IsFixedDeparturePackage = '" . $this->searchArr['IsFixedDepartureFilter'] . "' ";
            }
            if (isset($this->searchArr['PkgSellValidTill']) && $this->searchArr['PkgSellValidTill'] != '') {
                $cond .= " AND TBTP.PkgSellValidTill < '" . $this->searchArr['PkgSellValidTill'] . "'";
            }
            if (isset($this->searchArr['IsExpired']) && $this->searchArr['IsExpired'] != '') {
                $currentDate = date("Y-m-d");
                $cond .= " AND TBTP.PkgSellValidTill < '" . $currentDate . "'";
            } else {
                $currentDate = date("Y-m-d");
                $cond .= " AND TBTP.PkgSellValidTill >= '" . $currentDate . "'";
            }
        } else {
            $currentDate = date("Y-m-d");
            $cond .= " AND TBTP.PkgSellValidTill >= '" . $currentDate . "'";
        }
        $sqlPackage = " SELECT Distinct(TBTPIP.TPSysId) as PlanId,TBAU.UserSysId,TBTP.IsDisplayOnTG, TBAU.FirstName, TBAU.LastName, TBIS.SupplierName, TBTP.* 
            FROM TB_TravelPlan TBTP
	 LEFT JOIN TB_IC_SUPPLIER TBIS ON TBIS.SupplierSysId = TBTP.SupplierSysId
         LEFT JOIN TB_TravelPlan_Itenary_Places TBTPIP ON TBTPIP.TPSysId = TBTP.TPSysId
         LEFT JOIN TB_Agency_User TBAU ON TBTP.AgentSysId = TBAU.UserSysId
         WHERE TBTP.IsCustEdit = '0' AND  
         TBTP.AgencySysId = $intLoggedinUserAgencySysId "
                . "AND TBTP.IsMarkForDel = '0' AND $cond  ORDER BY TPSysId DESC ";
//        echo $sqlPackage;die;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getAgentHubGTX($securityKey, $AgencySysId) {
        $select = $this->db->select();
        $select->from(array("T1" => "TB_TravelPlan_Mapping_Network_Web"), array("IsWeb"));
        $select->joinLeft(array("T2" => "TB_Agency"), "T2.AgencySysId = T1.ToAgencySysId", array("T2.Title", "ActivationDate", "SecurityKey"));
        $select->joinLeft(array("T3" => "TB_TravelPlan"), "T1.TPSysId = T3.TPSysId");
        $select->where('T1.AgencySysId = ?', $AgencySysId);
        $select->where('T2.SecurityKey = ?', $securityKey);
        $select->where('T1.IsWeb = ?', 1);
//echo $select; exit;
//$select->group(array("T2.Title", "T2.ActivationDate","T2.SecurityKey"));
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function checkWebSupplierActivate($securityKey, $AgencySysId) {
        $select1 = $this->db->select();
        $select1->from(array("T1" => "Tb_Agency_Mapping_GTX_Network"), array('FromAgencySysId', 'IsDeactivated'));
        $select1->joinLeft(array("T2" => "TB_Agency"), "T2.AgencySysId = T1.FromAgencySysId", array(""));
        $select1->where("T1.ToAgencySysId =?", $AgencySysId);
        $select1->where('T2.SecurityKey = ?', $securityKey);
        $result1 = $this->db->fetchAll($select1);
        return $result1;
    }

    public function getWebSupplierGTX($securityKey, $AgencySysId) {
        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
            if ($this->searchArr['cityresval'] != 0) {
                $cond .= " AND TBTP.DestinationPlacesSysId = '" . $this->searchArr['cityresval'] . "' ";
            }
            if ($this->searchArr['economyType'] != 0) {
                $cond .= " AND TBTP.EconomyMask = '" . $this->searchArr['economyType'] . "' ";
            }
            if ($this->searchArr['packageStatus'] != '') {
                $cond .= " AND TBTP.IsActive = '" . $this->searchArr['packageStatus'] . "' ";
            }
            if ($this->searchArr['pkgTPId'] != '') {
                $cond .= " AND TBTP.TPSysId = '" . $this->searchArr['pkgTPId'] . "' ";
            }
            if ($this->searchArr['UserSysId'] != 0) {
                $cond .= " AND TBTP.AgentSysId = '" . $this->searchArr['UserSysId'] . "' ";
            }
            if ($this->searchArr['PackageName'] != "") {
                $packageName = $this->searchArr['PackageName'];
                $cond .= " AND TBTP.Title LIKE '%$packageName%'";
            }
            if (isset($this->searchArr['IsFixedDepartureFilter']) && $this->searchArr['IsFixedDepartureFilter'] != '') {
                $cond .= " AND TBTP.IsFixedDeparturePackage = '" . $this->searchArr['IsFixedDepartureFilter'] . "' ";
            }
        }

//        if(!empty($arraySet)) {
//            $arraySetWhere = implode(',',$arraySet);
//            $cond .= " AND TBTP.AgencySysId NOT IN ($arraySetWhere)";
//        }
        $currentDate = date("Y-m-d");
        $sqlPackage = " SELECT (TBTP.TPSysId) as PlanId, TBTPMNW.IsWeb, TBIS.Title as SupplierName, TBTP.* 
            FROM TB_TravelPlan TBTP
	 LEFT JOIN TB_Agency TBIS ON TBIS.AgencySysId = TBTP.AgencySysId
         LEFT JOIN TB_TravelPlan_Mapping_Network_Web TBTPMNW ON TBTPMNW.TPSysId = TBTP.TPSysId AND TBTPMNW.ToAgencySysId = $AgencySysId 
         WHERE TBTP.MasterRefId = 0 AND CONVERT(date, TBTP.PkgSellValidTill) > '$currentDate'  AND TBTP.IsAprooved = 1 AND TBTP.IsActive = 1 AND TBTP.IsMarkForDel = '0' AND TBTP.IsCustEdit = '0' AND  TBTP.IsGTXNetworkWeb = 1 AND TBIS.SecurityKey = '" . $securityKey . "' AND TBTP.IsMarkForDel = '0' AND $cond  ORDER BY TPSysId DESC ";
//echo $sqlPackage; exit;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getPublishedWebSupplierPackage($AgencySysId) {
        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
            if ($this->searchArr['cityresval'] != 0) {
                $cityresval = $this->searchArr['cityresval'];
                $cond .= " AND TBTP.SearchString like '%'+(SELECT TITLE FROM TB_Master_Geo_City WHERE CityId = " . $cityresval . ")+'%' ";
            }
            if ($this->searchArr['economyType'] != 0) {
                $cond .= " AND TBTP.EconomyMask = '" . $this->searchArr['economyType'] . "' ";
            }
            if ($this->searchArr['packageStatus'] != '') {
                $cond .= " AND TBTP.IsActive = '" . $this->searchArr['packageStatus'] . "' ";
            }
            if ($this->searchArr['pkgTPId'] != '') {
                $cond .= " AND TBTP.TPSysId = '" . $this->searchArr['pkgTPId'] . "' ";
            }
            if ($this->searchArr['UserSysId'] != 0) {
                $cond .= " AND TBTP.AgentSysId = '" . $this->searchArr['UserSysId'] . "' ";
            }
            if ($this->searchArr['PackageName'] != "") {
                $packageName = $this->searchArr['PackageName'];
                $cond .= " AND TBTP.Title LIKE '%$packageName%'";
            }
            if (isset($this->searchArr['IsFixedDepartureFilter']) && $this->searchArr['IsFixedDepartureFilter'] != '') {
                $cond .= " AND TBTP.IsFixedDeparturePackage = '" . $this->searchArr['IsFixedDepartureFilter'] . "' ";
            }
        }
        $sqlPackage = " SELECT (TBTP.TPSysId) as PlanId, TBTPMNW.IsWeb, TBIS.Title as SupplierName, TBTP.* 
            FROM TB_TravelPlan TBTP
	 LEFT JOIN TB_Agency TBIS ON TBIS.AgencySysId = TBTP.AgencySysId
         
         LEFT JOIN TB_TravelPlan_Mapping_Network_Web TBTPMNW ON TBTPMNW.TPSysId = TBTP.TPSysId AND  TBTPMNW.ToAgencySysId = $AgencySysId
         WHERE TBTPMNW.IsWeb = 1 AND TBTP.MasterRefId = 0 AND TBTP.IsAprooved = 1 AND TBTP.IsMarkForDel = '0' AND TBTP.IsCustEdit = '0' AND TBTP.IsGTXNetworkWeb = 1 AND TBTP.IsMarkForDel = '0' AND $cond  ORDER BY TPSysId DESC ";
//echo $sqlPackage; exit;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getPackageListForTG() {
        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
            if ($this->searchArr['cityresval'] != 0) {
                $cond .= " AND TBTPIP.PlaceSysId = '" . $this->searchArr['cityresval'] . "' ";
            }
            if ($this->searchArr['economyType'] != 0) {
                $cond .= " AND TBTP.EconomyMask = '" . $this->searchArr['economyType'] . "' ";
            }
            if ($this->searchArr['packageStatus'] != '') {
                $cond .= " AND TBTP.IsActive = '" . $this->searchArr['packageStatus'] . "' ";
            }
            if ($this->searchArr['pkgTPId'] != '') {
                $cond .= " AND TBTP.TPSysId = '" . $this->searchArr['pkgTPId'] . "' ";
            }
            if ($this->searchArr['UserSysId'] != 0) {
                $cond .= " AND TBTP.AgentSysId = '" . $this->searchArr['UserSysId'] . "' ";
            }
            if ($this->searchArr['PackageName'] != "") {
                $packageName = $this->searchArr['PackageName'];
                $cond .= " AND TBTP.Title LIKE '%$packageName%'";
            }
            if (isset($this->searchArr['IsFixedDepartureFilter']) && $this->searchArr['IsFixedDepartureFilter'] != '') {
                $cond .= " AND TBTP.IsFixedDeparturePackage = '" . $this->searchArr['IsFixedDepartureFilter'] . "' ";
            }
        }
        $sqlPackage = " SELECT Distinct(TBTPIP.TPSysId) as PlanId,TBAU.UserSysId, TBAU.FirstName, TBAU.LastName, TBIS.Title as SupplierName, TBTP.* 
            FROM TB_TravelPlan TBTP
	 LEFT JOIN TB_Agency TBIS ON TBIS.AgencySysId = TBTP.AgencySysId
         LEFT JOIN TB_TravelPlan_Itenary_Places TBTPIP ON TBTPIP.TPSysId = TBTP.TPSysId
         LEFT JOIN TB_Agency_User TBAU ON TBTP.AgentSysId = TBAU.UserSysId
         WHERE TBTP.IsCustEdit = '0' AND  TBTP.IsTG = 1 AND TBTP.IsMarkForDel = '0' AND $cond  ORDER BY TPSysId DESC ";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function deleteFlexiPackage($TPSysId, $intLoggedinUserId) {
        $where = array('TPSysId = ? ' => $TPSysId, 'AgencySysId = ? ' => $intLoggedinUserId);
        $updateData = array('IsMarkForDel' => '1');
        $this->db->update('TB_TravelPlan', $updateData, $where);
    }

    public function getPackageTypeList() {
        $sqlPackageType = " SELECT * 
                        FROM TB_Master_PackRangeType WHERE IsActive = '1' AND IsMarkForDel = '0' ORDER BY Title ASC ";
        $resultPackageType = $this->db->query($sqlPackageType)->fetchAll();

        return $resultPackageType;
    }

    public function getPackageThemeList() {
        $sqlPackageTheme = "SELECT * 
                        FROM TB_Master_PackType WHERE IsActive = '1' AND IsMarkForDel = '0' ORDER BY PackType ASC ";
        $resultPackageTheme = $this->db->query($sqlPackageTheme)->fetchAll();

        return $resultPackageTheme;
    }

    public function getPackageInclusionList() {
        $sqlPackageIncl = "SELECT * 
                        FROM TB_Master_PackInclusion WHERE IsActive = '1' AND IsMarkForDel = '0' ORDER BY InclId ASC ";
        $resultPackageIncl = $this->db->query($sqlPackageIncl)->fetchAll();

        return $resultPackageIncl;
    }

    public function getFlexiPackageItenList($id) {
        $sqlFlexiPackageIten = "SELECT a.*,a.CitySysId as PlaceSysId
                        FROM TB_TravelPlan_Itenary as a
						WHERE a.TPSysId = '" . @$id . "' AND a.IsMarkForDel = '0' AND a.IsActive = 1  ORDER BY a.Sequence ASC,a.TotalMinDays asc";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

    public function getCustPackageItenList($id, $sequence = NULL) {
        $cond = (!empty($sequence)) ? " AND Sequence = '$sequence' " : '';

        $sqlFlexiPackageIten = "SELECT a.*,a.CitySysId as PlaceSysId
                        FROM TB_Agency_Customer_TravelPlan_Itenary as a
						WHERE  a.IsMarkForDel = 0 AND a.IsActive = 1 $cond AND a.TPSysId = '" . @$id . "'  ORDER BY a.Sequence ASC";

        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

    public function getCustPackageItenListFullfillment($id, $sequence = NULL) {
        $cond = (!empty($sequence)) ? " AND Sequence = '$sequence' " : '';

        $sqlFlexiPackageIten = "SELECT a.*,a.CitySysId as PlaceSysId
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Fullfillment as a
						WHERE  a.IsMarkForDel = 0 AND a.IsActive = 1 $cond AND a.TPSysId = '" . @$id . "'  ORDER BY a.Sequence ASC";

        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

    public function getReadyPackageList($id) {
        $sqlFlexiPackageIten = "SELECT * FROM TB_Agency_Customer_TravelPlan_Itenary as tb1
	WHERE tb1.TPSysId = '" . @$id . "' AND tb1.IsMarkForDel = 0 AND tb1.IsMarkForDel = 0";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

    public function getCustPackageList($id) {
        $resultFlexiPackage = array();
        if ((int) $id > 0) {
            $sqlFlexiPackage = "SELECT a.*,((select sum(adT1.Tax) FROM TB_Agency_Customer_TravelPlan_AddonServices adT1 where adT1.IsMarkForDelete = '0' AND a.TPSysId = adT1.TPSysId AND (adT1.PlanType = 19))) as TotalTcs,TBMC.Symbol,TBACTM.RefTPSysId,TBACTQ.StatusType as QueryStatusType FROM TB_Agency_Customer_TravelPlan a "
                    . " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = a.CurrencyType"
                    . " LEFT JOIN TB_Agency_Customer_TravelPlan_Mapping TBACTM ON TBACTM.TPSysId = a.TPSysId"
                    . " LEFT JOIN TB_Agency_Customer_TravelPlan_Query TBACTQ ON TBACTQ.TPSysId = a.MasterTPSysId"
                    . " WHERE a.TPSysId = '" . $id . "' ";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();
        }
        return $resultFlexiPackage;
    }

    public function getPackageListById($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_TravelPlan WHERE TPSysId = '" . @$id . "' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();

        return $resultFlexiPackage;
    }

    public function getFlexiPackageList($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_TravelPlan WHERE TPSysId = '" . @$id . "' AND IsMarkForDel = '0' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();
        return $resultFlexiPackage;
    }

    public function getFlexiPackageListTpId() {
//$sqlFlexiPackage = "SELECT TPSysId FROM TB_TravelPlan where AgencySysId = 36 and IsActive= 1 and IsMarkForDel = '0' and Readymade = 1 and  PackSpecType IN (1,2) order by TPSysId DESC";

        $sqlFlexiPackage = "select distinct(TPIntSysId) as TPSysId from [TB_TravelPlan_MarketWise_Rate] where TPIntSysId IN (
SELECT TPSysId FROM TB_TravelPlan where AgencySysId <> 36 and IsActive= 1 and IsMarkForDel = '0' and Readymade = 1 and  PackSpecType IN (1,2) 
) AND IsActive = 1 and IsMarkForDel = '0' and Pax = 0 order by TPIntSysId DESC";

        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getTempFlexiPackageList($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_Agency_Customer_TravelPlan WHERE TPSysId = '" . @$id . "' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();
        return $resultFlexiPackage;
    }

    public function getPackageCancelPolictyList($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_TravelPlan_Rules WHERE TPSysId = '" . @$id . "' AND IsActive = 1 AND IsMarkForDel = 0";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getChildPackageList($id) {
        $resultFlexiPackage = array();
        if (!empty($id)) {
            $sqlFlexiPackage = "SELECT AgencySysId,IsWebsite,EconomyMask,PackageCategoryName,TPSysId,PackSpecType,MasterRefId,IsFixedDeparturePackage FROM TB_TravelPlan WHERE IsMarkForDel = '0' AND (TPSysId = '" . @$id . "' OR MasterRefId = '" . @$id . "') ORDER BY TPSysId ";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function getInventoryDate($id, $marketPlaceId = 1) {
        $resultFlexiPackage = array();
        if ($id != "") {
            $sqlFlexiPackage = "SELECT convert(date,FromDate) as FromDate,convert(date,ToDate) as ToDate,FixedDepartureInventory,MIN(CostPPDO) as CostPPDO,CurrencyType  FROM [TB_TravelPlan_MarketWise_Rate] where TPIntSysId IN ($id) and IsActive = 1 and IsMarkForDel = '0' and pax > 0 and marketPlaceId = $marketPlaceId group by FromDate,ToDate,FixedDepartureInventory,CurrencyType order by FromDate";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function getInventoryDateForSearch($id, $marketPlaceId = 1) {
        $currentDate = date("Y-m-d");
        $resultFlexiPackage = array();
        if ($id != "") {
            $sqlFlexiPackage = "SELECT convert(date,FromDate) as FromDate,convert(date,ToDate) as ToDate,FixedDepartureInventory,MIN(CostPPDO) as CostPPDO,pax  FROM [TB_TravelPlan_MarketWise_Rate] where TPIntSysId IN ($id) and IsActive = 1 and IsMarkForDel = '0' and pax > 0 and FromDate >= '" . $currentDate . "' and marketPlaceId = $marketPlaceId group by FromDate,ToDate,FixedDepartureInventory,pax order by FromDate";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function getInventoryDateForSearchResult($AgencySysId, $id, $marketPlaceId = 1, $pkgId = 0) {
        $currentDate = date("Y-m-d");
        $resultFlexiPackage = array();
        echo $id;
        exit;
        if ($id != "") {

            $sqlFlexiPackage = "SELECT t1.CurrencyType,convert(date,t1.FromDate) as FromDate,t2.FixedInventory,MIN(t1.CostPPDO) as CostPPDO ,CurrentInventory,HoldInventory,t2.SoldInventory
FROM [TB_TravelPlan_MarketWise_Rate] t1
left join TB_TravelPlan_Itenary_FixedInventory t2 on t1.FromDate = t2.FromDate
where TPIntSysId IN ($pkgId)  AND t2.AgencySysId = $AgencySysId AND t2.RefTPSysID IN ( $id ) AND t2.IsMarkForDel = 0
and t1.IsActive = 1 and t1.IsMarkForDel = '0' 
and pax > 0 and t1.FromDate >= '" . $currentDate . "'
and marketPlaceId =$marketPlaceId 
group by t1.FromDate,FixedInventory ,CurrentInventory,HoldInventory,SoldInventory,t1.CurrencyType
order by t1.FromDate";

//$sqlFlexiPackage = "SELECT convert(date,FromDate) as FromDate,FixedDepartureInventory,MIN(CostPPDO) as CostPPDO  FROM [TB_TravelPlan_MarketWise_Rate] where TPIntSysId IN ($id) and IsActive = 1 and IsMarkForDel = '0' and pax > 0 and FromDate >= '" . $currentDate . "' and marketPlaceId = $marketPlaceId group by FromDate,FixedDepartureInventory order by FromDate";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function getInventoryDateForSearchResultForNetwork($id, $marketPlaceId = 1, $pkgId = 0, $FixedDepartureSourceSysId = 0) {
//echo $FixedDepartureSourceSysId;
        $currentDate = date("Y-m-d");
        $resultFlexiPackage = array();
        if ($id != "") {
            $subQuery = "SELECT MIN(CostPPDO) FROM TB_TravelPlan_MarketWise_Rate t1 WHERE t1.MarketPlaceId = $marketPlaceId AND t1.TPIntSysId = $pkgId AND convert(date,tb1.FromDate) = convert(date,t1.FromDate)";
            $sqlFlexiPackage = $this->db->select();
            $sqlFlexiPackage->from(array('tb1' => "TB_TravelPlan_Itinerary_FixedInventory"), array('convert(date,tb1.FromDate) as FromDate', 'FixedInventory', 'CurrentInventory', 'HoldInventory', 'SoldInventory', "($subQuery) AS CostPPDO", 'AdultCost', 'InfantCost', 'MarkupType', 'B2CAdultMarkup', 'B2BAdultMarkup', 'B2CInfantMarkup', 'B2BInfantMarkup', 'CurrencySysId'));
            $sqlFlexiPackage->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
            $sqlFlexiPackage->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tb2.DestinationSysId = tb3.CityId", array('Title'));
//$sqlFlexiPackage->joinLeft(array('tb4' => "TB_TravelPlan_MarketWise_Rate"), "tb1.TPSysId = tb4.TPIntSysId", array('MIN(CostPPDO) as CostPPDO'));
            if ($FixedDepartureSourceSysId > 0) {
                $sqlFlexiPackage->where('tb2.DestinationSysId = ?', $FixedDepartureSourceSysId);
            }
            $sqlFlexiPackage->where('tb1.TPSysId = ?', $id);
            $sqlFlexiPackage->where('tb1.IsActive = ?', 1);
            $sqlFlexiPackage->where('tb1.IsMarkForDel = ?', 0);
            $sqlFlexiPackage->where('CONVERT(date,tb1.FromDate) >= ?', $currentDate);
            $sqlFlexiPackage->order('tb1.FromDate ASC');
//echo $sqlFlexiPackage; 
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function getFlexiPackageMPList($id) {
        $sqlFlexiPackage = "SELECT * 
                        FROM TB_TravelPlan_MarketWise_Rate WHERE TPIntSysId = '" . @$id . "' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();

        return $resultFlexiPackage;
    }

    public function getPackageMPArrForUpdate($id) {
        $sqlFlexiPackage = "SELECT t1.*,t2.Symbol FROM TB_TravelPlan_MarketWise_Rate as t1 INNER JOIN TB_Master_Currency as t2 ON t1.CurrencyType=t2.CurrencyType WHERE t1.Pax = 0 AND t1.TPIntSysId = '" . @$id . "' AND t1.IsMarkForDel = '0' AND t1.IsActive = '1'";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getPackageRateArrForUpdate($id) {
        $sqlFlexiPackage = "SELECT t1.*,t2.Symbol FROM TB_TravelPlan_Rate t1 INNER JOIN TB_Master_Currency as t2 ON t1.CurrencyType=t2.CurrencyType  WHERE Pax = 0 AND TPSysId = '" . @$id . "' AND t1.IsMarkForDel = '0' AND t1.IsActive = '1' ORDER BY CreateDate";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getPackageMPArr($id) {
        $sqlFlexiPackage = "SELECT t1.*,t2.Symbol FROM TB_TravelPlan_MarketWise_Rate as t1 INNER JOIN TB_Master_Currency as t2 ON t1.CurrencyType=t2.CurrencyType WHERE t1.TPIntSysId = '" . @$id . "' AND t1.IsMarkForDel = '0' AND t1.IsActive = '1' order BY FromDate,MarketPlaceId,Pax ASC";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getCustPackageMPArr($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_Agency_Customer_TravelPlan_MarketWise_Rate WHERE TPIntSysId = '" . @$id . "' AND IsMarkForDel = '0' AND IsActive = '1'";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getPackageRateArr($id) {
        $sqlFlexiPackage = "SELECT t1.*,t2.Symbol FROM TB_TravelPlan_Rate t1 INNER JOIN TB_Master_Currency as t2 ON t1.CurrencyType=t2.CurrencyType  WHERE TPSysId = '" . @$id . "' AND t1.IsMarkForDel = '0' AND t1.IsActive = '1' order BY StartDate,MarketPlaceId,Pax ASC";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function updateFlexiPackage($data, $code) {
        return $this->db->update('TB_TravelPlan', $data, array('TPSysId = ?' => $code));
    }

    public function updateCustPackage($data, $code) {
        return $this->db->update('TB_Agency_Customer_TravelPlan', $data, array('TPSysId = ?' => $code));
    }

    public function updateCustPackageBYO($data, $code) {
        return $this->db->update('TB_TravelPlan', $data, array('TPSysId = ?' => $code));
    }

    public function createActivityData($data) {
        try {
            /* echo "<pre>";
              print_r($data);
              exit; */
            $this->db->insert('TB_IC_Activity', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function addFlexiPackage($data) {
        try {
            /* echo "<pre>";
              print_r($data);
              exit; */
            $this->db->insert('TB_TravelPlan', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function addFlexiPackageIten($data) {
        try {
//            echo "<pre>";
//            print_r($data);
//            exit;
            $this->db->insert('TB_TravelPlan_Itenary', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function addFlexiPackageItenPlaces($data) {
        try {
//            echo "<pre>";
//            print_r($data);
//            exit;
            $this->db->insert('TB_TravelPlan_Itenary_Places', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function changereadymadehotel($hotelid, $cityId, $tpintsysid) {
        $data = array(
            'IsSelectedOnPkg' => '1'
        );
        $where = array(
            'TPIntSysId = ? ' => @$tpintsysid,
            'AccoSysId = ? ' => @$hotelid,
            'XRefCityId = ? ' => @$cityId
        );
        $this->db->update('TB_TravelPlan_Itenary_Accom', $data, $where);
    }

    public function updateCustPackageDayItenary($packageId, $day, $itenid, $data) {
        $where = array(
            'TPSysId = ? ' => @$packageId,
            'Sequence = ? ' => @$day,
            'TPIntSysId = ? ' => @$itenid
        );
        $this->db->update('TB_Agency_Customer_TravelPlan_Itenary', $data, $where);
    }

    public function updateCustPackageDayItenaryBYO($packageId, $day, $itenid, $data) {
        $where = array(
            'TPSysId = ? ' => @$packageId,
            'Sequence = ? ' => @$day,
            'TPIntSysId = ? ' => @$itenid
        );
        $this->db->update('TB_TravelPlan_Itenary', $data, $where);
    }

    public function updateFlexiPackageDayItenary($packageId, $day, $itenid, $data) {
        $where = array(
            'TPSysId = ? ' => @$packageId,
            'Sequence = ? ' => @$day,
            'TPIntSysId = ? ' => @$itenid
        );

        $this->db->update('TB_TravelPlan_Itenary', $data, $where);
    }

    public function updateFlexiPackageReadymadeItenary($packageId, $day, $data) {
        $where = array(
            'TPIntSysId = ? ' => @$packageId,
            'Sequence = ? ' => @$day
        );

        $this->db->update('TB_TravelPlan_Itenary', $data, $where);
    }

    public function addCustPackageIten($data) {
        try {
            $this->db->insert('TB_Agency_Customer_TravelPlan_Itenary', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function addPackageItn($data) {
        try {
            $this->db->insert('TB_TravelPlan_Itenary', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function addCustPackageItenPlaces($data) {
        try {
//            echo "<pre>";
//            print_r($data);
//            exit;
            $this->db->insert('TB_Agency_Customer_TravelPlan_Itenary_Places', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function updateData($table, $data, $where) {
        try {
            $this->db->update($table, $data, $where);
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function insertData($table, $data) {
        try {
            $this->db->insert($table, $data);
            return $this->db->lastInsertId();
        } catch (Zend_Exception $e) {
            echo $e->getMessage();
            exit;
        }
    }

    public function getPackageHotelList($packageId) {
        $sqlPackageHotel = "SELECT TTIA.*,TB_IC_Accomdation.Stars as Stars, TB_Master_RoomType.Title as RoomType,TB_IC_Supplier.SupplierName,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TB_TravelPlan_Itenary_Accom as TTIA
								INNER JOIN  TB_IC_Accomdation ON TTIA.AccoSysId = TB_IC_Accomdation.AccomSysId
								LEFT JOIN TB_MP_Inventory_Accom ON TTIA.InvnItemSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
								LEFT  JOIN  TB_Master_Currency ON TTIA.CurrencyType = TB_Master_Currency.CurrencyType 
            					LEFT JOIN   TB_Master_RoomType ON TTIA.RoomType = TB_Master_RoomType.RoomType
								WHERE TTIA.IsActive = '1' AND TTIA.IsMarkForDel = '0' AND TTIA.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getHotelAmenityList() {
        $sqlPackageHotel = "SELECT * FROM TB_Master_Accom_AccomAminity WHERE IsActive = '1' AND IsMarkForDel = '0' ";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getPackageTncList($packageId) {
        $sqlPackageHotel = "SELECT * FROM TB_TravelPlan_Terms_Conditions WHERE TPIntSysId = '" . @$packageId . "' AND IsActive = '1' AND IsMarkForDel = '0' ";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getCustPackageTncList($packageId) {
        $sqlPackageHotel = "SELECT a.*,b.PaymentDetails as PaymentTerms,b.IsPaymentDetails as IsPaymentTerms,b.IsPayment as IsPaymentTnC,b.Payment as PaymentTnC FROM TB_Agency_Customer_TravelPlan_Terms_Conditions a
left join TB_Agency_Terms_Conditions b ON b.AgencySysId = a.AgencySysId WHERE TPIntSysId = '" . @$packageId . "' AND a.IsActive = '1' AND a.IsMarkForDel = '0' ";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getPackageSeqIten($packageId, $seq, $cityId) {
        $sqlstr = '';
        if ($seq > 0) {
            $sqlstr .= ' AND Sequence = ' . @$seq;
        }
        if ($cityId > 0) {
            $sqlstr .= ' AND PlaceSysId = ' . @$cityId;
        }
        $sqlPackageHotel = "SELECT * FROM TB_TravelPlan_Itenary_Places WHERE TPSysId = '" . @$packageId . "' " . @$sqlstr . " AND IsActive = '1' AND IsMarkForDel = '0' ORDER BY TPIntSysId DESC";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getPackageSequenceIten($packageId, $seq, $cityId, $TotalMinDays) {
        $sqlstr = '';
        if ($seq > 0) {
            $sqlstr .= ' AND Sequence = ' . $seq;
        }
        if ($cityId > 0) {
            $sqlstr .= ' AND CitySysId = ' . $cityId;
        }
        if ($TotalMinDays > 0) {
            $sqlstr .= ' AND TotalMinDays = ' . $TotalMinDays;
        }
        $sqlPackageHotel = "SELECT * FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . $packageId . "' " . $sqlstr . " AND IsActive = '1' AND IsMarkForDel = '0' ORDER BY TPIntSysId DESC";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getPackItenSeqAccom($packageId, $seq) {
        $sqlstr = '';
        if ($seq > 0) {
            $sqlstr .= ' AND Sequence = ' . @$seq;
        }
        $sqlPackageHotel = "SELECT * FROM TB_TravelPlan_Itenary_Accom WHERE IsMarkForDel = '0' AND TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE IsMarkForDel = '0' AND TPSysId = '" . @$packageId . "' " . @$sqlstr . ")";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getPackItenId($packageId, $sequence = NULL) {
        $cond = (!empty($sequence)) ? " AND Sequence = '$sequence' " : '';

        $sqlPackIten = "SELECT TPIntSysId,Sequence,CitySysId,TotalMinDays FROM TB_TravelPlan_Itenary WHERE IsMarkForDel = '0' AND IsActive = '1' AND TPSysId = '" . @$packageId . "' $cond  ORDER BY Sequence ASC,TotalMinDays ASC";
        $resultPackIten = $this->db->query($sqlPackIten)->fetchAll();
        return $resultPackIten;
    }

    public function getPackagePlacesList($packageId) {
        $sql = "SELECT TTIP.PlaceSysId,TB_Master_Geo_City.Title,TB_Master_Geo_City.Country 
							FROM TB_TravelPlan_Itenary_Places as TTIP
							LEFT JOIN TB_Master_Geo_City
							ON TTIP.PlaceSysId = TB_Master_Geo_City.CityId
							WHERE TTIP.TPSysId = '" . @$packageId . "' AND TTIP.IsMarkForDel = 0 
							GROUP BY TTIP.PlaceSysId,TB_Master_Geo_City.Title,TB_Master_Geo_City.Country";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getCustomerPackagePlacesList($packageId, $AgencySysId = NULL) {
        $where = '';
        if ($AgencySysId) {
            $where = 'AND TACTIP.AgencySysId = ' . $AgencySysId;
        }
        $sql = "SELECT TACTIP.PlaceSysId,TB_Master_Geo_City.Title ,TB_Master_Geo_City.Country 
							FROM TB_Agency_Customer_TravelPlan_Itenary_Places as TACTIP
							LEFT JOIN TB_Master_Geo_City
							ON TACTIP.PlaceSysId = TB_Master_Geo_City.CityId
							WHERE TACTIP.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary as TACTI WHERE TPSysId = '" . @$packageId . "'  AND TACTI.IsMarkForDel = 0)  AND TACTIP.IsMarkForDel = 0 $where
							GROUP BY TACTIP.PlaceSysId,TB_Master_Geo_City.Title,TB_Master_Geo_City.Country ";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getCustomerPackagePlacesListBYO($packageId) {
        $sql = "SELECT TACTIP.PlaceSysId,TB_Master_Geo_City.Title 
							FROM TB_Agency_Customer_TravelPlan_Itenary_Places as TACTIP
							LEFT JOIN TB_Master_Geo_City
							ON TACTIP.PlaceSysId = TB_Master_Geo_City.CityId
							WHERE TACTIP.TPIntSysId IN ($packageId)
							GROUP BY TACTIP.PlaceSysId,TB_Master_Geo_City.Title";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetCitypkglist($tpsysID) {
        $sql = "SELECT DestinationPlaces,DestinationPlacesSysId,SourcePlaces,SourcePlaceSysId FROM  TB_Agency_Customer_TravelPlan WHERE TPSysId = '" . $tpsysID . "'";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetCitypkglistBYO($tpsysID) {
        $sql = "SELECT DestinationPlaces,DestinationPlacesSysId,SourcePlaces,SourcePlaceSysId FROM  TB_TravelPlan WHERE TPSysId = '" . $tpsysID . "'";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function checkCustPackTransFixed($TPSysId, $TransType, $TransTypeCat, $Capacity) {
        $sqlPackageTransFixed = "SELECT FixTransSysId FROM TB_Agency_Customer_Trans_Fixed WHERE TPSysId = '" . @$TPSysId . "' AND TransType = '" . @$TransType . "' AND TransTypeCat = '" . @$TransTypeCat . "' AND Capacity = '" . @$Capacity . "' AND IsActive = '1' AND IsMarkForDel = '0' ORDER BY FixTransSysId DESC";
        $resultPackageTransFixed = $this->db->query($sqlPackageTransFixed)->fetchAll();
        return $resultPackageTransFixed;
    }

    public function getCustPackageTransFixed($packageId) {
        $sqlPackageTransFixed = "SELECT * 
                        FROM TB_Agency_Customer_Trans_Fixed WHERE TPSysId = '" . @$packageId . "' AND IsActive = '1' AND IsMarkForDel = '0'";
        $resultPackageTransFixed = $this->db->query($sqlPackageTransFixed)->fetchAll();
        return $resultPackageTransFixed;
    }

    public function getFlexiPackageTransFixed($packageId) {
        $sqlPackageTransFixed = "SELECT TTTF.*,TBMC.Symbol  FROM TB_TravelPlan_Trans_Fixed TTTF LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TTTF.CurrencyType WHERE TTTF.TPSysId = '" . @$packageId . "' AND TTTF.IsActive = '1' AND TTTF.IsMarkForDel = '0' AND (XrefSSInvnSysId IS NULL OR XrefSSInvnSysId = 0) ";
        $resultPackageTransFixed = $this->db->query($sqlPackageTransFixed)->fetchAll();
        return $resultPackageTransFixed;
    }

    public function getItenActivityList($packageId, $seq, $daily = NULL) {
        $dailyQ = empty($daily) ? '  top 1  ' : '';
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*						 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
                                               
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0' AND TTIE.TPIntSysId IN (SELECT $dailyQ TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = '" . @$seq . "' AND IsActive = '1' AND IsMarkForDel = '0' ) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getItenSightseenList($packageId, $seq, $daily = NULL) {
        $dailyQ = empty($daily) ? '  top 1  ' : '';
        $sqlPackageActivity = "SELECT TTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*, TB_Master_Geo_City.Title AS CityName						 
                        FROM TB_TravelPlan_SightSeeing as TTS
						LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
                        LEFT JOIN TB_Master_Geo_City ON TB_IC_SightSeeing.CitySysId = TB_Master_Geo_City.CityId
                                              
						WHERE  TTS.Type = 'Included' AND TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND TTS.InvnItemSysId IN (SELECT  $dailyQ TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = '" . @$seq . "' AND IsActive = '1' AND IsMarkForDel = '0' ) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getItenHotelsList($packageId, $seq) {
        $sqlPackageActivity = "SELECT TTIA.*,TB_IC_Supplier.SupplierName,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TB_TravelPlan_Itenary_Accom as TTIA
								LEFT JOIN TB_MP_Inventory_Accom ON TTIA.TPIntSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
								WHERE  TTIA.IsActive = '1' AND TTIA.IsMarkForDel = '0' AND TTIA.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = '" . @$seq . "' AND IsActive = '1' AND IsMarkForDel = '0' )";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getSelectHotelsList($packageId, $seq) {
//echo $packageId;

        $sqlPackageActivity = "SELECT TTIA.*,TB_IC_Supplier.SupplierName,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TTIA as TTIA
								LEFT JOIN TB_MP_Inventory_Accom ON TTIA.TPIntSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
								WHERE  TTIA.IsActive = '1' AND TTIA.IsSelectedOnPkg = '1' AND TTIA.IsMarkForDel = '0' AND TTIA.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = '" . @$seq . "' AND IsActive = '1' AND IsMarkForDel = '0' )";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageItenActivityList($itenId) {
        $sqlPackageActivity = "SELECT InvnItemSysId,TPActivitySysId						 
                        FROM TB_TravelPlan_Itenary_Events
						WHERE TPIntSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDel = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerPackageItenActivityList($itenId) {
        $sqlPackageActivity = "SELECT InvnItemSysId,TPActivitySysId						 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events
						WHERE TPIntSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDel = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerPackageItenActivityListBYO($itenId) {
        $sqlPackageActivity = "SELECT InvnItemSysId,TPActivitySysId						 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						WHERE TPIntSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDel = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageItenSightseenList($itenId, $freeType = NULL) {
        $cond = (!empty($freeType)) ? " AND Type = 'Free' " : '';
        $sqlPackageActivity = "SELECT XrefInvnItemSysId,SSSysId,IsOptionalSightseeing	
						FROM TB_TravelPlan_SightSeeing
						WHERE InvnItemSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDelete = '0' $cond";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerPackageItenSightseenList($itenId) {
        $sqlPackageActivity = "SELECT XrefInvnItemSysId,SSSysId	
						FROM TB_Agency_Customer_TravelPlan_SightSeeing
						WHERE InvnItemSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDelete = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerPackageItenSightseenListBYO($itenId) {
        $sqlPackageActivity = "SELECT XrefInvnItemSysId,SSSysId	
						FROM TB_TravelPlan_SightSeeing
						WHERE InvnItemSysId = '" . @$itenId . "' AND IsActive = '1' AND IsMarkForDelete = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getTotalHotels($packageId) {
        $sqlPackagehotels = "SELECT * FROM TB_TravelPlan_Itenary as A,TB_TravelPlan_Itenary_Accom as B WHERE A.TPSysId = '" . @$packageId . "' AND A.TPIntSysId = B.TPIntSysId";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackagehotels = $this->db->query($sqlPackagehotels)->fetchAll();
        return $resultPackagehotels;
    }

    public function getCustPackageFlightList($packageId) {
        $sqlPackageflights = "SELECT * FROM TB_Agency_Customer_TravelPlan_Air TPSysId = '" . @$packageId . "'";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackagehotels = $this->db->query($sqlPackageflights)->fetchAll();
        return $resultPackagehotels;
    }

    public function getCustPackageActivityList($packageId) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetOnlyCustPackageActivityList($packageId) {
        $sqlPackageActivity = "SELECT TTIE.*,TBMC.Symbol,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*	,TB_IC_Supplier.SupplierName,TB_IC_Supplier.SupplierSysId				 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
                                                LEFT JOIN TB_IC_Supplier ON TTIE.SupplierSysId=TB_IC_Supplier.SupplierSysId 
                                                LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TTIE.CurrencyType
						WHERE TTIE.IsActive = '1'   AND TTIE.IsMarkForDel = '0' AND TTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetOnlyCustPackageActivityListBYO($packageId) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.Type = 'Included'  AND TTIE.IsMarkForDel = '0' AND TTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityListReadyMade($packageId) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
        LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
        WHERE TACTIE.IsActive = '1' AND TACTIE.Type = 'Included'
        AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageOptionalActivityListBYO($packageId) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.Type = 'Optional' AND TTIE.IsMarkForDel = '0' AND TTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityByItenary($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.Type = 'Included' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityByItenaryBYO($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.Type = 'Included' AND TTIE.Type = 'Included' AND TTIE.IsMarkForDel = '0' AND TTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllActivityByItenary($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllActivityByItenaryOverview($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.Type = 'Included' AND TACTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllActivityByItenaryOverviewBYO($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0' AND TTIE.Type = 'Included' AND TTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityByItenaryOverviewBYO($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0' AND  TTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityByItenaryOverviewBYOPKG($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0' AND  TTIE.TPIntSysId IN ($tpintsysID)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityByItenaryOverviewBYOPKGView($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND  TACTIE.TPIntSysId IN ($tpintsysID)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetDynamicActivityByItenary($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
	LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
	WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' 
         AND TACTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackActSupplier($actId, $cost) {
        $sqlPackageActivity = "SELECT TB_IC_Supplier.SupplierName,TB_IC_Supplier.SupplierSysId FROM TB_MP_Inventory_Activity 
								LEFT JOIN TB_IC_Supplier ON TB_MP_Inventory_Activity.SupplierSysId=TB_IC_Supplier.SupplierSysId 
								WHERE XRef = '" . @$actId . "' AND TotalCostNativeAdult = '" . @$cost . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageActivityList($packageId) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*						 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0'  AND TTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "') "; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getDynamicPackageActivityList($tpintID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*,symbol						 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
                                                LEFT JOIN TB_Master_Currency ON TTIE.CurrencyType=TB_Master_Currency.CurrencyType
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0'  AND TTIE.TPIntSysId  = '" . @$tpintID . "'"; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageSightseenList($packageId) {
        $sqlPackageActivity = "SELECT TACTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*,TBGC.Title as CITYNAME,TMC.Symbol
                        FROM TB_Agency_Customer_TravelPlan_SightSeeing as TACTS
						LEFT JOIN TB_IC_SightSeeing ON TACTS.SSSysId=TB_IC_SightSeeing.SSSysId
                                                LEFT JOIN TB_Master_Geo_City TBGC ON TB_IC_SightSeeing.CitySysId=TBGC.CityId
                                                LEFT JOIN TB_Master_Currency TMC ON TMC.CurrencyType=TACTS.CurrencyType
						WHERE TACTS.IsActive = '1' AND TACTS.IsMarkForDelete = '0' AND TACTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageSightseenListBYO($packageId) {

        $sqlPackageActivity = "SELECT TTS.*,TBMC.Symbol,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*,TB_IC_Supplier.SupplierName,TB_IC_Supplier.SupplierSysId ,TTTF.FromPlace as FromAreaSysId,TTTF.RouteVechSysId,TTTF.Capacity,TTTF.TotalPrice,TTTF.CurrencyType as TransCurrencyType
                        FROM TB_TravelPlan_SightSeeing as TTS
                        LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
                        LEFT JOIN TB_IC_Supplier ON TTS.SupplierSysId=TB_IC_Supplier.SupplierSysId
                        LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TTS.CurrencyType
                        LEFT JOIN TB_TravelPlan_Trans_Fixed as TTTF ON TTS.VersionId=TTTF.XrefSSInvnSysId
                        WHERE TTS.IsActive = '1'  AND TTS.IsMarkForDelete = '0'  AND  TTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getIncludedPackageSightseenList($packageId) {
        $sqlPackageActivity = "SELECT TTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*
                        FROM TB_TravelPlan_SightSeeing as TTS
						LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
						WHERE TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND TTS.Type = 'Included' AND  TTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageOptionalSightseenListBYO($packageId) {
        $sqlPackageActivity = "SELECT TTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*
                        FROM TB_TravelPlan_SightSeeing as TTS
						LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
						WHERE TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND TTS.Type = 'Optional' AND TTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackSSSupplier($SSId, $cost) {
        $sqlPackageActivity = "SELECT TB_IC_Supplier.SupplierName,TB_IC_Supplier.SupplierSysId 
								FROM TB_MP_Inventory_SightSeeing 
								LEFT JOIN TB_IC_Supplier ON TB_MP_Inventory_SightSeeing.SupplierSysId=TB_IC_Supplier.SupplierSysId 
								WHERE XRef = '" . @$SSId . "' AND TotalCostNativeAdult = '" . @$cost . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageSightseenList($packageId) {
        $sqlPackageActivity = "SELECT TTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*						 
                        FROM TB_TravelPlan_SightSeeing as TTS
						LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
						WHERE TTS.Type = 'Included' AND TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND TTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "') "; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageTransportList($packageId) {
        $sqlPackageActivity = "SELECT TTIT.* FROM TB_TravelPlan_Itenary_Transport as TTIT  WHERE  TTIT.IsActive = '1' AND TTIT.IsMarkForDel = '0' AND TTIT.TPInvnSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "') "; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageSightseenListByItenarary($iitnID, $freeType = NULL, $readymadeFreetype = NULL) {
        if (!empty($readymadeFreetype)) {
            $cond = " AND TTS.Type IN ('Optional')";
        } else {
            $cond = (!empty($freeType)) ? " AND TTS.Type IN ('Optional','Included')" : '';
        }
        $sqlPackageActivity = "SELECT TTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*, symbol,SupplierName						 
                        FROM TB_TravelPlan_SightSeeing as TTS
						LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId 
                                                LEFT JOIN TB_IC_Supplier ON TB_IC_Supplier.SupplierSysId = TTS.SupplierSysId
                                                LEFT JOIN TB_Master_Currency ON TTS.CurrencyType=TB_Master_Currency.CurrencyType
						WHERE TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND TTS.InvnItemSysId = '" . $iitnID . "' $cond"; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageHotelsList($packageId, $catId = NULL, $packType = NULL, $mId = NULL) {
        $cond = '';
        if ($packType == 3 && !empty($catId)) {
            $cond .= " AND TACTA.BYOPackType = '" . $catId . "'";
        }
        if ($packType == 3 && !empty($mId)) {
            $cond .= " AND TACTA.MealPlanType = '" . $mId . "'";
        }
        $sqlPackageActivity = "SELECT TACTI.Sequence,TACTA.*,TB_IC_Accomdation.Stars as Stars,TB_IC_Accomdation.DetailImg as DetailImg, TB_Master_RoomType.Title as RoomType,TB_Master_Accom_MealType.Title as MealPlanTypeTitle,TB_IC_Supplier.SupplierName,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_IC_Supplier.SupplierName as sname,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TB_Agency_Customer_TravelPlan_Itenary as TACTI
LEFT JOIN TB_Agency_Customer_TravelPlan_Accom as TACTA ON TACTA.TPIntSysId = TACTI.TPIntSysId  
								INNER JOIN  TB_IC_Accomdation ON TACTA.AccoSysId = TB_IC_Accomdation.AccomSysId
								LEFT JOIN TB_MP_Inventory_Accom ON TACTA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TACTA.SupplierSysId = TB_IC_Supplier.SupplierSysId
								LEFT  JOIN  TB_Master_Currency ON TACTA.CurrencyType = TB_Master_Currency.CurrencyType 
                                                                LEFT JOIN   TB_Master_RoomType ON TACTA.RoomType = TB_Master_RoomType.RoomType
                                                                LEFT JOIN   TB_Master_Accom_MealType ON TACTA.MealPlanType = TB_Master_Accom_MealType.MealTypeId
								WHERE TB_Master_Accom_MealType.IsActive = '1' AND TB_Master_Accom_MealType.IsMarkForDel = '0'  AND TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0'  
                                                                 AND TACTI.TPSysId =  '" . @$packageId . "' $cond ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageHotelsListReadymade($packageId) {
        $sqlPackageActivity = "SELECT TACTA.*,TB_IC_Accomdation.Stars as Stars,TB_IC_Accomdation.DetailImg as DetailImg, TB_Master_RoomType.Title as RoomType ,TB_IC_Supplier.SupplierName,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_IC_Supplier.SupplierName as sname,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost,TB_Master_Accom_MealType.Title as MealPlanTypeTitle
								FROM TB_Agency_Customer_TravelPlan_Accom as TACTA
								INNER JOIN  TB_IC_Accomdation ON TACTA.AccoSysId = TB_IC_Accomdation.AccomSysId
								LEFT JOIN TB_MP_Inventory_Accom ON TACTA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TACTA.SupplierSysId = TB_IC_Supplier.SupplierSysId
								LEFT  JOIN  TB_Master_Currency ON TACTA.CurrencyType = TB_Master_Currency.CurrencyType 
                                                                LEFT JOIN   TB_Master_RoomType ON TACTA.RoomType = TB_Master_RoomType.RoomType
                                                                LEFT JOIN   TB_Master_Accom_MealType ON TACTA.MealPlanType = TB_Master_Accom_MealType.MealTypeId
								WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0' AND TACTA.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "') ";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageHotelsListBYO($packageId) {
        $sqlPackageActivity = "SELECT TACTA.*,TB_IC_Accomdation.Stars as Stars, TB_Master_RoomType.Title as RoomType,TB_IC_Supplier.SupplierName,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_IC_Supplier.SupplierName as sname,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TACTA as TACTA
								INNER JOIN  TB_IC_Accomdation ON TACTA.AccoSysId = TB_IC_Accomdation.AccomSysId
								LEFT JOIN TB_MP_Inventory_Accom ON TACTA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TACTA.SupplierSysId = TB_IC_Supplier.SupplierSysId
								LEFT  JOIN  TB_Master_Currency ON TACTA.CurrencyType = TB_Master_Currency.CurrencyType 
            					LEFT JOIN   TB_Master_RoomType ON TACTA.RoomType = TB_Master_RoomType.RoomType
								WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0' AND TACTA.TPIntSysId IN ($packageId) ";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageHotelsList($packageId) {
        $sqlPackageActivity = "SELECT TTIA.*,TB_IC_Supplier.SupplierName,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TB_TravelPlan_Itenary_Accom as TTIA
								LEFT JOIN TB_MP_Inventory_Accom ON TTIA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
								WHERE TTIA.TPIntSysId = '" . @$packageId . "' AND TTIA.IsActive = '1' AND 		TTIA.IsMarkForDel = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageHotelsListBYO($packageId, $byoPackType = NULL, $mId = NULL) {
        $cond = !empty($byoPackType) ? " AND H.BYOPackType = $byoPackType " : " ";
        $condmId = !empty($mId) ? " AND H.MealPlanType = $mId " : " ";
        $sqlPackageActivity = "SELECT min(H.TotalCost) as TotalCost,H.TPIntSysId ,H.BYOPackType,H.MealPlanType,TBMAMT.Title AS MealPlanTypeTitle
            FROM TB_TravelPlan_Itenary_Accom H
            LEFT JOIN TB_Master_Accom_MealType TBMAMT ON TBMAMT.MealTypeId = H.MealPlanType 
            WHERE H.TPIntSysId IN ($packageId) AND H.IsActive = '1' AND H.IsMarkForDel = '0' AND TBMAMT.IsActive = '1' AND TBMAMT.IsMarkForDel = '0' $cond $condmId
            Group by H.BYOPackType,H.MealPlanType,H.TPIntSysId,TBMAMT.Title 
            order by TotalCost ASC";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getSelectedPackageHotelsListBYO($packageId, $byoPackType = NULL, $mId = NULL) {
        $cond = !empty($byoPackType) ? " AND H.BYOPackType = $byoPackType " : " ";
        $condmId = !empty($mId) ? " AND H.MealPlanType = $mId " : " ";
        $sqlPackageActivity = "SELECT min(H.TotalCost) as TotalCost,H.TPIntSysId ,H.BYOPackType,H.MealPlanType,TBMAMT.Title AS MealPlanTypeTitle,H.CurrencyType
            FROM TB_TravelPlan_Itenary_Accom H
            LEFT JOIN TB_Master_Accom_MealType TBMAMT ON TBMAMT.MealTypeId = H.MealPlanType 
            WHERE H.TPIntSysId IN ($packageId) AND H.IsActive = '1' AND H.IsMarkForDel = '0' AND TBMAMT.IsActive = '1' AND TBMAMT.IsMarkForDel = '0' AND IsSelectedOnPkg = '1' $cond $condmId
            Group by H.BYOPackType,H.MealPlanType,H.TPIntSysId,TBMAMT.Title,H.CurrencyType";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageHotelsListReadyMade($packageId) {
        $sqlPackageActivity = "SELECT TACTA.*,TB_IC_Supplier.SupplierName,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TACTA as TACTA
								LEFT JOIN TB_MP_Inventory_Accom ON TACTA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
								WHERE TACTA.TPIntSysId IN ($packageId) AND TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlexiPackageFinalHotels($packageId) {
        $sqlPackageActivity = "SELECT TBTPIA.*,TBMRT.Title as RoomTitle, TBMMPT.Title as MealTitle  FROM TB_TravelPlan_Itenary_Accom TBTPIA
             LEFT JOIN TB_Master_RoomType AS TBMRT ON TBMRT.RoomType=TBTPIA.RoomType
             LEFT JOIN TB_Master_Accom_MealType as TBMMPT ON TBMMPT.MealTypeId = TBTPIA.MealPlanType
                 WHERE TBTPIA.IsActive = '1' AND TBTPIA.IsMarkForDel = '0' AND TBTPIA.TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerPkgFinalHotels($tpitnID) {
        $select = $this->db->select();
        $itenaryarray = array('AccoSysId');
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Accom"), $itenaryarray);
        $select->where("tbl.TPIntSysId = ?", $tpitnID);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//cho $select; die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getHotelInventoryList($orderby = '') {

        $sql = " SELECT InvnItemSysId, TB_IC_Accomdation.Title as HotelName, InventoryType
             ,XRefAccoSysId, XRefItemSysId, AgencySysId, TB_MP_Inventory_Accom.SupplierSysId, TB_MP_Inventory_Accom.Title, 
             TB_MP_Inventory_Accom.EconomyType,TB_IC_Accomdation.Stars as StarRating, TB_IC_Accomdation.Address as Address,
             TB_Master_Currency.Symbol as CurrencySymbol, TB_Master_RoomType.Title as RoomType
            ,MealPlanType, IxFixedDateInven, CONVERT(VARCHAR(24),FromDate,103) as FromDate,CONVERT(VARCHAR(24),ToDate,103) as ToDate, DailyRoomLimit, PurchasedQty, 
            PublishQty, BlockQty, TB_Master_Accom_MealType.Title as MealType, RateType, Tax
      ,SoldQty, ReturnQty, NetInHandQty, IsPerPaxCostAllowed, PerPaxCost, DOccupCost, SOccupCost, TB_IC_Supplier.SupplierName as SupplierName,
      NetDOccupCost, NetSOccupCost, NetExtraBedCost, NetExtraWOBedCost, NetTax, RackCommission,
      ExtraBedCost, ExtraWOBedCost, OtherCost, SaleAmount, DefaultPrice, TB_MP_Inventory_Accom.Brief, IfAnyOffer, OfferMsg
      , OfferImage, CreatorSysId, TB_MP_Inventory_Accom.CreateDate, TB_MP_Inventory_Accom.ApproveDate, TB_MP_Inventory_Accom.UpdateDate, 
      TB_MP_Inventory_Accom.IsActive, TB_MP_Inventory_Accom.IsMarkForDelete, TB_MP_Inventory_Accom.IsApproved
        FROM TB_MP_Inventory_Accom 
            INNER JOIN  TB_IC_Accomdation ON TB_MP_Inventory_Accom.XRefAccoSysId = TB_IC_Accomdation.AccomSysId
            LEFT  JOIN  TB_Master_Accom_MealType ON TB_MP_Inventory_Accom.MealPlanType = TB_Master_Accom_MealType.MealTypeId
            LEFT  JOIN  TB_IC_Supplier ON TB_MP_Inventory_Accom.SupplierSysId = TB_IC_Supplier.SupplierSysId
            LEFT  JOIN  TB_Master_Currency ON TB_MP_Inventory_Accom.CostCurrency = TB_Master_Currency.CurrencyType 
            LEFT JOIN   TB_Master_RoomType ON TB_MP_Inventory_Accom.EconomyType = TB_Master_RoomType.RoomType
            WHERE 1=1  ";

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }

        if (!empty($this->intAccomSysId)) {
            $sql .= " AND XRefAccoSysId = " . $this->intAccomSysId;
        }

        $sql .= " AND TB_MP_Inventory_Accom.IsMarkForDelete = '0' ";

        $sql .= " ORDER BY DOccupCost " . $orderby;

//echo $sql;

        return $this->db->query($sql)->fetchAll();
    }

    public function getAllActivitiesList($intLoggedinUserAgencySysId) {
        $sql = "SELECT InvnItemSysId, IsSaleStart, XRef, TotalCostNativeAdult, TotalCostNativeChild, TotalCostForeignerChild, TotalCostForeignerAdult, TrxCurrency, TB_IC_Supplier.SupplierName AS SupplierType, TB_Master_Geo_Country.Title AS CountryName, TB_Master_Geo_City.Title AS CityName, tmia.SupplierSysId, TB_IC_Activity.Title AS ActivityName, TB_IC_Activity.DurationStr, "
                . "TB_Master_BookingType.Title AS BookingName, TB_Master_ActivityType.Title As ActivityType, tmia.IsActive "
                . "FROM TB_MP_Inventory_Activity [tmia] "
                . "JOIN TB_IC_Activity ON tmia.XRef=TB_IC_Activity.ActivitySysId "
                . "JOIN TB_IC_Supplier ON tmia.SupplierSysId=TB_IC_Supplier.SupplierSysId "
                . "JOIN TB_Master_Geo_Country ON TB_IC_Activity.ContSysId=TB_Master_Geo_Country.ContId "
                . "JOIN TB_Master_Geo_City ON TB_IC_Activity.CitySysId=TB_Master_Geo_City.CityId "
                . "JOIN TB_Master_BookingType ON tmia.BookingType=TB_Master_BookingType.BookingType "
                . "LEFT JOIN TB_Master_ActivityType ON TB_IC_Activity.ActivityType=TB_Master_ActivityType.ActivityType "
//. "JOIN TB_Master_ActivityGroupType ON TB_IC_Activity.ActivityGrType=TB_Master_ActivityGroupType.ActivityGroupType "
                . " WHERE 1=1 AND IsMarkForDelete='0' AND IsSaleStart = '1' AND TB_IC_Activity.IsActive = '1' ";

        if (!empty($intLoggedinUserAgencySysId)) {
            $sql .= " AND AgencySysId = '" . $intLoggedinUserAgencySysId . "' ";
        }

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }
        $sql .= " ORDER BY tmia.UpdateDate DESC ";
//echo $sql;exit;
        return $this->db->query($sql)->fetchAll();
    }

    public function getAllSightseeingList($intLoggedinUserAgencySysId) {
        $sql = " SELECT tmis.InvnItemSysId, XRef, IsSaleStart,symbol,CostCurrency, TotalCostNativeAdult, TotalCostNativeChild, tmis.SupplierSysId, TotalCostForeignerChild, TotalCostForeignerAdult, TrxCurrency, TB_IC_Supplier.SupplierName AS SupplierType, TB_Master_Geo_Country.Title AS CountryName, TB_Master_Geo_City.Title AS CityName, TB_IC_SightSeeing.Title AS SightseeingName, TB_IC_SightSeeing.DurationStr,TB_IC_SightSeeing.ICSourceSysId, "
                . "TB_Master_BookingType.Title AS BookingName, tmis.IsActive "
                . "FROM TB_MP_Inventory_SightSeeing [tmis] "
// . "left JOIN TB_MP_Inventory_SightSeeing_Alloc alloc ON alloc.InvnItemSysId = [tmis].InvnItemSysId "
                . "JOIN TB_IC_SightSeeing ON tmis.XRef=TB_IC_SightSeeing.SSSysId "
                . "JOIN TB_IC_Supplier ON tmis.SupplierSysId=TB_IC_Supplier.SupplierSysId "
                . "JOIN TB_Master_Geo_Country ON TB_IC_SightSeeing.ContSysId=TB_Master_Geo_Country.ContId "
                . "JOIN TB_Master_Geo_City ON TB_IC_SightSeeing.CitySysId=TB_Master_Geo_City.CityId "
                . "JOIN TB_Master_BookingType ON tmis.BookingType=TB_Master_BookingType.BookingType "
                . "LEFT JOIN TB_Master_Currency as tbmc ON tbmc.CurrencyType=tmis.CostCurrency "
//                . "LEFT JOIN TB_Master_SightSeeingType ON TB_IC_SightSeeing.SSType=TB_Master_SightSeeingType.SSType "
//. "JOIN TB_Master_SightSeeingGroupType ON TB_IC_SightSeeing.SSGrType=TB_Master_SightSeeingGroupType.SSGroupType "
                . " WHERE 1=1 AND IsMarkForDelete='0' AND IsSaleStart = '1' AND TB_IC_SightSeeing.IsActive = '1'";

        if (!empty($intLoggedinUserAgencySysId)) {
            $sql .= " AND tmis.AgencySysId = '" . $intLoggedinUserAgencySysId . "' ";
        }

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }
        $sql .= " ORDER BY tbmc.symbol ASC,tmis.TotalCostNativeAdult ASC ";
//        echo $sql;die;
        return $this->db->query($sql)->fetchAll();
    }

    public function getAllFlightInventoryList($intLoggedinAgencyId, $orderby) {
        $sql = " SELECT TOP 10 InvnItemSysId, XRefFlightSysId, AgencySysId, IsItTwoWay, IsItParent, PairItemSysId, EconomyType, FromDate, ToDate, PurchasedQty, PublishQty, CostCurrency, TB_Master_Currency.Symbol AS Currency, TotalCost, TB_IC_Supplier.SupplierName AS SupplierType, TB_MP_Inventory_Air.StartPlaceSysId, TB_MP_Inventory_Air.DestPlaceSysId, "
                . "TB_IC_Trans_Air.FlightNumber, TB_Master_Airline.Title As Airline, TB_Master_Geo_City.Title AS FromPlace, TMP.Title AS ToPlace, "
                . "TB_IC_Trans_Air.StopCount, CAST(  CASE WHEN TB_IC_Trans_Air.IsDirect = 1 THEN 'Direct' ELSE 'Connecting' END AS char(15)) AS flightType, TB_MP_Inventory_Air.IsActive, TB_MP_Inventory_Air.IsSaleStart "
                . "FROM TB_MP_Inventory_Air "
                . "JOIN TB_IC_Trans_Air ON TB_MP_Inventory_Air.XRefFlightSysId=TB_IC_Trans_Air.AirInvenSysId "
                . "JOIN TB_Master_Currency ON TB_MP_Inventory_Air.CostCurrency=TB_Master_Currency.CurrencyType "
                . "JOIN TB_IC_Supplier ON TB_MP_Inventory_Air.SupplierSysId=TB_IC_Supplier.SupplierSysId "
                . "JOIN TB_Master_Airline ON TB_IC_Trans_Air.AirlineSysId=TB_Master_Airline.AirlineSysId "
                . "JOIN TB_Master_Geo_City ON TB_MP_Inventory_Air.StartPlaceSysId=TB_Master_Geo_City.CityId "
                . "JOIN TB_Master_Geo_City AS TMP ON TB_MP_Inventory_Air.DestPlaceSysId=TMP.CityId "
                . "WHERE 1=1 ";

        if (!empty($intLoggedinAgencyId)) {
            $sql .= " AND AgencySysId = " . $intLoggedinAgencyId;
        }
        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }
        $sql .= " ORDER BY TotalCost " . $orderby;
//echo $sql;exit;
        return $this->db->query($sql)->fetchAll();
    }

    public function getCustPackFlightSupplier($startplaceid, $destplaceid, $cost) {
        $sqlPackageActivity = "SELECT TB_IC_Supplier.SupplierName,TB_IC_Supplier.SupplierSysId 
								FROM TB_MP_Inventory_Air 
								LEFT JOIN TB_IC_Supplier ON TB_MP_Inventory_Air.SupplierSysId=TB_IC_Supplier.SupplierSysId 
								WHERE StartPlaceSysId = '" . @$startplaceid . "' AND DestPlaceSysId = '" . @$destplaceid . "' AND TotalCost = '" . @$cost . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getFlightDetails($flightId) {
        $sqlFlightDetails = "SELECT * FROM TB_IC_Trans_Air WHERE AirInvenSysId = '" . @$flightId . "' ";
        $resultFlightDetails = $this->db->query($sqlFlightDetails)->fetch();
        return $resultFlightDetails;
    }

    public function getFlexiPackageAir($packageId) {
        $sqlPackageAir = "SELECT * FROM TB_TravelPlan_Itenary_Air WHERE TPIntSysId = '" . @$packageId . "'";
        $resultPackageAir = $this->db->query($sqlPackageAir)->fetchAll();
        return $resultPackageAir;
    }

    public function getTermCond($tpID) {
        $sqlPackageAir = "SELECT * FROM TB_Agency_Customer_TravelPlan_Terms_Conditions WHERE TPIntSysId = '" . $tpID . "'";
        $resultPackageAir = $this->db->query($sqlPackageAir)->fetchAll();
        return $resultPackageAir;
    }

    public function getPkgTermCond($tpID) {
        $sqlPackageAir = "SELECT * FROM TB_TravelPlan_Terms_Conditions WHERE TPIntSysId = '" . $tpID . "'";
        $resultPackageAir = $this->db->query($sqlPackageAir)->fetchAll();
        return $resultPackageAir;
    }

    public function getCustPackageAirBYO($packageId) {
        $sqlPackageAir = "SELECT * FROM TB_TravelPlan_Itenary_Air WHERE TPIntSysId IN ('" . @$packageId . "') AND IsMarkForDel = '0' AND IsActive = '1'";
        $resultPackageAir = $this->db->query($sqlPackageAir)->fetchAll();
        return $resultPackageAir;
    }

    public function getCustPackageAir($packageId) {
        $sqlPackageAir = "SELECT * FROM TB_Agency_Customer_TravelPlan_Air WHERE TPIntSysId IN ('" . @$packageId . "') AND IsMarkForDel = '0' AND IsActive = '1'";
        $resultPackageAir = $this->db->query($sqlPackageAir)->fetchAll();
        return $resultPackageAir;
    }

    public function getVehilcleTypeCapacity() {
        $sql = "SELECT TB_Master_Vehicle.VehSysId, TB_Master_Vehicle.VehTypeSysId,TB_Master_Vehicle.Capacity,TB_Master_Vehicle.IsAC,TB_Master_VehicleType.Title
			FROM TB_Master_Vehicle 
			LEFT JOIN TB_Master_VehicleType
			ON TB_Master_Vehicle.VehTypeSysId=TB_Master_VehicleType.VehicleTypeSysId WHERE TB_Master_Vehicle.IsMarkForDel = '0' AND TB_Master_Vehicle.IsActive = '1'
			GROUP BY TB_Master_Vehicle.VehSysId,TB_Master_Vehicle.VehTypeSysId,TB_Master_Vehicle.IsAC,TB_Master_Vehicle.Capacity,TB_Master_VehicleType.Title";
        $rowset = $this->db->query($sql)->fetchAll();
        return $rowset;
    }

    public function getCityAllHotels($cityId, $agencySysId = null) {
        $sessionLogin_user = new Zend_Session_Namespace('sessionLogin_user');
        $manageNotifications = isset($sessionLogin_user->manageNotifications) ? $sessionLogin_user->manageNotifications : array();
        if ((int) $agencySysId > 0 && (!empty($manageNotifications) && in_array('showonlymyhotels', $manageNotifications))) {
            $cond = " AND ICSourceSysId = '$agencySysId'";
        } else {
            $cond = !empty($agencySysId) ? " AND (IsApproved = '1' OR ( ICSourceSysId = '$agencySysId' AND IsAgentSpec = 1)  ) " : " AND (IsApproved = '1') ";
        }

        $sqlPackage = "SELECT AccomSysId,Title,EconomyType,ICSourceSysId,IsAgentSpec FROM TB_IC_Accomdation WHERE Title != '' AND CitySysId = '" . @$cityId . "' AND IsMarkForDel = '0' AND IsActive = '1'  $cond ORDER BY Title ASC";
//echo $sqlPackage;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getInvHotelDetails($AccomSysId) {
        $sqlPackage = "SELECT  TB_IC_Accomdation.*, TB_Master_Geo_City.Title as CityName,
                TB_Master_Geo_Country.Title as CountryName
                FROM TB_IC_Accomdation LEFT JOIN TB_Master_Geo_City ON TB_IC_Accomdation.CitySysId = TB_Master_Geo_City.CityId
                     LEFT JOIN TB_Master_Geo_Country ON TB_IC_Accomdation.ContSysId = TB_Master_Geo_Country.ContId
                        LEFT JOIN TB_Master_EconomyType ON TB_IC_Accomdation.EconomyType = TB_Master_EconomyType.EconomyType 
                        WHERE AccomSysId = '" . @$AccomSysId . "'";
//  echo $select;
        $resultPackage = $this->db->query($sqlPackage)->fetch();
        return $resultPackage;
    }

    public function getHotelDetails($AccomSysId) {
        $sqlPackage = "SELECT  TB_IC_Accomdation_API.*, TB_Master_Geo_City.Title as CityName,
                TB_Master_Geo_Country.Title as CountryName
                FROM TB_IC_Accomdation_API LEFT JOIN TB_Master_Geo_City ON TB_IC_Accomdation_API.CitySysId = TB_Master_Geo_City.CityId
                     LEFT JOIN TB_Master_Geo_Country ON TB_IC_Accomdation_API.ContSysId = TB_Master_Geo_Country.ContId
                        LEFT JOIN TB_Master_EconomyType ON TB_IC_Accomdation_API.EconomyType = TB_Master_EconomyType.EconomyType 
                        WHERE AccomSysId = '" . @$AccomSysId . "'";
        $resultPackage = $this->db->query($sqlPackage)->fetch();
        return $resultPackage;
    }

    public function getActivityDetails($ActId) {
        $sqlPackage = "SELECT TB_IC_Activity.*, TB_Master_Geo_City.Title as CityName 
						FROM TB_IC_Activity LEFT JOIN TB_Master_Geo_City ON TB_IC_Activity.CitySysId = TB_Master_Geo_City.CityId
						WHERE TB_IC_Activity.ActivitySysId = '" . @$ActId . "'";
        $resultPackage = $this->db->query($sqlPackage)->fetch();
        return $resultPackage;
    }

    public function getSightseenDetails($SSId) {
        $sqlPackage = "SELECT TB_IC_SightSeeing.*, TB_Master_Geo_City.Title as CityName 
						FROM TB_IC_SightSeeing LEFT JOIN TB_Master_Geo_City ON TB_IC_SightSeeing.CitySysId = TB_Master_Geo_City.CityId 
						WHERE SSSysId = '" . @$SSId . "'";
        $resultPackage = $this->db->query($sqlPackage)->fetch();
        return $resultPackage;
    }

    public function getCityAllActivity($cityId, $agencySysId = null, $desinationCovered = NULL) {
        $cond = !empty($agencySysId) ? " AND (a.IsApproved = '1' OR (a.ICSourceSysId = '$agencySysId' AND a.IsAgentSpec = 1)) " : " AND (a.IsApproved = '1') ";
        $condCity = !empty($desinationCovered) ? " OR CitySysId IN ($desinationCovered) " : '';
        $sqlPackage = "SELECT  ActivitySysId,a.Title,ICSourceSysId,IsAgentSpec ,CitySysId,b.Title as CityName,Country FROM TB_IC_Activity a
                    left JOIN TB_Master_Geo_City b ON a.CitySysId = b.CityId
                 WHERE (a.CitySysId = '" . $cityId . "' $condCity) AND a.IsMarkForDel = '0' AND a.IsActive = '1' $cond 
                     Order By CASE WHEN a.CitySysId = '" . $cityId . "' THEN 1 ELSE 2 END ASC,  a.Title ASC";

//        echo $sqlPackage; die;  
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getCityAllSightseeing($cityId, $agencySysId = null, $desinationCovered = NULL) {
        $finalCity = explode(',', $desinationCovered);
        if (!empty($finalCity)) {
            $fCity = array();
            for (
                    $c = 0;
                    $c < count($finalCity);
                    $c++
            ) {
                if ((int) $finalCity[$c] > 0) {
                    $fCity[$c] = $finalCity[$c];
                }
            }
        }
        if (!empty($fCity)) {
            $desinationCovered = implode(',', $fCity);
        }
        if (isset($_SESSION['sessionLogin_user']['ShowInternalSightseeing']) && $_SESSION['sessionLogin_user']['ShowInternalSightseeing'] == 1) {
            $cond = !empty($agencySysId) ? " AND (a.ICSourceSysId = '$agencySysId' AND a.IsAgentSpec = 1) " : " AND (a.IsApproved = '1') ";
        } else {
            $cond = !empty($agencySysId) ? " AND (a.IsApproved = '1' OR(a.ICSourceSysId = '$agencySysId' AND a.IsAgentSpec = 1)) " : " AND (a.IsApproved = '1') ";
        }

        $condCity = !empty($desinationCovered) ? " OR CitySysId IN ($desinationCovered) " : '';
        $sqlPackage = "SELECT SSSysId,a.Title,a.IsRate,ICSourceSysId,IsAgentSpec,CitySysId,b.Title as CityName,Country FROM TB_IC_SightSeeing a 
            left JOIN TB_Master_Geo_City b ON a.CitySysId = b.CityId
                 WHERE (a.CitySysId = '" . $cityId . "' $condCity) AND a.IsMarkForDel = '0' AND a.IsActive = '1' $cond 
                     Order By CASE WHEN a.CitySysId = '" . $cityId . "' THEN 1 ELSE 2 END ASC,  a.Title ASC";
//echo $sqlPackage; die;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getFlexiPackItenId($packageId) {
        $sqlPackage = "SELECT TPIntSysId,Sequence,CitySysId,TotalMinDays FROM TB_TravelPlan_Itenary WHERE IsMarkForDel = '0' AND IsActive = '1' AND  TPSysId = '" . @$packageId . "'";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function deleteFlexiPackageActivity($packageId) {
        $sqlPackage = "UPDATE TB_TravelPlan_Itenary_Events SET IsMarkForDel = '1' WHERE TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $this->db->query(@$sqlPackage);
    }

    public function deleteFlexiPackageSS($packageId) {
        $sqlPackage = "UPDATE TB_TravelPlan_SightSeeing SET IsMarkForDelete = '1' WHERE InvnItemSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $this->db->query(@$sqlPackage);
    }

    public function deleteFlexiPackageHotel($packageId) {
        $sqlPackage = "UPDATE TB_TravelPlan_Itenary_Accom SET IsMarkForDel = '1' WHERE TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $this->db->query(@$sqlPackage);
    }

    public function deleteFlexiPackageTransport($packageId) {
        $sqlPackage = "UPDATE TB_TravelPlan_Itenary_Transport SET IsMarkForDel = '1' WHERE TPInvnSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
        $this->db->query(@$sqlPackage);
    }

    public function updatePackageItenDay($packageId, $seq) {
        $sqlPackage = "UPDATE TB_TravelPlan_Itenary SET Sequence = Sequence - 1 WHERE TPSysId = '" . @$packageId . "' AND Sequence > '" . @$seq . "'";
        $this->db->query(@$sqlPackage);
    }

    public function getDistinctRateDates($intPackageId) {
        $sql = " SELECT DISTINCT from_dt, to_dt FROM tbl_package_rates WHERE package_id = " . $intPackageId;
        $rowset = $this->db->query($sql)->fetchAll();
        return $rowset;
    }

    public function getHotelInfo($packageCategory = '') {

        if (empty($this->intId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = " SELECT hotel_id_standard, hotel_id_deluxe, hotel_id_luxury FROM tbl_itenary_accomodation
                        WHERE package_id = " . $this->intId;

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }

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

        $response = array();

        $objHotel = new Travel_Model_TblHotel();

        if (count($result) > 0) {
            $intCounter = 0;
            foreach ($result as $row) {

                if ($packageCategory == 'S') {
                    if (!empty($row['hotel_id_standard'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_standard'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_standard']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_standard']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_standard']);
                        $response[$intCounter]['package_category'] = 'S';
                        $intCounter++;
                    }
                }

                if ($packageCategory == 'D') {
                    if (!empty($row['hotel_id_deluxe'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_deluxe'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_deluxe']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_deluxe']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_deluxe']);
                        $response[$intCounter]['package_category'] = 'D';
                        $intCounter++;
                    }
                }

                if ($packageCategory == 'L') {
                    if (!empty($row['hotel_id_luxury'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_luxury'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_luxury']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_luxury']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_luxury']);
                        $response[$intCounter]['package_category'] = 'L';
                        $intCounter++;
                    }
                } else {

                    if (!empty($row['hotel_id_standard'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_standard'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_standard']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_standard']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_standard']);
                        $response[$intCounter]['package_category'] = 'S';
                        $intCounter++;
                    }

                    if (!empty($row['hotel_id_deluxe'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_deluxe'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_deluxe']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_deluxe']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_deluxe']);
                        $response[$intCounter]['package_category'] = 'D';
                        $intCounter++;
                    }

                    if (!empty($row['hotel_id_luxury'])) {
                        $response[$intCounter]['hotel_id'] = $row['hotel_id_luxury'];
                        $response[$intCounter]['hotel_name'] = $objHotel->getHotelName($row['hotel_id_luxury']);
                        $response[$intCounter]['ta_rating'] = $objHotel->getHotelRating($row['hotel_id_luxury']);
                        $response[$intCounter]['rating_image_url'] = $objHotel->getHotelRatingUrl($row['hotel_id_luxury']);
                        $response[$intCounter]['package_category'] = 'L';
                        $intCounter++;
                    }
                }
            }
        }


        $response = array_map("unserialize", array_unique(array_map("serialize", $response)));

//$response = array_unique($response);
        return $response;
    }

    public function getHotelInfoViaPackageCategory($packageCategory) {

        if (empty($this->intId)) {
            throw new Exception("Package Id not found.");
        }

        if (empty($packageCategory)) {
            throw new Exception("Package Category not found.");
        }

        if ($packageCategory == 'S') {
            $sql = " SELECT hotel_id_standard as hotel_id FROM tbl_itenary_accomodation
                       WHERE package_id = " . $this->intId . " AND ( hotel_id_standard <> 0 AND hotel_id_standard IS NOT NULL ) ";
        } else if ($packageCategory == 'D') {
            $sql = " SELECT hotel_id_deluxe as hotel_id FROM tbl_itenary_accomodation
                       WHERE package_id = " . $this->intId . " AND ( hotel_id_deluxe <> 0 AND hotel_id_deluxe IS NOT NULL ) ";
        } else if ($packageCategory == 'L') {
            $sql = " SELECT hotel_id_luxury as hotel_id FROM tbl_itenary_accomodation
                       WHERE package_id = " . $this->intId . " AND ( hotel_id_luxury <> 0 AND hotel_id_luxury IS NOT NULL ) ";
        }

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

        if (count($result) > 0) {
            $strHotelIds = '';
            foreach ($result as $row) {
                $strHotelIds .= $row['hotel_id'] . ',';
            }

            $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelIds);

            $objHotel = new Travel_Model_TblHotel();
            $objHotel->strCondition = " AND tbl_hotel.id in ( " . $strHotelIds . ") ";
            return $objHotel->getHotelList();
        }

        return array();
        ;
    }

    public function getNoOfNightsStay() {
        $sql = "   SELECT COUNT(*) AS nights 
               FROM tbl_itenary_accomodation WHERE 1
          AND 
		(
			(hotel_id_standard IS NOT NULL AND hotel_id_standard <> 0)
			OR
			(hotel_id_deluxe IS NOT NULL AND hotel_id_deluxe <> 0)
			OR
			(hotel_id_luxury IS NOT NULL AND hotel_id_luxury <> 0)
		)
	AND  package_id = " . $this->intId;

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }

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

        return $result[0]['nights'];
    }

    /**
     * This function is used to save / update the package.
     * @param	Int (intAgetId) , data (Array)
     * @return   boolean
     */
    public function save($intAgentId, $result) {

        $intPackageId = isset($result['intPackageId']) ? $result['intPackageId'] : '';

        $strPaymentPolicy = $result['payment_policy'];
        $strCancellationPolicy = $result['cancellation_policy'];
        $strTermsNconditions = $result['term_condition'];

        $chkPaymentPolicy = isset($result['chkPaymentPolicy']) ? 'Y' : 'N';
        $chkCancellationPolicy = isset($result['chkCancellationPolicy']) ? 'Y' : 'N';
        $chkTermsCondition = isset($result['chkTermsCondition']) ? 'Y' : 'N';

        if ($chkPaymentPolicy == 'Y') {
            $strPaymentPolicy = '';
        }

        if ($chkCancellationPolicy == 'Y') {
            $strCancellationPolicy = '';
        }

        if ($chkTermsCondition == 'Y') {
            $strTermsNconditions = '';
        }

        $intNewPackageId = '';

        $intDays = $result['days'];
        $strDayGroup = Zend_Controller_Action_HelperBroker::getStaticHelper('General')->createDayGroup($intDays);

        $strPackageType = isset($result['package_type']) ? implode(",", $result['package_type']) : '';
        $data = array(
            'package_name' => ucwords(trim(strtolower($result['package_name']))),
            'category' => isset($result['category']) ? implode(",", $result['category']) : '',
            'pax_min' => $result['pax_min'],
            'pax_max' => $result['pax_max'],
            'days' => $intDays,
            'day_group' => $strDayGroup,
            'country' => isset($result['country']) ? $result['country'] : '',
            'p_type' => $result['p_type'],
            'description' => $result['description'],
            'fixed_departure' => 'N',
            'fd_from' => '',
            'fd_to' => '',
            'exclusion' => $result['exclusion'],
            // 'transport_detail'            => $result['transport_detail'],
            'inclusion_text' => $result['inclusion_text'],
            'city_covered' => isset($result['city_covered']) ? implode(",", $result['city_covered']) : '',
            'package_type' => $strPackageType,
            'payment_policy' => $result['payment_policy'],
            'cancellation_policy' => $result['cancellation_policy'],
            'term_condition' => $result['term_condition'],
            'notes' => $result['notes'],
            'payment_policy_isdefault' => $chkPaymentPolicy,
            'cancellation_policy_isdefault' => $chkCancellationPolicy,
            'term_condition_isdefault' => $chkTermsCondition
        );

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


        if (!empty($intAgentId)) {
            $data['agent_id'] = $intAgentId;
        }



        /* Package Type for Quick info Table */
        if (count($result['package_type']) > 0) {
            $quickPackageTypes = '';
            $quickPackageTypesIds = '';
            foreach ($result['package_type'] as $row) {
                $objPackageType = new Travel_Model_TblPackageType();
                $objPackageType->intId = $row;
                $arrPackageTypeDetail = $objPackageType->getPackageTypeList();
                if (count($arrPackageTypeDetail)) {
                    $quickPackageTypes .= $arrPackageTypeDetail[0]['name'] . ",";
                    $quickPackageTypesIds .= $arrPackageTypeDetail[0]['id'] . ",";
                }
            }
        }

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

        $updateInfo['package_type'] = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($quickPackageTypesIds);
        $updateInfo['days'] = $result['days'];

        if (in_array('Standard', $result['category'])) {
            $updateInfo['is_standard'] = 'Y';
        } else {
            $updateInfo['is_standard'] = 'N';
        }

        if (in_array('Deluxe', $result['category'])) {
            $updateInfo['is_deluxe'] = 'Y';
        } else {
            $updateInfo['is_deluxe'] = 'N';
        }

        if (in_array('Luxury', $result['category'])) {
            $updateInfo['is_luxury'] = 'Y';
        } else {
            $updateInfo['is_luxury'] = 'N';
        }

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

        /* Citi Covered for Quick Info */
        $quickPackageCitiCoveredIds = '';
        if (isset($result['city_covered']) && count($result['city_covered']) > 0) {
            $quickPackageCitiCoveredNames = '';
            foreach ($result['city_covered'] as $row) {
                $objCity = new Travel_Model_TblCity();
                $objCity->intId = $row;
                $arrCityDetail = $objCity->getCityList();
                if (count($arrCityDetail)) {
                    $quickPackageCitiCoveredIds .= $arrCityDetail[0]['id'] . ",";
                    $quickPackageCitiCoveredNames .= $arrCityDetail[0]['city_name'] . ",";
                }
            }
        }
        $quickPackageCitiCoveredIds = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($quickPackageCitiCoveredIds);
        $updateInfo['city_covered'] = $quickPackageCitiCoveredIds;
        $updateInfo['city_covered_text'] = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($quickPackageCitiCoveredNames);
        $updateInfo['exclusion'] = $result['exclusion'];
        $updateInfo['inclusion_text'] = $result['inclusion_text'];
        /*         * ************************************************ */

// if($result['p_type'] == 'T') { 
        /* Departure Citi for Quick info */

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

        if ($result['p_type'] != 'H') {
            if (isset($result['departure_city']) && count($result['departure_city']) > 0) {
                $quickPackageDepartureCitiIds = '';
                $quickPackageDepartureCitiNames = '';
                foreach ($result['departure_city'] as $row) {
                    $objCity = new Travel_Model_TblCity();
                    $objCity->intId = $row;
                    $arrCityDetail = $objCity->getCityList();
                    if (count($arrCityDetail)) {
                        $quickPackageDepartureCitiIds .= $arrCityDetail[0]['id'] . ",";
                        $quickPackageDepartureCitiNames .= $arrCityDetail[0]['city_name'] . ",";
                    }
                }
//  }
                $updateInfo['departure_cities_ids'] = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($quickPackageDepartureCitiIds);
                $this->deleteDepartureCity($intPackageId, $updateInfo['departure_cities_ids']);
            } else {
                $updateInfo['departure_cities_ids'] = '';
                $this->deleteDepartureCity($intPackageId, '');
            }
        } else {
// echo "ravi";exit;
            /* If hotel package then delete departure city */
            $this->deleteDepartureCity($intPackageId, '');
            $updateInfo['departure_cities_ids'] = '';
        }

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

        $intLastInsertId = '';
        if (empty($intPackageId)) {
            $data['entry_dt'] = 'NOW()';
            $data['modify_dt'] = 'NOW()';
            $this->db->insert('tbl_package_master', $data);
            $newRecord = true;

            /* Creating blank entries in itenary table which will update later on while editing the package */
            $intNewPackageId = $this->db->lastInsertId();

            $strPackageCode = $this->getPackageCode($intAgentId);
            $this->updatePackageCode($strPackageCode, $intNewPackageId);

            if (!empty($intNewPackageId)) {
                $this->intId = $intNewPackageId;
                $this->createItenary();
            }
        } else {
            /* Delete rates if Change in Package Type */
            if (!in_array("Standard", $result['category'])) {
                $sql = " DELETE FROM tbl_package_rates WHERE rating = 'S' AND package_id = " . $intPackageId;
                $this->db->query($sql);
            }

            if (!in_array("Deluxe", $result['category'])) {
                $sql = " DELETE FROM tbl_package_rates WHERE rating = 'D' AND package_id = " . $intPackageId;
                $this->db->query($sql);
            }

            if (!in_array("Luxury", $result['category'])) {
                $sql = " DELETE FROM tbl_package_rates WHERE rating = 'L' AND package_id = " . $intPackageId;
                $this->db->query($sql);
            }


            if (!empty($quickPackageCitiCoveredIds)) {
                /* Update Itenary Information */
                $sql = "DELETE FROM tbl_itenary_accomodation WHERE package_id = " . $intPackageId . " AND city not in (" . $quickPackageCitiCoveredIds . ")";
                $this->db->query($sql);

                /* Update City Covered */
                $sql = "DELETE FROM tbl_package_citycovered WHERE package_id = " . $intPackageId . " AND city_covered not in (" . $quickPackageCitiCoveredIds . ")";
                $this->db->query($sql);
            }

            /*             * ******************************************* */
            $data['modify_dt'] = 'NOW()';
            $this->db->update('tbl_package_master', $data, 'id = ' . $intPackageId);
            $this->db->update('tbl_package_master', $updateInfo, 'id = ' . $intPackageId);
            $newRecord = false;
        }

        if (!empty($intNewPackageId)) {
            $intPackageId = $intNewPackageId;
        } else {
            $intPackageId = $intPackageId;
        }

        if ($result['p_type'] != 'H') {
            if (isset($result['departure_city'])) {
                $this->addDepartureCity($intPackageId, $result['departure_city']);
            }
        }

        if (isset($result['city_covered'])) {
            $this->addCityCovered($intPackageId, $result['city_covered']);
        }

        if (isset($result['inclusion'])) {
            $objInclusion = new Travel_Model_TblInclusion();
            $objInclusion->addInclusion($intPackageId, $result['inclusion']);
        } else {
            $objInclusion = new Travel_Model_TblInclusion();
            $objInclusion->removeAllInclusion($intPackageId);
        }

        $this->db->update('tbl_package_master', $updateInfo, 'id = ' . $intPackageId);

        if ($newRecord) {
            return $intPackageId;
        } else {
            return true;
        }
    }

    public function getDestinationCoveredFormatted() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT destination_covered_formatted from tbl_destination_covered_formatted 
                        WHERE package_id = " . $this->intId;
        return $this->db->query($sql)->fetchAll();
    }

    public function getSearchResult($arrSearchParams) {

        /* Get values from array */
        $keyword = isset($arrSearchParams['keywords']) ? $arrSearchParams['keywords'] : '';
        $strAgentCity = isset($arrSearchParams['strAgentCity']) ? $arrSearchParams['strAgentCity'] : '';
        $strTripMonths = isset($arrSearchParams['trip_month']) ? $arrSearchParams['trip_month'] : '';

        $intPackageCategory = isset($arrSearchParams['package_category']) ? $arrSearchParams['package_category'] : '';
        $globalization = isset($arrSearchParams['globalization']) ? $arrSearchParams['globalization'] : '';

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



        $globalizationCondition = '';

        if (!empty($keyword)) {
            if (strstr($keyword, ",")) {
                $keyword = substr($keyword, 0, strpos($keyword, ','));
            }

            $keyword = trim($keyword);
            $keyword = addslashes($keyword);

            /* Update Top Search Table */
            $insert['searched'] = strtoupper($keyword);
            $insert['ip_address'] = $_SERVER['REMOTE_ADDR'];
            $insert['search_dt'] = date('Y-m-d H:i:s');

            $device = Zend_Controller_Action_HelperBroker::getStaticHelper('Device')->deviceType();
            $browser = Zend_Controller_Action_HelperBroker::getStaticHelper('General')->getUserBrowser();

            $insert['device'] = $device;
            $insert['browser'] = $browser;

            $this->db->insert('top_searched', $insert);

            $globalization = $this->getGlobalization($keyword);
            setcookie("cookie_airfare", $globalization == 'I' ? 'I' : 'E', time() + 3600 * 24, '/');

            setcookie("cookie_searchType", $this->getSearchType($keyword), time() + 3600 * 24, '/');

            $condition = " AND (
                                 FIND_IN_SET ( '" . $keyword . "' , tbl_package_master.search_keywords ) > 0
                               )
                          ";
        } else if (!empty($intPackageCategory)) {
            $condition = " AND (
                                 FIND_IN_SET ( '" . $intPackageCategory . "' , tbl_package_master.package_type ) > 0
                               )
                          ";
            if (!empty($globalization)) {
                $globalizationCondition = " AND globalization = '" . $globalization . "' ";
            }
        }


        $strGroupCities = '';
        if (!empty($strAgentCity)) {
            $arrAgentCity = explode(",", $strAgentCity);
            if (count($arrAgentCity) > 0) {
                foreach ($arrAgentCity as $city) {
                    $objCity = new Travel_Model_TblCity();
                    $strGroupCities .= $objCity->getGroupCities($city);
                }
            }
        }

        $strAllAgentCities = $strAgentCity . "," . $strGroupCities;
        $strAllAgentCities = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strAllAgentCities);
        if (!empty($strAllAgentCities)) {
            $condition .= " AND tbl_package_master.agent_city in ( " . $strAllAgentCities . " ) ";
        }

        $condition .= " AND (tbl_package_master.p_type <> 'OH' AND tbl_package_master.p_type <> 'HF' )";

        if (!empty($strTripMonths)) {
            $objPackage = new Travel_Model_TblPackageMaster();
            $ids = $objPackage->getPackagesValidForMonth($strTripMonths);
            $ids = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($ids);
            if (!empty($ids)) {
                $condition .= " AND (tbl_package_master.id in ( " . $ids . " ) ) ";
            }
        }

        $objPackage = new Travel_Model_TblPackageMaster();
        /* Get Including Return Fare Package Count */
        $objPackage->strCondition = $condition . " AND FIND_IN_SET (31, inclusions ) > 0 ";
        $intIncludingRetureFareCount = count($objPackage->getPackageList());

        /* Get Excluding Return Fare Package Count */
        $objPackage->strCondition = $condition . " AND FIND_IN_SET (31, inclusions ) = 0 ";
        $intExcludingReturnFareCount = count($objPackage->getPackageList());

        $objPackage->strCondition = $condition . $globalizationCondition;
        $arrSearchedPackages = $objPackage->getPackageList();

        $pkgNamespace = new Zend_Session_Namespace('PKG');
        $pkgNamespace->totalSearchedPkgs = count($arrSearchedPackages);
        $pkgNamespace->intIncludingRetureFareCount = $intIncludingRetureFareCount;
        $pkgNamespace->intExcludingReturnFareCount = $intExcludingReturnFareCount;

        return $arrSearchedPackages;
    }

    public function getPackagesValidForMonth($strTripMonths) {

        $strCondition = '';

        if (!empty($strTripMonths)) {
            $arrTripMonths = explode(",", $strTripMonths);

            if (count($arrTripMonths) > 0) {

                $intCounter = 0;
                foreach ($arrTripMonths as $intMonth) {
                    $year = date('Y');
                    if (strlen($intMonth) == 1)
                        $intMonth = '0' . $intMonth;
                    $date = $year . '-' . $intMonth;

                    $strCondition .= " ( DATE_FORMAT(from_dt,'%Y-%m') <= '" . $date . "' AND DATE_FORMAT(to_dt,'%Y-%m') >= '" . $date . "' ) ";

                    if ($intCounter < count($arrTripMonths) - 1) {
                        $strCondition .= " OR ";
                    }

                    $intCounter++;
                }
            }
        }


        $sql = "  SELECT GROUP_CONCAT(DISTINCT package_id) as package_ids, from_dt, to_dt, DATE_FORMAT(NOW(),'%Y-%m') , DATE_FORMAT(from_dt,'%Y-%m'), DATE_FORMAT(to_dt,'%Y-%m') 
                FROM tbl_package_rates 
                WHERE 1 ";

        if (!empty($strCondition)) {
            $sql .= " AND " . $strCondition;
        }

//        echo $sql;
//        exit;
//( DATE_FORMAT(from_dt,'%Y-%m') <= '".$date."' AND DATE_FORMAT(to_dt,'%Y-%m') >= '".$date."' ) ";
//        echo $sql;exit;

        $result = $this->db->query($sql)->fetch();

        $strPackageIds = $result['package_ids'];

        return $strPackageIds;
    }

    public function getFilterResult($arrSearchParams) {

        /* Get values from array */
        $keyword = isset($arrSearchParams['keywords']) ? $arrSearchParams['keywords'] : '';
        $intAgentCity = isset($arrSearchParams['intAgentCity']) ? $arrSearchParams['intAgentCity'] : '';
// $day_group          = isset($arrSearchParams['days']) ? $arrSearchParams['days'] : '';

        if (strstr($keyword, ",")) {
            $keyword = substr($keyword, 0, strpos($keyword, ','));
        }

        $keyword = trim($keyword);
        $keyword = addslashes($keyword);

        /* Update Top Search Table */
        $insert['searched'] = strtoupper($keyword);
        $insert['ip_address'] = $_SERVER['REMOTE_ADDR'];
        $insert['search_dt'] = date('Y-m-d H:i:s');
        $this->db->insert('top_searched', $insert);

        $globalization = $this->getGlobalization($keyword);
        setcookie("cookie_airfare", $globalization == 'I' ? 'I' : 'E', time() + 3600 * 24, '/');

        setcookie("cookie_searchType", $this->getSearchType($keyword), time() + 3600 * 24, '/');

        $condition = " AND (
                             FIND_IN_SET ( '" . $keyword . "' , tbl_package_master.search_keywords ) > 0
                           )
                      ";

        if (!empty($intAgentCity) && $intAgentCity != '-1') {
            $condition .= " AND tbl_package_master.agent_city = " . $intAgentCity;
        }

//        if(!empty($strAgentAgency)) {
//            $condition .= " AND tbl_package_master.agent_agency = '" . $strAgentAgency ."'";
//        }
//        if(!empty($day_group) && $day_group!= '-1') {
//            $condition .= " AND tbl_package_master.day_group = '" . $day_group ."'";
//        }
//echo $condition;exit;
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->strCondition = $condition;
        return $objPackage->getQuickPackageList();
    }

    public function getResultsFromURL($arrSearchParams) {
        /* Get values from array */
        $keyword = isset($arrSearchParams['keywords']) ? $arrSearchParams['keywords'] : '';
        $strAgentCity = isset($arrSearchParams['strAgentCity']) ? $arrSearchParams['strAgentCity'] : '';
        $day_group = isset($arrSearchParams['days']) ? $arrSearchParams['days'] : '';

        $strStayin = isset($arrSearchParams['hotelRating']) ? $arrSearchParams['hotelRating'] : '';
        $otherPlaces = isset($arrSearchParams['otherPlaces']) ? $arrSearchParams['otherPlaces'] : '';

        if (strstr($keyword, ",")) {
            $keyword = substr($keyword, 0, strpos($keyword, ','));
        }

        $keyword = trim($keyword);
        $keyword = addslashes($keyword);

        $condition = " AND (
                FIND_IN_SET ( '" . $keyword . "' , tbl_package_master.search_keywords ) > 0
              )
         ";

        if (!empty($otherPlaces)) {
            $arrOtherPlaces = explode(",", $otherPlaces);
            $condition .= " AND ( ";
            $intCounter = 1;

            foreach ($arrOtherPlaces as $place) {
                $condition .= " FIND_IN_SET('" . trim($place) . "', search_keywords) > 0 ";
                if ($intCounter < count($arrOtherPlaces)) {
                    $condition .= " OR ";
                }
                $intCounter++;
            }
            $condition .= " ) ";
        }

        if (!empty($strAgentCity)) {
            $arrAgentCity = explode(",", $strAgentCity);
            if (count($arrAgentCity) > 0) {
                $intCounter = 1;
                $condition .= " AND ( ";
                foreach ($arrAgentCity as $city) {
                    $condition .= " tbl_package_master.agent_city = " . $city;
                    if ($intCounter < count($arrAgentCity)) {
                        $condition .= " OR ";
                    }
                    $intCounter++;
                }
                $condition .= " ) ";
            }
        }

        if (!empty($day_group)) {
            $arrDayGroup = explode(",", $day_group);
            if (count($arrDayGroup) > 0) {
                $intCounter = 1;
                $condition .= " AND ( ";
                foreach ($arrDayGroup as $day) {
                    $condition .= " tbl_package_master.day_group = '" . $day . "'";
                    if ($intCounter < count($arrDayGroup)) {
                        $condition .= " OR ";
                    }
                    $intCounter++;
                }
                $condition .= " ) ";
            }
        }



//        if(!empty($intAgentCity) && $intAgentCity!= '-1') {
//            $condition .= " AND tbl_package_master.agent_city = " . $intAgentCity;
//        }

        if (!empty($priceRange)) {
            $arrPriceRange = explode("-", $priceRange);
            if (!empty($arrPriceRange[1])) {
                $condition .= " AND ( s_price >= " . $arrPriceRange[0] . " AND s_price <= " . $arrPriceRange[1] . " )";
            }
        }


        /* Filter by Stay in */
//    if($strStayin!='-') { 
        if (strstr($strStayin, ",")) {
            $arrStayin = explode(",", $strStayin);
            if (!empty($arrStayin)) {
                $condition .= " AND ( ";
                $intCounter = 1;
                foreach ($arrStayin as $stayin) {
//                            if($stayin == '-') {
//                                $stayin = "' '";
//                            }
                    /* Consider 2 and 3 rating same */
                    if ($stayin == 2) {
                        $condition .= "   ( 
                                                   FIND_IN_SET( 2, stay_in ) > 0 OR FIND_IN_SET( 3 , stay_in ) > 0 
                                                 ) ";
                    } else {
                        $condition .= "   ( FIND_IN_SET( " . $stayin . ", stay_in ) > 0 ) ";
                    }

                    if ($intCounter < count($arrStayin)) {
                        $condition .= " OR ";
                    }
                    $intCounter++;
                }

// $condition .= "  OR stay_in = ''  OR stay_in IS NULL ";

                $condition .= " ) ";
            }
        } else {
            if (!empty($strStayin)) {
                /*  $condition .=" AND  (  
                  ( FIND_IN_SET(" . $strStayin . ", stay_in ) > 0 OR stay_in = ''  OR stay_in IS NULL )
                  )"; */
                $condition .= " AND  (  
                                                    ( FIND_IN_SET(" . $strStayin . ", stay_in ) > 0 )
                                        )";
            }
        }







//        if(!empty($strAgentAgency)) {
//            $condition .= " AND tbl_package_master.agent_agency = '" . $strAgentAgency ."'";
//        }
//        if(!empty($day_group) && $day_group!= '-1') {
//            $condition .= " AND tbl_package_master.day_group = '" . $day_group ."'";
//        }
// echo $condition;exit;
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->strCondition = $condition;
        return $objPackage->getQuickPackageList();
    }

    public function getSearchType($keyword) {
        $sql = " SELECT count(*) as rows from tbl_destination where destination_name = '" . $keyword . "' AND deleted = 'N' ";
        $result = $this->db->query($sql)->fetchAll();
        if ($result[0]['rows'] > 0) {
            return 'D'; // Destination
        }

        $sql = " SELECT count(*) as rows from tbl_city where city_name = '" . $keyword . "'  AND deleted = 'N' ";
        $result = $this->db->query($sql)->fetchAll();
        if ($result[0]['rows'] > 0) {
            return 'C'; // City
        }

        $sql = " SELECT count(*) as rows from tbl_state where state_name = '" . $keyword . "'  AND deleted = 'N' ";
        $result = $this->db->query($sql)->fetchAll();
        if ($result[0]['rows'] > 0) {
            return 'S'; // State
        }

        $sql = " SELECT count(*) as rows from tbl_country where country_name = '" . $keyword . "'  AND deleted = 'N' ";
        $result = $this->db->query($sql)->fetchAll();
        if ($result[0]['rows'] > 0) {
            return 'CO'; // Country
        }
    }

    public function deletePackDestinationsNotIn($strDestinationIds) {
        $sql = " DELETE FROM tbl_package_destination
                    WHERE package_id = '" . $this->intId . "' AND destination_id not in (" . $strDestinationIds . ")";
//echo $sql;exit;
        $db = Zend_Db_Table::getDefaultAdapter();
        $db->query($sql);
    }

    public function deleteCitiCoveredNDestination($intPackageId, $deleteNotIn) {
        $sql = " DELETE FROM tbl_package_citycovered
                    WHERE package_id = '" . $intPackageId . "' ";

        $deleteNotIn = $this->stringHelper->removeLastCharacter($deleteNotIn, ',');

        if (!empty($deleteNotIn)) {

            $sql .= " and city_covered not in (" . $deleteNotIn . ")";
        }

//echo $sql;exit;
        $db = Zend_Db_Table::getDefaultAdapter();
        $db->query($sql);

        return true;
    }

    public function getCityCovered() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT tbl_package_citycovered.id, package_id, city_covered,city_name FROM tbl_package_citycovered
                 INNER JOIN tbl_city ON tbl_package_citycovered.city_covered = tbl_city.id
                 AND tbl_city.status = '1' AND tbl_city.deleted = 'N' 
                 WHERE package_id = '" . $this->intId . "' ";

//echo $sql;exit;
        return $this->db->query($sql)->fetchAll();
    }

    public function addDepartureCity($intPackageId, $arrDepartureCity) {

        if (count($arrDepartureCity) <= 0) {
            return;
        }

//        echo "<pre>";
//        print_r($arrDepartureCity);
//        exit;
//        
        /* Create a string of departure city */
        $strDepartureCity = implode(",", $arrDepartureCity);

        /* Delete those Cities which are not included in this array */
        $sql = " DELETE FROM tbl_package_departure WHERE city not in (" . $strDepartureCity . ") AND package_id = " . $intPackageId;

        $this->db->query($sql);

        /* Insert City Covered */
        if (count($arrDepartureCity) > 0) {
            foreach ($arrDepartureCity as $city) {
                $sql = "INSERT IGNORE INTO tbl_package_departure(package_id, city) 
                values 
                ('" . $intPackageId . " ','" . $city . "')";
                $this->db->query($sql);
            }
        }

        return true;
    }

    public function getDestinations($intCityId = '') {

        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }

        $sql = " SELECT destination_covered_ids FROM tbl_package_master
                    WHERE id = " . $this->intId;

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

        if (count($result) > 0) {
            $strDestinations = $result[0]['destination_covered_ids'];

            if (!empty($strDestinations)) {
                $strDestinations = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strDestinations);
                $objDestination = new Travel_Model_TblDestination();
                if (!empty($strDestinations)) {
                    $objDestination->strCondition = " AND tbl_destination.id in (" . $strDestinations . ")";

                    if (!empty($intCityId)) {
                        $objDestination->strCondition .= " AND tbl_destination.city = " . $intCityId;
                    }

                    return $objDestination->getDestinationList();
                }
            }
        }
        return array();
    }

    public function getItenaryImage($intItenaryDay) {

        $objItenary = new Travel_Model_TblItineraryPackage();

        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }

        $objItenary->intPackageId = $this->intId;

        if (!empty($intItenaryDay)) {
            $objItenary->intDay = $intItenaryDay;
        }

        $sql = "SELECT destinations, thumb_image_url, image_link FROM 
                tbl_itenary_accomodation WHERE package_id = " . $this->intId . " AND day = " . $intItenaryDay . " 
                    AND thumb_image_url <> '' ";

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

        $response = array();

        if (count($result) == 1) {
            $response['thumb_image_url'] = $result[0]['thumb_image_url'];
            $response['image_link'] = $result[0]['image_link'];
        } else if (count($result) > 1) {

            foreach ($result as $row) {
                if (!empty($row['destinations'])) {
                    $response['thumb_image_url'] = $row['thumb_image_url'];
                    $response['image_link'] = $row['image_link'];
                    return $response;
                }
            }

            reset($result);
            foreach ($result as $row) {
                if (!empty($row['thumb_image_url'])) {
                    $response['thumb_image_url'] = $row['thumb_image_url'];
                    $response['image_link'] = $row['image_link'];
                    return $response;
                }
            }
        }

        return $response;
    }

    public function getPackageImage($size = 'small') {

//echo $size;

        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }


        /* Check if any destination image exist included in this package */
        $arrDestinations = $this->getDestinations();

        $responseGallery = array();
        if (count($arrDestinations)) {
            foreach ($arrDestinations as $destination) {
                $objDestination = new Travel_Model_TblDestination();
                $objDestination->intId = $destination['id'];
                $arrGallery = $objDestination->getImages($size, 'single');

                if (count($arrGallery) > 0) {
                    $arrGallery = $arrGallery[0];
                }
//               echo "<pre>";
//               print_r($arrGallery);
//                
// $arrDestinationDetail = $objDestination->getDestinationList();

                $folder = 'destinations/' . $destination['id'] . '/original/';
                if ($size == 'thumb') {
                    $folder = 'destinations/' . $destination['id'] . '/thumb/';
                } elseif ($size == 'small') {
                    $folder = 'destinations/' . $destination['id'] . '/small/';
                } elseif ($size == 'large') {
                    $folder = 'destinations/' . $destination['id'] . '/large/';
                }

                if (!empty($arrGallery['image_name'])) {
                    $responseGallery['image_url'] = $this->imageServerUrl . $folder . $arrGallery['image_name'];
                    $responseGallery['image_title'] = $arrGallery['image_title'];
                    return $responseGallery;
                }
            }
        }


        /* Get Citi Covered of this package */
        $arrCityCovered = $this->getCityCovered();
        if (count($arrCityCovered) > 0) {
            foreach ($arrCityCovered as $city) {
                $objCity = new Travel_Model_TblCity();
                $objCity->intId = $city['city_covered'];
                $arrCityDetail = $objCity->getCityList();
                if (count($arrCityDetail) > 0 && !empty($arrCityDetail[0]['city_icon'])) {
                    $responseGallery['image_url'] = $objCity->createImageUrl($arrCityDetail[0]['id'], $arrCityDetail[0]['city_icon'], $size);
                    $responseGallery['image_title'] = $arrCityDetail[0]['city_name'];
                    return $responseGallery;
                }
            }
        }

        $responseGallery['image_url'] = Zend_Controller_Action_HelperBroker::getStaticHelper('Image')->getNoImageUrl('general', $size);
        $responseGallery['image_title'] = 'No Image';
        return $responseGallery;
    }

    public function getFacebookSharingImage($type = 'single') {

        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }

        $sql = "SELECT fb_share_image FROM  tbl_pkg_fb_images WHERE package_id = " . $this->intId;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            if ($type == 'single') {
                $intMax = count($result);
                $intMin = 0;
                $index = rand($intMin, $intMax);
                if (array_key_exists($index, $result)) {
                    return str_replace(' ', '%20', $result[$index]['fb_share_image']);
                }
            } else {
                return $result;
            }
        }

        if ($type == 'single')
            return '';
        else
            return array();
    }

    public function getPackageGallery($size = 'thumb') {

        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }

        $arrDestinations = $this->getDestinations();

//       echo "<pre>";
//       print_r($arrDestinations);
//       exit;
        $intCounter = 1;
        $arrGallery = array();

        /* Show Images of the destinations covered in this Package */
        if (count($arrDestinations) > 0) {
            foreach ($arrDestinations as $destination) {
                if (isset($destination['gallery'])) {
                    foreach ($destination['gallery'] as $gallery) {
                        $image = $gallery['image_name'];
                        if ($size == 'thumb') {
                            $image_url = $this->imageServerUrl . 'destinations/' . $destination['id'] . '/thumb/' . $image;
                        } elseif ($size == 'large') {
                            $image_url = $this->imageServerUrl . 'destinations/' . $destination['id'] . '/large/' . $image;
                        } elseif ($size == 'small') {
                            $image_url = $this->imageServerUrl . 'destinations/' . $destination['id'] . '/small/' . $image;
                        }
                        $arrGallery[$intCounter]['title'] = $gallery['image_title'];
                        $arrGallery[$intCounter]['url'] = $image_url;
                        $intCounter++;
                    }
                }
            }
        }

        /* If Destination Image not exists then show City Image */
        if (count($arrGallery) == 0) {
            $arrCityCovered = $this->getCityCovered();
            if (count($arrCityCovered) > 0) {
                foreach ($arrCityCovered as $city) {
                    $intCityId = $city['city_covered'];
                    $objCity = new Travel_Model_TblCity();
                    $objCity->intId = $city['city_covered'];
                    $arrCityDetail = $objCity->getCityList();

                    if (count($arrCityDetail) > 0) {
                        $image = $arrCityDetail[0]['city_icon'];
                        $arrGallery[$intCounter]['title'] = $city['city_name'];
                        $arrGallery[$intCounter]['url'] = $objCity->createImageUrl($intCityId, $image, $size);
                        $intCounter++;
                    }
                }
            }
        }
        return $arrGallery;
    }

    /**
     * This function is used to save / update the package.
     * @param	String
     * @return   Array or String based on Param
     */
    /* Input Param : Array or Comma Seperated Format */
    public function getDepartureCities($format = 'array') {
        if (empty($this->intId)) {
            throw new Exception('Package Id not found!');
        }

        $sql = "SELECT tbl_package_departure.id, package_id, tbl_country.id as country_id, city as city_id, city_name, country_name 
                FROM tbl_package_departure
                LEFT JOIN tbl_city
                ON tbl_package_departure.city = tbl_city.id
                LEFT JOIN tbl_country
                ON tbl_city.country_id = tbl_country.id
                where tbl_package_departure.package_id = '" . $this->intId . "'";

        $result = $this->db->query($sql)->fetchAll();
        if ($format == 'array') {
            return $result;
        }

        $strDestinations = '';
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strDestinations .= $row['city_name'] . ',';
            }
        }
        $strDestinations = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strDestinations);
        return $strDestinations;
    }

    public function getItenaryDays() {

        if (empty($this->intId)) {
            throw new Exception("Package ID not found.");
        }

        $sql = "SELECT days from tbl_package_master
                where id = '" . $this->intId . "'";

        $db = Zend_Db_Table::getDefaultAdapter();
        $result = $db->query($sql)->fetchAll();

        $packageDays = $result[0]['days'];

        $sql = "SELECT COUNT(*) AS itenaries FROM tbl_itenary
                where package_id = '" . $this->intId . " ' ";

        $db = Zend_Db_Table::getDefaultAdapter();
        $result = $db->query($sql)->fetchAll();

        $alreadyPlannedDays = $result[0]['itenaries'];

        return array('totalDays' => $packageDays, 'plannedDays' => $alreadyPlannedDays);
    }

    public function updatePackageCode($strPackageCode, $intLastInserId) {
        $sql = "UPDATE tbl_package_master
                    SET package_code = '" . $strPackageCode . "'
                where id = '" . $intLastInserId . " ' ";

        $db = Zend_Db_Table::getDefaultAdapter();
        $db->query($sql);
        return true;
    }

    public function getPackageCode($intAgentId) {
        $sql = "  SELECT (IFNULL(COUNT(id),0)+1) AS total FROM tbl_package_master
		  WHERE agent_id =  " . $intAgentId;

        $db = Zend_Db_Table::getDefaultAdapter();
        $result = $db->query($sql)->fetchAll();

        $counter = $result[0]['total'];

        $intAgentId = strlen($intAgentId) == 1 ? '0' . $intAgentId : $intAgentId;
        $counter = strlen($counter) == 1 ? '0' . $counter : $counter;

        return 'SMT/' . $intAgentId . '/' . $counter;
    }

    public function deleteDestinations($intPackageId, $intCityId) {
        $sql = " DELETE FROM tbl_package_destination
                    WHERE package_id = '" . $intPackageId . "' and city_id = '" . $intCityId . "'";
        $db = Zend_Db_Table::getDefaultAdapter();
        $db->query($sql);
        return true;
    }

    public function deleteDepartureCity($intPackageId, $deleteNotIn) {
        $sql = " DELETE FROM tbl_package_departure
                    WHERE package_id = '" . $intPackageId . "' ";

        $deleteNotIn = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->removeLastCharacter($deleteNotIn, ',');
//$deleteNotIn = $this->stringHelper->removeLastCharacter($deleteNotIn,',');

        if (!empty($deleteNotIn)) {
            $sql .= " and city not in (" . $deleteNotIn . ")";
        } else {
//$sqlUpdate = " UPDATE tbl_package_master SET departure_cities_ids = '' WHERE id = " . $intPackageId;
// $this->db->query($sqlUpdate);
        }

        $this->db->query($sql);
        return true;
    }

    public function deleteOtherDestinations($intPackageId, $strDestinationCities) {

        $strDestinationCities = $this->stringHelper->removeLastCharacter($strDestinationCities, ',');

        if (!empty($strDestinationCities)) {
            $strDestinationCities = rtrim($strDestinationCities, ',');
            $sql = " DELETE FROM tbl_package_destination
                        WHERE package_id = '" . $intPackageId . "' and city_id not in (" . $strDestinationCities . ")";
            $db = Zend_Db_Table::getDefaultAdapter();
            $db->query($sql);
// exit;
        }
        return true;
    }

    public function getHotelsInCities($strCitiIds) {
        $sql = "SELECT tbl_hotel.id , hotel_name, tbl_hotel.country AS country_id, state AS state_id, city AS city_id,city_name, state_name, country_name, 
        address1, address2, rating, category, tbl_hotel.status 
        FROM tbl_hotel
        LEFT JOIN tbl_country 
        ON tbl_hotel.country = tbl_country.id
        LEFT JOIN tbl_state
        ON tbl_hotel.state = tbl_state.id
        LEFT JOIN tbl_city
        ON tbl_hotel.city = tbl_city.id ";

        if (!empty($strCitiIds)) {
            $sql .= " and city in (" . $strCitiIds . ") ";
        }


        $db = Zend_Db_Table::getDefaultAdapter();
        $result = $db->query($sql)->fetchAll();
        return $result;
    }

    public function getPackageHotelsCities($intPackageId) {

        if (empty($intPackageId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT hotels_included FROM tbl_package_master where id = " . $intPackageId;

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

        if (count($result) > 0) {
            $strHotelIds = $result[0]['hotels_included'];

            if (!empty($strHotelIds)) {
                $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strHotelIds);

                $objHotel = new Travel_Model_TblHotel();
                $objHotel->strCondition = " AND tbl_hotel.id in (" . $strHotelIds . ")";
                $arrHotels = $objHotel->getHotelList();

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

                $strCities = '';
                foreach ($arrHotels as $hotel) {
                    $strCities .= $hotel['city_id'] . ",";
                }

                if (!empty($strCities)) {
                    $strCities = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strCities);
                    $objCity = new Travel_Model_TblCity();
                    $objCity->strCondition = " AND tbl_city.id in (" . $strCities . ")";
                    return $objCity->getCityList();
                }
            }
        }

        return array();
    }

    public function getHotelsInPkgCities($intPackageId, $intCityId) {
        if (empty($intPackageId)) {
            throw new Exception('Package ID not found.');
        }

        if (empty($intCityId)) {
            throw new Exception('City ID not found.');
        }

        $sql = " SELECT hotels_included FROM tbl_package_master where id = " . $intPackageId;

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

        if (count($result) > 0) {
            $strHotelIds = $result[0]['hotels_included'];

            if (!empty($strHotelIds)) {
                $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strHotelIds);

                $objHotel = new Travel_Model_TblHotel();
                $objHotel->strCondition = " AND tbl_hotel.id in (" . $strHotelIds . ") AND "
                        . " tbl_hotel.city  = " . $intCityId;

                $arrHotels = $objHotel->getHotelList();

                return $arrHotels;
            }
        }

        return array();
    }

    public function getPackageDestinations() {

        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }
        $arrPackageDetail = $this->getPackageList();
        if (count($arrPackageDetail) != 1) {
            die('There has been an error');
        }

        $strDestinations = $arrPackageDetail[0]['destination_covered_ids'];
        $strDestinations = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strDestinations);

        if (empty($strDestinations)) {
            return array();
        }

        $objDestination = new Travel_Model_TblDestination();

        if (!empty($this->intCity)) {
            $objDestination->strCondition = " AND tbl_destination.city = " . $this->intCity . "  
                                                AND tbl_destination.id in (" . $strDestinations . ") ";
        } else {
            $objDestination->strCondition = " AND tbl_destination.id in (" . $strDestinations . ")";
        }

//echo $objDestination->strCondition;
        return $objDestination->getDestinationList();
    }

    public function searchPackagesThroughMapping($keywords) {

        $tokens = explode(" ", $keywords);

        if (count($tokens) > 0) {
            $intCounter = 1;

            $sqlCity = " SELECT t.id AS id , t.city_id AS city_id, t1.city_name AS city_name, mappedwith_city_id , 
                           t2.city_name AS mappedwith_city 
                           FROM tbl_mapped_city t 
                            INNER JOIN tbl_city t1 ON t.city_id = t1.id 
                            INNER JOIN tbl_city t2 ON t.mappedwith_city_id = t2.id
                            WHERE 1 ";

            $sqlDestination = " SELECT t.id AS id , t.destination_id AS destination_id, t1.destination_name AS destination_name, mappedwith_destination_id , 
                                t2.destination_name AS mappedwith_destination FROM tbl_mapped_destination t 
                                 INNER JOIN tbl_destination t1 ON t.destination_id = t1.id 
                                 INNER JOIN tbl_destination t2 ON t.mappedwith_destination_id = t2.id
                            WHERE 1 ";

            $whereCity = '';
            $whereDestination = '';

            foreach ($tokens as $key) {
                $whereCity .= "   t2.city_name LIKE '%" . $key . "%'  OR  t1.city_name LIKE '%" . $key . "%' ";
                $whereDestination .= " t2.destination_name  LIKE '%" . $key . "%'  OR t1.destination_name LIKE '%" . $key . "%' ";

                if ($intCounter < count($tokens)) {
                    $whereCity .= " OR ";
                    $whereDestination .= " OR ";
                }

                $intCounter++;
            }


            if (!empty($whereCity)) {
                $sqlCity .= " AND " . $whereCity;
            }

            if (!empty($whereDestination)) {
                $sqlDestination .= " AND " . $whereDestination;
            }

            /* Get Citi Ids */
            $result = $this->db->query($sqlCity)->fetchAll();
            if (count($result) > 0) {
                $strCityIds = '';
                foreach ($result as $row) {
                    $strCityIds .= $row['city_id'] . "," . $row['mappedwith_city_id'];
                }
            }

            /* Get Destination Ids */
            $result = $this->db->query($sqlCity)->fetchAll();
            if (count($result) > 0) {
                $strCityIds = '';
                foreach ($result as $row) {
                    $strCityIds .= $row['city_id'] . "," . $row['mappedwith_city_id'];
                }
            }
            /*             * ***************** */


            echo $sqlCity;
            exit;
        }

        return '';
    }

    public function getPackagesBySearchKeywords($keywords) {

        $tokens = explode(" ", $keywords);

        $intCounter = 1;

        $wherePackages = '';
        $whereDeparture = '';
        $whereDestination = '';
        $whereCityCovered = '';

        foreach ($tokens as $key) {
            $wherePackages .= "   package_name LIKE '%" . $key . "%'  ";
            $whereDeparture .= "   city_name LIKE '%" . $key . "%'  ";
            $whereDestination .= " destination_name  LIKE '%" . $key . "%'  ";
            $whereCityCovered .= "   city_name LIKE '%" . $key . "%'  ";

            if ($intCounter < count($tokens)) {
                $wherePackages .= " OR ";
                $whereDeparture .= " OR ";
                $whereDestination .= " OR ";
                $whereCityCovered .= " OR ";
            }
            $intCounter++;
        }

        if (isset($_COOKIE['intStartingCity']) && ($this->isBackend == 'N')) {
            $strPackageIds = $this->getPackageIdsOfStartingCity($_COOKIE['intStartingCity']);
            if (!empty($strPackageIds)) {
                $wherePackages .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
                $whereDeparture .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
                $whereDestination .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
                $whereCityCovered .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
            }
        }


        /*         * ************ For packages ******************* */
        $sqlPackage = " SELECT id AS package_id FROM tbl_package_master WHERE 1 AND " . $wherePackages;
        $result = $this->db->query($sqlPackage)->fetchAll();

        $strPackageIds = '';
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['package_id'] . ",";
            }
        }
        /*         * ************************************************* */

        /* Search Departure City */
        $sqlDeparture = "  SELECT package_id FROM tbl_package_departure 
                            INNER JOIN tbl_city ON tbl_package_departure.city = tbl_city.id 
                            INNER JOIN tbl_package_master ON tbl_package_master.id = tbl_package_departure.package_id 
                            WHERE 1  AND " . $whereDeparture;

        $result = $this->db->query($sqlDeparture)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['package_id'] . ",";
            }
        }
        /*         * **************************** */

        /* Search Destinations */
        $sqlDestination = "  SELECT package_id FROM tbl_itenary_destination 
                INNER JOIN tbl_destination ON tbl_itenary_destination.destination_id = tbl_destination.id 
                INNER JOIN tbl_package_master ON tbl_itenary_destination.id = tbl_package_master.id  
                 WHERE 1  AND " . $whereDestination;
// echo $sqlDestination;
        $result = $this->db->query($sqlDestination)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['package_id'] . ",";
            }
        }
        /*         * ************************** */


        /* Search City Covered */
        $sqlCityCovered = "  SELECT package_id FROM tbl_package_citycovered 
                            INNER JOIN tbl_city ON tbl_package_citycovered.city_covered = tbl_city.id 
                            INNER JOIN tbl_package_master ON tbl_package_citycovered.package_id = tbl_package_master.id  
                             WHERE 1  AND " . $whereCityCovered;
// echo $sqlDestination;
        $result = $this->db->query($sqlCityCovered)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['package_id'] . ",";
            }
        }
        /*         * ************************** */

        $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strPackageIds);

        return $strPackageIds;
    }

    public function getPackageCategory() {
        if (empty($this->intId)) {
            throw new Exception("Package ID not found.");
        }

        $sql = " SELECT category from tbl_package_master where id = " . $this->intId;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            return $result[0]['category'];
        }
        return '';
    }

    public function getPrice($rating = '', $intStartingCity = '') {

        if (empty($this->intId)) {
            throw new Exception("Package ID not found.");
        }

        $sql = " SELECT IFNULL(MIN(pats),'NA') as price FROM tbl_package_rates 
                    WHERE package_id = " . $this->intId . " AND b_type = 'B2C' ";

        if (!empty($rating)) {
            $sql .= " AND rating = '" . $rating . "'";
        }

        if (!empty($intStartingCity)) {
            $sql .= " AND city_id = '" . $intStartingCity . "'";
        } else {
            /* Check If Starting City Exist in Cookie 
             * Get Rates based on Starting City
             */
            if (isset($_COOKIE['intStartingCity'])) {
                $intStartingCity = $_COOKIE['intStartingCity'];
                $sql .= " AND city_id = '" . $intStartingCity . "'";
            }
        }

//       if(isset($_COOKIE['intSeasonId'])) {
//               $sql .= " AND season_id = '" . $_COOKIE['intSeasonId'] . "'";
//       }
// echo $sql;
        $result = $this->db->query($sql)->fetchAll();

        if ($result) {
            return $result[0]['price'];
        }

        return '';
    }

    public function getStayDetail($type = 'hotel', $rating = 'S') {

        if (empty($this->intId)) {
            throw new Exception("Package ID not found.");
        }

        if ($type == 'hotel') {

            $field = 'hotel_id_standard';

            if ($rating == 'S') {
                $field = "hotel_id_standard";
            } elseif ($rating == 'D') {
                $field = "hotel_id_deluxe";
            } elseif ($rating == 'L') {
                $field = "hotel_id_luxury";
            }

            $sql = "SELECT " . $field . ", day from tbl_itenary_accomodation 
                        where package_id=" . $this->intId . " and " . $field . " <> 0";
// echo $sql;
            $result = $this->db->query($sql)->fetchAll();

            $response = array();
            if (count($result) > 0) {
                $intCounter = 0;
                foreach ($result as $row) {
                    $objHotel = new Travel_Model_TblHotel();
                    $objHotel->intId = $row[$field];
                    $arrHotelDetail = $objHotel->getHotelList();
                    $response[$intCounter] = $row;
                    if (count($arrHotelDetail) > 0) {
                        $response[$intCounter]['hotel_id'] = $arrHotelDetail[0]['id'];
                        $response[$intCounter]['hotel_name'] = $arrHotelDetail[0]['hotel_name'];
                        $response[$intCounter]['rating'] = $arrHotelDetail[0]['rating'];
                    }
                }
            }
            return $response;
        }

//           echo '<pre>';ftbl
//           print_r($response);
//           exit;
//           
    }

    public function getGoingforRange($filter = true) {

        $sql = " SELECT (IFNULL(MIN(days),1)) AS minNight, 
                (IFNULL(MAX(days),1)) AS maxNight FROM tbl_package_master WHERE 1 ";

        $sql .= " AND status = '1' ";

        if ($filter) {
            if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
                $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
                $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
                $sql .= " AND tbl_package_master.id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
            }
        }

//echo $sql;
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getStayinRange($filter = true) {

        $sql = " SELECT IFNULL(MIN(stay_in_min),1) AS minStay, 
                IFNULL(MAX(stay_in_max),1) AS maxStay FROM tbl_package_master WHERE 1 ";

        if ($filter) {
            if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
                $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
                $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
                $sql .= " AND tbl_package_master.id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
            }
        }

        if (isset($_COOKIE['intStartingCity']) && ($this->isBackend == 'N')) {
            $sql .= " AND ( FIND_IN_SET( " . $_COOKIE['intStartingCity'] . ", departure_cities_ids ) > 0 ) ";
        }

        $sql .= " AND tbl_package_master.deleted = '" . $this->deleted . "'";

        $sql .= " AND tbl_package_master.status = '" . $this->status . "'";

//echo $sql;
        $result = $this->db->query($sql)->fetchAll();

        return $result;
    }

    public function getHotelList() {
        /* if(empty($this->intId)){
          throw new Exception("Package ID not found.");
          }

          $sql = " SELECT distinct hotel_id, hotel_name as hotel, rating as hotel_rating from tbl_itenary
          INNER JOIN tbl_hotel ON tbl_hotel.id = tbl_itenary.
          where package_id = " .  $this->intId ;
          $db = Zend_Db_Table::getDefaultAdapter();
          $result = $db->query($sql)->fetchAll();
          return $result;
         */
    }

    public function getSimilarPackages($intNearByDays, $fltNearByPrice, $intCategoryId = '') {
        $strCondition = '';

        if (!empty($intCategoryId)) {
            $strCondition = " AND FIND_IN_SET(" . $intCategoryId . ", package_type ) > 0 ";
            $strCondition .= " AND tbl_package_master.id <> " . $this->intId;
            $objPackage = new Travel_Model_TblPackageMaster();
            $objPackage->strCondition = $strCondition;
            $objPackage->strSelectedView = $this->strSelectedView;
            $objPackage->intQueryOffset = $this->intQueryOffset;
            $objPackage->intListPerPage = $this->intListPerPage;
            return $objPackage->getPackageList();
        } else if (isset($_COOKIE['cookie_searchType'])) {
            $type = $_COOKIE['cookie_searchType'];
            $keyword = isset($_COOKIE['cookie_searched_for']) ? $_COOKIE['cookie_searched_for'] : '';

            if ($type == 'C') {
                $strCondition .= " AND FIND_IN_SET('" . $keyword . "', city_covered_text ) ";
            } else if ($type == 'D') {
                $strCondition .= " AND FIND_IN_SET('" . $keyword . "', destination_covered ) ";
            } else {
                $strCondition .= " AND FIND_IN_SET('" . $keyword . "', search_keywords ) ";
            }

            $strCondition .= " AND tbl_package_master.id <> " . $this->intId;

            if (!empty($intNearByDays)) {
                $strNearByDays = Zend_Controller_Action_HelperBroker::getStaticHelper('general')->getNearByDays($intNearByDays);
                $strCondition .= " AND tbl_package_master.days in ( " . $strNearByDays . " ) ";
            }

            $objPackage = new Travel_Model_TblPackageMaster();
            $objPackage->strCondition = $strCondition;
            $objPackage->strSelectedView = $this->strSelectedView;
            $objPackage->intQueryOffset = $this->intQueryOffset;
            $objPackage->intListPerPage = $this->intListPerPage;
            return $objPackage->getPackageList();
        }
        return array();
    }

    public function getRecommendPackages($intCityId) {

//       if(empty($this->intId)){
//           throw new Exception("Package ID not found.");
//       }


        if (empty($intCityId)) {
            throw new Exception("City ID not found.");
        }

        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->strCondition = " AND FIND_IN_SET(" . $intCityId . ", city_covered)";
//echo "Condition".$objPackage->strCondition;exit;
// echo $strCondition;exit;
        $arrRecommendPackages = $objPackage->getPackageList();
        return $arrRecommendPackages;
    }

    public function getRecommendPackages4Destinations($intDestinationId) {

//       if(empty($this->intId)){
//           throw new Exception("Package ID not found.");
//       }

        if (empty($intDestinationId)) {
            throw new Exception("Destination ID not found.");
        }

        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->strCondition = " AND FIND_IN_SET(" . $intDestinationId . ", destination_covered_ids)";

// echo $strCondition;exit;
        $arrRecommendPackages = $objPackage->getPackageList();
        return $arrRecommendPackages;
    }

    public function hasInclusion($inclusionId) {

        $sql = "SELECT id FROM tbl_package_inclusion 
            WHERE package_id = " . $this->intId . " AND inclusion_id = " . $inclusionId . " limit 0,1";

        $db = Zend_Db_Table::getDefaultAdapter();
        $result = $db->query($sql)->fetchAll();
        if (count($result)) {
            return 'Y';
        }

        return 'N';
    }

    public function getPriceToCompare($intDepartureCity) {
        $sql = "SELECT ifnull(pats,0) as pats
                        FROM tbl_package_rates 
                        where package_id = " . $this->intId . " AND season_id = 1 
                        AND city_id = " . $intDepartureCity . " AND rating = 'S' AND b_type ='B2B' ";

// echo $sql;exit;
        $db = Zend_Db_Table::getDefaultAdapter();
        $rowset = $db->query($sql)->fetchAll();
        if (count($rowset) > 0) {
            echo $rowset[0]['pats'];
            exit;
        }

        echo '';
        exit;
    }

    public function getPackagesByHotelStarRating($stayin) {

        $arrRating = explode(";", $stayin);

        $intMin = $arrRating[0];
        $intMax = $arrRating[1];

        $sql = "
        
                SELECT  package_id FROM tbl_itenary WHERE hotel_id_standard IN 
                      (SELECT id  FROM tbl_hotel WHERE rating >=" . $intMin . " AND rating<=" . $intMax . ")

                UNION
                SELECT  package_id FROM tbl_itenary WHERE hotel_id_deluxe IN 
                      (SELECT id  FROM tbl_hotel WHERE rating >=" . $intMin . " AND rating<=" . $intMax . ")

                UNION
                SELECT  package_id FROM tbl_itenary WHERE hotel_id_luxury IN 
                      (SELECT id  FROM tbl_hotel WHERE rating >=" . $intMin . " AND rating<=" . $intMax . ")

        ";

        if (isset($_COOKIE['intStartingCity']) && ($this->isBackend == 'N')) {
            $strPackageIds = $this->getPackageIdsOfStartingCity($_COOKIE['intStartingCity']);
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            $sql .= " AND tbl_itenary.package_id in (" . $strPackageIds . ")";
        }

        if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
            $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            $sql .= " AND tbl_itenary.package_id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
        }

// echo $sql;

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

//       echo '<pre>';
//       print_r($rowset);
//       exit;
        $strPackageIds = '';
        if (count($rowset) > 0) {
            foreach ($rowset as $row) {
                $strPackageIds .= $row['package_id'] . ',';
            }
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            return $strPackageIds;
        }

        return '';
    }

    /*
      public function getPacakgePriceRange($filter = false) {


      $sql = " SELECT IFNULL(MAX(pats),0) AS maxPrice, IFNULL(MIN(pats),0) AS minPrice
      FROM tbl_package_rates WHERE 1 " ;

      $strPackageIds = '';


      $sql .= " AND b_type = 'B2C' ";
      if($filter) {
      if(isset($_COOKIE['cookie_searched_pack_ids']) &&  ($this->isBackend == 'N')) {
      $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
      if(!empty($strPackageIds)) {
      $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
      $sql .= " AND tbl_package_rates.package_id in (" . $strPackageIds . ")";
      }
      }
      }

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

      }
     */

    public function getAgentCities() {

        $sql = "  SELECT tbl_city.id, city_name, COUNT(city) as total FROM tbl_city 
                    INNER JOIN tbl_agent_info ON tbl_city.id = tbl_agent_info.city
                    AND tbl_agent_info.id IN (SELECT DISTINCT agent_id FROM tbl_package_master WHERE STATUS = '1')
                GROUP BY city_name ";

        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getPacakgePriceRange($filter = false) {

        $sql = " SELECT IFNULL(MAX(s_price),0) AS maxPrice, IFNULL(MIN(s_price),0) AS minPrice 
           FROM tbl_package_master WHERE 1 ";

        $strPackageIds = '';

        if ($filter) {
            if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
                $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
                if (!empty($strPackageIds)) {
                    $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
                    $sql .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
                }
            }
        }

        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getPackageBetweenPriceRange($intMin, $intMax) {

        /*  $sql = "SELECT GROUP_CONCAT(DISTINCT package_id SEPARATOR ',') AS package_ids FROM tbl_package_rates 
          WHERE pats BETWEEN " .$intMin. " AND " .$intMax. "
          AND b_type = 'B2C' ";
          //echo $sql;
          $db = Zend_Db_Table::getDefaultAdapter();
          $result = $db->query($sql)->fetchAll();
          return $result[0]['package_ids']; */

        $sql = " SELECT * FROM tbl_package_rates WHERE pats>= " . $intMin . " AND pats<= " . $intMax . " 
                AND b_type='B2C'         
            ";

        if (isset($_COOKIE['intStartingCity']) && ($this->isBackend == 'N')) {
            $strPackageIds = $this->getPackageIdsOfStartingCity($_COOKIE['intStartingCity']);
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            $sql .= " AND tbl_package_rates.package_id in (" . $strPackageIds . ")";
        }

        if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
            $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            $sql .= " AND tbl_package_rates.package_id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
        }

//  $sql .=" AND tbl_package_master.deleted = '" . $this->deleted . "'" ; 
// $sql .=" AND tbl_package_master.status = '" . $this->status . "'" ; 


        $result = $this->db->query($sql)->fetchAll();
        $strPackageIds = '';
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['package_id'] . ',';
            }
        }

        $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);

        return $strPackageIds;
    }

    public function getPackageMinPrice($intPackageId) {

        if (empty($intPackageId)) {
            throw new Exception("Package ID not found.");
        }

        $sql = " SELECT MIN(pats) as minPrice from tbl_package_rates WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();
        return $result[0]['minPrice'];
    }

    public function getPackageMaxPrice($intPackageId) {
        if (empty($intPackageId)) {
            throw new Exception("Package ID not found.");
        }

        $sql = " SELECT MAX(pats) as maxPrice from tbl_package_rates WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();
        return $result[0]['maxPrice'];
    }

    public function getStartingCities() {

        $sql = "  SELECT DISTINCT tbl_city.id, tbl_city.city_name FROM tbl_package_departure
                 INNER JOIN tbl_city ON tbl_package_departure.city = tbl_city.id 
                 INNER JOIN tbl_package_master ON tbl_package_departure.package_id = tbl_package_master.id 
                 AND tbl_package_master.deleted = '" . $this->deleted . "'
                 AND tbl_package_master.status = '" . $this->status . "'
                 ORDER BY city_name ";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getPackageIdsOfStartingCity($intCityId) {
        if (empty($intCityId)) {
            throw new Exception("City Id not found");
        }

        $sql = " SELECT GROUP_CONCAT(DISTINCT package_id SEPARATOR ',') AS package_ids FROM tbl_package_master
                WHERE FIND_IN_SET(" . $intCityId . ",departure_cities_ids) > 0 ";
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            return $result[0]['package_ids'];
        }
        return '';
    }

    public function createItenary() {
        if (empty($this->intId)) {
            throw new Exception("Package ID not found.");
        }

        $arrPackageDetail = $this->getPackageList();
        $intDays = $arrPackageDetail[0]['days'];

        for (
                $i = 1;
                $i <= $intDays;
                $i++
        ) {
            $sql = "INSERT IGNORE INTO tbl_itenary(package_id,day) values(" . $this->intId . "," . $i . ")";
#execute query
//$db = Zend_Db_Table::getDefaultAdapter();
            $this->db->query($sql);
        }

        return true;
    }

    public function isPackageShortListed($intPackageId) {

        if (empty($intPackageId)) {
            throw new Exception("Package Id not found.");
        }

        if (isset($_COOKIE['shortlistPackages'])) {
            $arrShortListPackages = explode(",", $_COOKIE['shortlistPackages']);
            if (in_array($intPackageId, $arrShortListPackages)) {
                return true;
            }
        }

        return false;
    }

    public function isPackageAdd2Compared($intPackageId) {

        if (empty($intPackageId)) {
            throw new Exception("Package Id not found.");
        }

        if (isset($_COOKIE['strComparePackagesIds'])) {
            $arrComparePackages = explode(",", $_COOKIE['strComparePackagesIds']);
            if (in_array($intPackageId, $arrComparePackages)) {
                return true;
            }
        }

        return false;
    }

    public function getAutoSuggest($keyword) {

        $intNoOfRecordsToDisplay = 10;
        $intRecordFound = 0;

        $keyword = trim($keyword);
        $response = array();
        $sql = " SELECT keywords, description, search_type FROM tbl_search_keywords 
                    WHERE keywords like '" . $keyword . "%' limit 0, 10 ";

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

        $notIncludeAutoSuggestArr = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getNotIncludeInAutoSuggest();

        /*  if(count($rowset)>0){
          foreach($rowset as $row) {
          $row['keywords'] = strtolower($row['keywords']);
          if(!strpos(strtolower($row['keywords']),"city tour")) {
          $text = ucfirst($row['description']);
          $response[] = $text ;
          }
          }
          }
          return $response;
         */

        if (count($rowset) > 0) {
            foreach ($rowset as $row) {
                $row['keywords'] = strtolower($row['keywords']);
                if (!strpos(strtolower($row['keywords']), "city tour")) {
                    $text = ucfirst($row['description']);
                    if (!in_array($text, $notIncludeAutoSuggestArr))
                        $response[] = $text;
                }
            }
        }
        return $response;
    }

    public function getAutoSuggestByAgent($keyword) {


        $keyword = trim($keyword);
        $response = array();
        $sql = " SELECT distinct agent_agency FROM tbl_package_master
                    WHERE agent_agency like '" . $keyword . "%' ";

        if (isset($_COOKIE['cookie_searched_pack_ids']) && ($this->isBackend == 'N')) {
            $strPackageIds = $_COOKIE['cookie_searched_pack_ids'];
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            $sql .= " AND tbl_package_master.id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
        }

        $sql .= " LIMIT 0 , 10 ";

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

        if (count($rowset) > 0) {
            foreach ($rowset as $row) {
                $text = ucfirst($row['agent_agency']);
                $response[] = $text;
            }
        }
        return $response;
    }

    public function getAllPrices() {

        if (empty($this->intId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = "SELECT * FROM tbl_package_rates WHERE package_id = " . $this->intId;
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function publish() {
        if (empty($this->intId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = " UPDATE tbl_package_master SET status = '1' WHERE id = " . $this->intId;
//echo $sql;exit;
        $this->db->query($sql);
        return true;
    }

    public function unpublish() {
        if (empty($this->intId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = " UPDATE tbl_package_master SET status = '0' WHERE id = " . $this->intId;
        $this->db->query($sql);
        return true;
    }

    public function filterPackages($post, $strAirfare = '') {


        $strOrderByField = 'min_price';

        $strPackageType = isset($post['filter_packageType']) ? $post['filter_packageType'] : '';
        $strInclusonIds = isset($post['filter_inclusionIds']) ? $post['filter_inclusionIds'] : '';
        $strGoingfor = isset($post['filter_goingfor']) ? $post['filter_goingfor'] : '';
        $strNearBy = isset($post['filter_nearBy']) ? $post['filter_nearBy'] : '';

        $strHotelCategory = isset($post['filter_hotel_category']) ? $post['filter_hotel_category'] : '';
        $strAgentRating = isset($post['filter_agent_rating']) ? $post['filter_agent_rating'] : '';
        $strPriceRange = isset($post['filter_price']) ? $post['filter_price'] : '';
        $strOnlyHotel = isset($post['filter_onlyHotel']) ? $post['filter_onlyHotel'] : '';
// $strAirfare         = isset($post['filter_airfare']) ? $post['filter_airfare'] : ''; 
        $strAgentCity = isset($post['filter_agent_city']) ? $post['filter_agent_city'] : '';
        $strIncludeCities = isset($post['filter_include_cities']) ? $post['filter_include_cities'] : '';

        $filter_global_search_pkg_ids = isset($post['filter_global_search_pkg_ids']) ? $post['filter_global_search_pkg_ids'] : '';

        $intListPerPage = isset($post['intListPerPage']) ? $post['intListPerPage'] : PKG_PER_PAGE;
        $intQueryOffset = isset($post['intQueryOffset']) ? $post['intQueryOffset'] : 0;

        $condition = '';

//echo $strPriceRange;
        /* Filter by Price Range */
        if (!empty($strPriceRange)) {
            if (strstr($strPriceRange, ",")) {
                $arrPriceRange = explode(",", $strPriceRange);
                if (!empty($arrPriceRange)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrPriceRange as $price) {

                        $arrPrice = explode("-", $price);
                        $minPrice = $arrPrice[0];
                        $maxPrice = $maxPrice = isset($arrPrice[1]) ? $arrPrice[1] : '';
// echo $strPriceRange;
//echo "<pre>";
// print_r($arrPrice);


                        $condition .= " ( min_price >= " . $minPrice;

                        if (!empty($maxPrice)) {
                            $condition .= " AND min_price <= " . $maxPrice;
                        }

                        $condition .= " ) ";

                        if ($intCounter < count($arrPriceRange)) {
                            $condition .= " OR ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {

                $arrPrice = explode("-", $strPriceRange);

//                echo "<pre>";
//                print_r($arrPrice);
//                
                $minPrice = $arrPrice[0];
                $maxPrice = isset($arrPrice[1]) ? $arrPrice[1] : '';
// echo $strPriceRange;

                $condition .= " AND ";

                $condition .= " ( min_price >= " . $minPrice;

                if (!empty($maxPrice)) {
                    $condition .= " AND min_price <= " . $maxPrice;
                }

                $condition .= " ) ";
            }
        }




        if (!empty($strAgentCity)) {
            $strAgentCity = base64_decode($strAgentCity);
            $strGroupCities = '';
            if (!empty($strAgentCity)) {
                $arrAgentCity = explode(",", $strAgentCity);
                if (count($arrAgentCity) > 0) {
                    foreach ($arrAgentCity as $city) {
                        $objCity = new Travel_Model_TblCity();
                        $strGroupCities .= $objCity->getGroupCities($city);
                    }
                }
            }

            $strAllAgentCities = $strAgentCity . "," . $strGroupCities;
            $strAllAgentCities = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($strAllAgentCities);
            if (!empty($strAllAgentCities)) {
                $condition .= " AND tbl_package_master.agent_city in ( " . $strAllAgentCities . " ) ";
            }

//$condition .= " AND tbl_package_master.agent_city in ( " . $strAgentCity . " ) ";
        }

//echo "Condition".$condition;

        /* Filter By Package Type */
        if (!empty($strPackageType)) {
            if (strstr($strPackageType, ",")) {
                $arrPackageType = explode(",", $strPackageType);
                if (!empty($arrPackageType)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrPackageType as $type) {
                        $condition .= " FIND_IN_SET(" . $type . ", package_type) > 0 ";
                        if ($intCounter < count($arrPackageType)) {
                            $condition .= " OR ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {
                $condition .= " AND FIND_IN_SET(" . $strPackageType . ", package_type) > 0 ";
            }
        }


//echo $strAgentRating;

        /* Filter By Agent Rating */
        if (!empty($strAgentRating)) {
            if (strstr($strAgentRating, ",")) {
                $arrAgentRating = explode(",", $strAgentRating);
                if (!empty($arrAgentRating)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrAgentRating as $rating) {
                        if ($rating == '1') {
                            $condition .= " ( tbl_package_master.agent_rating = '1' or tbl_package_master.agent_rating = '1.5' ) ";
                        }

                        if ($rating == '2') {
                            $condition .= " ( tbl_package_master.agent_rating = '2' or tbl_package_master.agent_rating = '2.5' ) ";
                        }

                        if ($rating == '3') {
                            $condition .= " ( tbl_package_master.agent_rating = '3' or tbl_package_master.agent_rating = '3.5' ) ";
                        }

                        if ($rating == '4 or 5') {
                            $condition .= " ( tbl_package_master.agent_rating = '4' or tbl_package_master.agent_rating = '4.5' "
                                    . " or tbl_package_master.agent_rating = '5' ) ";
                        }

//                        if($rating == '5') { 
//                            $condition .= " ( tbl_package_master.agent_rating = '5' ) " ;
//                        } 

                        if ($rating == 'New Agents') {
                            $condition .= " ( tbl_package_master.agent_rating = '' OR  tbl_package_master.agent_rating IS NULL ) ";
                        }


                        if ($intCounter < count($arrAgentRating)) {
                            $condition .= " OR ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {

                $condition .= " AND ( ";

                $rating = $strAgentRating;

                if ($rating == '1') {
                    $condition .= " ( tbl_package_master.agent_rating = '1' or tbl_package_master.agent_rating = '1.5' ) ";
                } else if ($rating == '2') {
                    $condition .= " ( tbl_package_master.agent_rating = '2' or tbl_package_master.agent_rating = '2.5' ) ";
                } else if ($rating == '3') {
                    $condition .= " ( tbl_package_master.agent_rating = '3' or tbl_package_master.agent_rating = '3.5' ) ";
                } else if ($rating == '4 or 5') {
                    $condition .= " ( tbl_package_master.agent_rating = '4' or tbl_package_master.agent_rating = '4.5' "
                            . "  or tbl_package_master.agent_rating = '5' ) ";
//                } else if($rating == '5') { 
//                    $condition .= " ( tbl_package_master.agent_rating = '5' ) " ;
                } else if ($rating == 'New Agents') {
                    $condition .= " ( tbl_package_master.agent_rating = '' OR  tbl_package_master.agent_rating IS NULL ) ";
                }
                $condition .= " ) ";
            }
        }

//echo $condition;
// echo $strOnlyHotel;
        if ($strOnlyHotel == 'Y') {
            $condition .= " AND ( p_type = 'OH' ) ";
        }

//        else {
        /* Filter By Airfare */
        if (!empty($strAirfare)) {
            $intAirfareInclusionId = 31;
            if ($strAirfare == 'I') { // For Inclusive
                $condition .= " AND ( FIND_IN_SET(" . $intAirfareInclusionId . ", inclusions) > 0 ) ";
            } elseif ($strAirfare == 'E') { // For Exclusive
                $condition .= " AND ( FIND_IN_SET(" . $intAirfareInclusionId . ", inclusions) = 0 ) ";
            }
        }
//        }
//        
//        $airFareCondition = '';
//        if(!empty($strAirfare)) {
//                $intAirfareInclusionId = 31;
//                if($strAirfare == 'I') { // For Inclusive
//                       $airFareCondition .=" AND ( FIND_IN_SET(".$intAirfareInclusionId.", inclusions) > 0 ) " ;
//                }elseif ($strAirfare == 'E') { // For Exclusive
//                       $airFareCondition .=" AND ( FIND_IN_SET(".$intAirfareInclusionId.", inclusions) = 0 ) " ;
//                }
//         }
//  echo $condition;

        /* Filter By Near By */
        if (!empty($strNearBy)) {
            $arrNearBy = explode(",", $strNearBy);

            $intCounter = 1;
            if (count($arrNearBy) > 0) {

                $condition .= " AND ( ";

                foreach ($arrNearBy as $nearBy) {
                    $condition .= " FIND_IN_SET('" . $nearBy . "', search_keywords) > 0 ";
                    if ($intCounter < count($arrNearBy)) {
                        $condition .= " AND ";
                    }
                    $intCounter++;
                }

                $condition .= " ) ";
            }
        }

//echo $condition;


        /* Filter By Inclusions */
        if (!empty($strInclusonIds)) {
            if (strstr($strInclusonIds, ",")) {
                $arrInclusions = explode(",", $strInclusonIds);
                if (!empty($arrInclusions)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrInclusions as $inclusion) {
                        $condition .= " FIND_IN_SET(" . $inclusion . ", inclusions) > 0 ";
                        if ($intCounter < count($arrInclusions)) {
                            $condition .= " AND ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {
                $condition .= " AND FIND_IN_SET(" . $strInclusonIds . ", inclusions) > 0 ";
            }
        }

        if (!empty($strAgentAgency)) {
            $condition .= " AND tbl_package_master.agent_agency like '" . $strAgentAgency . "%'";
        }

        /* Filter by Going For */

//echo $strGoingfor;

        if (!empty($strGoingfor)) {
            if (strstr($strGoingfor, ",")) {
                $arrGoingFor = explode(",", $strGoingfor);
                if (!empty($arrGoingFor)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrGoingFor as $daysGroup) {
                        if ($daysGroup == 7)
                            $daysGroup = '>7';
                        $condition .= " day_group = '" . $daysGroup . "' ";
                        if ($intCounter < count($arrGoingFor)) {
                            $condition .= " OR ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {
                if ($strGoingfor == 7)
                    $strGoingfor = '>7';
                $condition .= " AND (day_group = '" . $strGoingfor . "') ";
            }
        }



        /* Filter by Stay in */
        if (!empty($strHotelCategory)) {
            if (strstr($strHotelCategory, ",")) {
                $arrHotelCategory = explode(",", $strHotelCategory);
                if (count($arrHotelCategory) > 0) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrHotelCategory as $category) {

// $condition .=" FIND_IN_SET ( '". $category ."' , hotel_category_included ) > 0  ";

                        if ($category == 1) {
                            $condition .= " AND tbl_package_master.is_standard = 'Y' ";
                        } else if ($category == 2) {
                            $condition .= " AND tbl_package_master.is_deluxe = 'Y' ";
                        } else if ($category == 3) {
                            $condition .= " AND tbl_package_master.is_luxury = 'Y' ";
                        }


                        if ($category == 1) {
                            $strOrderByField = 's_price';
                        } else if ($category == 2) {
                            $strOrderByField = 'd_price';
                        } else if ($category == 3) {
                            $strOrderByField = 'l_price';
                        }

                        if ($intCounter < count($arrHotelCategory)) {
                            $condition .= " OR ";
                        }
                        $intCounter++;
                    }

                    $condition .= " ) ";
                }
            } else {
                if (!empty($strHotelCategory)) {
// $condition .=" AND ( FIND_IN_SET ( '". $strHotelCategory ."' , hotel_category_included ) > 0 ) ";

                    if ($strHotelCategory == 1) {
                        $condition .= " AND tbl_package_master.is_standard = 'Y' ";
                    } else if ($strHotelCategory == 2) {
                        $condition .= " AND tbl_package_master.is_deluxe = 'Y' ";
                    } else if ($strHotelCategory == 3) {
                        $condition .= " AND tbl_package_master.is_luxury = 'Y' ";
                    }


                    if ($strHotelCategory == 1) {
                        $strOrderByField = 's_price';
                    } else if ($strHotelCategory == 2) {
                        $strOrderByField = 'd_price';
                    } else if ($strHotelCategory == 3) {
                        $strOrderByField = 'l_price';
                    }
                }
            }
        }


        /* Filter By Include Cities */
        if (!empty($strIncludeCities)) {
            if (strstr($strIncludeCities, ",")) {
                $arrIncludeCities = explode(",", $strIncludeCities);
                if (!empty($arrIncludeCities)) {
                    $condition .= " AND ( ";
                    $intCounter = 1;
                    foreach ($arrIncludeCities as $city) {
                        $condition .= " FIND_IN_SET(" . $city . ", city_covered) > 0 ";
                        if ($intCounter < count($arrIncludeCities)) {
                            $condition .= " AND ";
                        }
                        $intCounter++;
                    }
                    $condition .= " ) ";
                }
            } else {
                $condition .= " AND FIND_IN_SET(" . $strIncludeCities . ", city_covered) > 0 ";
            }
        }
//  echo $condition;
//echo $condition;
        /* Search based on Saved value in Cookie */
        if (!empty($filter_global_search_pkg_ids)) {
            $condition .= " AND tbl_package_master.id IN (" . $filter_global_search_pkg_ids . " ) ";
        } else {
            $condition .= " AND 1 = 2 ";
        }


        /* Check for Starting City */
        if (isset($_COOKIE['intStartingCity']) && !empty($_COOKIE['intStartingCity'])) {
            $condition .= " AND
                            (  
                                (FIND_IN_SET( " . $_COOKIE['intStartingCity'] . ", departure_cities_ids ) > 0 )  
                            ) 
                            ";
        }


// echo $condition;
// echo "<br>";
// echo $condition;

        $this->orderByField = $strOrderByField;
        $this->strCondition = $condition;
        $this->intListPerPage = $intListPerPage;
        $this->intQueryOffset = $intQueryOffset;
        $result = $this->getPackageList();
        /*         * *************************************** */

//       if(count($result) == 0) {
//           
//            if(!empty($strAirfare)) {
//                $intAirfareInclusionId = 31;
//                if($strAirfare == 'I') { // For Inclusive
//                       $condition .=" AND ( FIND_IN_SET(".$intAirfareInclusionId.", inclusions) = 0 ) " ;
//                }elseif ($strAirfare == 'E') { // For Exclusive
//                       $condition .=" AND ( FIND_IN_SET(".$intAirfareInclusionId.", inclusions) = 0 ) " ;
//                }
//            }
//         
//            $this->orderByField = $strOrderByField;
//            $this->strCondition = $condition;
//            $this->intListPerPage = $intListPerPage;
//            $this->intQueryOffset = $intQueryOffset;
//            $result = $this->getPackageList();
//       }

        return $result;
    }

    public function getInclusions() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT tbl_package_inclusion.id, package_id, inclusion_id,inclusions,inclusion_cat_id 
                    FROM  tbl_package_inclusion 
                 INNER JOIN tbl_inclusion 
                    ON tbl_package_inclusion.inclusion_id = tbl_inclusion.id 
                 WHERE package_id = " . $this->intId;

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }

        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getPackageType() {

        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT package_type FROM tbl_package_master 
                        WHERE id = " . $this->intId;

        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            return $result[0]['package_type'];
        }

        return '';
    }

    function getPackagesByPackageType($strPackageType) {

        if (!empty($strPackageType)) {
            $arrPackageType = explode(',', $strPackageType);

            if (!is_array($arrPackageType)) {
                $arrPackageType[0] = $strPackageType;
            }

            $sql = " SELECT id, package_type FROM tbl_package_master WHERE 1 ";

            if (isset($_COOKIE['cookie_searched_pack_ids'])) {
                $sql .= " AND tbl_package_master.id in (" . $_COOKIE['cookie_searched_pack_ids'] . ")";
            }

            $sql .= " AND (tbl_package_master.status = '1' AND  tbl_package_master.deleted = 'N') ";

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

            if (count($result) > 0) {
                $strPackageIds = '';

                foreach ($result as $row) {
                    $strDbPackageType = $row['package_type'];
                    $arrDbPackageType = explode(',', $strDbPackageType);

                    if (count($arrPackageType)) {
                        $exist = true;
                        foreach ($arrPackageType as $type) {
                            if (!in_array($type, $arrDbPackageType)) {
                                $exist = false;
                            }
                        }

                        if ($exist) {
                            $strPackageIds .= $row['id'] . ',';
                        }
                    }
                }

                $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
                return $strPackageIds;
            }

            return '';
        }

        return '';
    }

    public function updatePkgMinPrice($intPackageId) {
        $sql = " SELECT s_price, d_price, l_price FROM tbl_package_master WHERE id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();

        $arrPrice = array();
        if (count($result) > 0) {
//             $arrPrice[] = $result[0]['s_price'];
//             $arrPrice[] = $result[0]['d_price'];
//             $arrPrice[] = $result[0]['l_price'];
            $arrPrice = array($result[0]['s_price'], $result[0]['d_price'], $result[0]['l_price']);
        }
        $arrPrice = array_filter($arrPrice);
//         echo "<pre>";
//         print_r($arrPrice);
//         exit;
//         
        $min_price = min($arrPrice);

        $update = " UPDATE tbl_package_master 
                            SET min_price = '" . $min_price . "' WHERE id = " . $intPackageId;
// echo $update;exit;
        $this->db->query($update);
    }

    function getPackagesByInclusions($strInclusonIds) {
        if (!empty($strInclusonIds)) {

            $arrInclusions = explode(',', $strInclusonIds);
            if (count($arrInclusions)) {

                $sql = " select package_id from tbl_package_inclusion 
                                inner join tbl_package_master on tbl_package_inclusion.package_id = tbl_package_master.id 
                                inner join tbl_inclusion on tbl_package_inclusion.inclusion_id = tbl_inclusion.id
                                where 1 ";
                $sql .= " AND tbl_package_master.status = '1'";
                $sql .= " AND tbl_package_master.deleted = 'N'";

                $sql .= " AND tbl_inclusion.status = '1'";
                $sql .= " AND tbl_inclusion.deleted = 'N'";

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

                if (count($result) > 0) {

                    $strPackageIds = '';
                    foreach ($result as $row) {
                        $exists = true;
                        foreach ($arrInclusions as $inclusion) {
                            $objPackage = new Travel_Model_TblPackageMaster();
                            $objPackage->intId = $row['package_id'];
                            if ($objPackage->hasInclusion($inclusion) == 'N') {
                                $exists = false;
                            }
                        }
                        if ($exists) {
                            $strPackageIds = $row['package_id'] . ',';
                        }
                    }

                    $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);

                    return $strPackageIds;
                }
            }
        }
    }

    public function advanceSearch($post) {

        /* Get Advance Search Params */
        $intStartingCity = isset($post['cmbStartingCity']) ? $post['cmbStartingCity'] : '';
        $intRegion = isset($post['cmbRegion']) ? $post['cmbRegion'] : '';
        $intPackageType = isset($post['cmbPackageType']) ? $post['cmbPackageType'] : '';
        $strDate = isset($post['txtDate']) ? $post['txtDate'] : '';
        $intNoOfDays = isset($post['cmbNoOfDays']) ? $post['cmbNoOfDays'] : '';
        $fltPrice = isset($post['cmbPrice']) ? $post['cmbPrice'] : '';
// $intGlobalization =  isset($post['globalization'])    ? $post['globalization'] : '';

        $sql = " SELECT tbl_package_master.id FROM tbl_package_master WHERE 1 ";

        if (!empty($intPackageType)) {
            $intPackageType = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($intPackageType);
            $sql .= " AND tbl_package_master.package_type in ( " . $intPackageType . ")";
        }

//         if(!empty($post['globalization'])) {
//             $sql .= " AND tbl_package_master.globalization= " .  $intGlobalization;
//         }

        if (!empty($intNoOfDays)) {
            $sql .= " AND tbl_package_master.days = " . $intNoOfDays . "";
        }

        if (!empty($fltPrice)) {
            $arrPrice = explode("-", $fltPrice);
            $minPrice = trim($arrPrice[0]);
            $maxPrice = trim($arrPrice[1]);
            $sql .= " AND ( 
                                tbl_package_master.s_price >=  " . $minPrice . " 
                                    AND 
                                tbl_package_master.s_price <=  " . $maxPrice . "
                              ) ";
        }

        if (isset($intStartingCity) && !empty($intStartingCity)) {
//$strStartingPackageIds = $this->getPackageIdsOfStartingCity($intStartingCity);
            $sql .= " AND ( FIND_IN_SET( " . $intStartingCity . " , departure_cities_ids) > 0 ) ";
            setcookie("intStartingCity", $intStartingCity, time() + 3600 * 24, '/');
        }

        if (!empty($intRegion)) {
            $arrPackageByRegion = $this->getPackagesByRegion($intRegion);
            $strPackageIds = '';
            if (count($arrPackageByRegion) > 0) {
                foreach ($arrPackageByRegion as $package) {
                    $strPackageIds .= $package['package_id'] . ',';
                }
            }
            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            if (!empty($strPackageIds)) {
                $sql .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
            } else {
                $sql .= " AND 1 = 2 ";
            }
        }

        if (!empty($strDate)) {

            $arrPackagesByDate = $this->getPackagesByDate($strDate);

            $strPackageIds = '';
            if (count($arrPackagesByDate) > 0) {
                foreach ($arrPackagesByDate as $package) {
                    $strPackageIds .= $package['package_id'] . ',';
                }
            }

            $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
            if (!empty($strPackageIds)) {
                $sql .= " AND tbl_package_master.id in (" . $strPackageIds . ")";
            } else {
                $sql .= " AND 1 = 2 ";
            }
        }


        $sql .= " AND tbl_package_master.status = '" . $this->status . "'";
        $sql .= " AND tbl_package_master.deleted = '" . $this->deleted . "'";

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

        $strPackageIds = '';
        if (count($result) > 0) {
            foreach ($result as $row) {
                $strPackageIds .= $row['id'] . ',';
            }
        }

        $strPackageIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
        if (empty($strPackageIds))
            $strPackageIds = '-1'; // For No records
        setcookie('cookie_searched_pack_ids', $strPackageIds, time() + (86400), "/");
        $this->strCondition = " AND tbl_package_master.id in( " . $strPackageIds . ")";
        return $this->getPackageList();
    }

    public function getPackagesByDate($date) {

        if (empty($date)) {
            throw new Exception('Date not found.');
        }



        $date = Zend_Controller_Action_HelperBroker::getStaticHelper('DateFormat')->cal2Db($date, 'd/m/y');

        $sql = "SELECT tbl_season.id AS season_id, tbl_package_rates.package_id 
                FROM tbl_season 
                INNER JOIN tbl_package_rates ON tbl_season.id = tbl_package_rates.season_id
                INNER JOIN tbl_package_master ON tbl_package_master.id = tbl_package_rates.package_id
                WHERE 1
                AND from_dt<='" . $date . "' AND to_dt >='" . $date . "'";

        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function getPackagesByRegion($intRegionId) {

        if (empty($intRegionId)) {
            throw new Exception('Region ID not found.');
        }

        $sql = "SELECT tbl_package_master.id AS package_id, tbl_city.id AS city_id, 
		tbl_state.id AS state_id, tbl_region.id AS region_id
		FROM tbl_region 
		INNER JOIN tbl_state ON tbl_region.id = tbl_state.region
		INNER JOIN tbl_city  ON tbl_state.id = tbl_city.state_id
		INNER JOIN tbl_destination ON tbl_destination.city = tbl_city.id
                INNER JOIN tbl_itenary_accomodation ON tbl_city.id = tbl_itenary_accomodation.city
		INNER JOIN tbl_package_master ON tbl_itenary_accomodation.package_id = tbl_package_master.id WHERE 1 ";

        $sql .= " AND tbl_region.id = " . $intRegionId;

        $sql .= " AND tbl_package_master.status = '1'";
        $sql .= " AND tbl_package_master.deleted = 'N'";

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

        return $result;
    }

    public function getPackageMinRates() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = "  SELECT package_id, MIN(pats) as rates 
            FROM tbl_package_rates WHERE package_id = " . $this->intId . " AND b_type = 'B2C' and pats!=0 ";
        $result = $this->db->query($sql)->fetchAll();
        return $result[0]['rates'];
    }

    public function getPKGdestinations() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        if (empty($this->intItenaryDay))
            $sql = " SELECT REPLACE(destination_covered,',', ', ') AS destination_covered
			FROM tbl_package_master 
		WHERE id = " . $this->intId;
        else
            $sql = " select destination_names as destination_covered
                            from tbl_itenary_accomodation where package_id = " . $this->intId . " and day = " . $this->intItenaryDay;

        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            return $result[0]['destination_covered'];
        }
        return 'NA';
    }

    public function fillPackageRates($intSeasonId, $intCityId, $intPackageId, $strRating, $strBType) {
        if (empty($intCityId)) {
            $intCityId = '0';
        }
        $sql = " INSERT IGNORE INTO tbl_package_rates (season_id, city_id, package_id, 
                                    rating, b_type) VALUES (" . $intSeasonId . "," . $intCityId . "," . $intPackageId .
                ",'" . $strRating . "','" . $strBType . "')";
// echo $sql;
        $this->db->query($sql);
        return true;
    }

    public function getPackagesStartingFrom($intStartingCity) {
        $sql = "SELECT package_id FROM tbl_package_departure WHERE city = " . $intStartingCity;
        return $this->db->query($sql)->fetchAll();
    }

    public function getOnlyHotelPackageInfo() {
        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT id, package_id, city as city_id, hotel_id_standard, similar_hotel_standard,
                hotel_id_deluxe, similar_hotel_deluxe, hotel_id_luxury, similar_hotel_luxury 
                FROM tbl_itenary_accomodation WHERE package_id = " . $this->intId . " LIMIT 0,1 ";
        return $this->db->query($sql)->fetchAll();
    }

    public function getOverviewCitiCovered() {

        if (empty($this->intId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT id, package_id, city_covered from tbl_package_citycovered where package_id = " . $this->intId;
        $sql .= " LIMIT " . $this->intQueryOffset . " , " . $this->intListPerPage;
        return $this->db->query($sql)->fetchAll();

        $sql = " SELECT distinct city from tbl_itenary_accomodation where destinations <> '' and package_id = " . $this->intId;
//echo $sql;
        $arrData = $this->db->query($sql)->fetchAll();

        if (count($arrData) > 0) {

            $strCityIds = '';

            foreach ($arrData as $data) {
                $strCityIds .= $data['city'] . ',';
            }

            $strCityIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCityIds);

            $sql = " SELECT id, package_id, city_covered from tbl_package_citycovered where package_id = " . $this->intId . "
                            and city_covered in ( " . $strCityIds . ")";
            $sql .= " LIMIT " . $this->intQueryOffset . " , " . $this->intListPerPage;
// echo $sql;
            return $this->db->query($sql)->fetchAll();
        } else {
            $sql = " SELECT city_covered FROM tbl_package_master where id = " . $this->intId;

            $result = $this->db->query($sql)->fetchAll();
            if (count($result) > 0) {
                $strCityCovered = $result[0]['city_covered'];

                $sql = " SELECT id as city_covered FROM tbl_city where id in (" . $strCityCovered . ") 
                    AND tbl_city.is_verified = 'Y' and tbl_city.deleted = 'N' and tbl_city.status = '1' ";
// echo $sql;exit;
                return $this->db->query($sql)->fetchAll();
            }
        }
    }

    /*
      public function getOverviewCitiCovered(){

      if(empty($this->intId)) {
      throw new Exception('Package ID not found.');
      }


      $sql = " SELECT city_covered FROM tbl_package_master where id = ". $this->intId;


      $result = $this->db->query($sql)->fetchAll();
      if(count($result)>0) {
      $strCityCovered = $result[0]['city_covered'];



      $sql = " SELECT id as city_covered FROM tbl_city where id in (" . $strCityCovered . ")
      AND tbl_city.is_verified = 'Y' and tbl_city.deleted = 'N' and tbl_city.status = '1' ";


      // echo $sql;exit;
      return $this->db->query($sql)->fetchAll();
      } else {
      return array();
      }
      } */

    public function getCityCoveredNHavingDestinationsCount($intPackageId) {
        if (empty($intPackageId)) {
            throw new Exception('Package ID not found.');
        }

        $sql = " SELECT city_covered from tbl_package_master where id = " . $intPackageId;
        $arrData = $this->db->query($sql)->fetchAll();
        if (count($arrData) > 0) {
            return count(explode(",", $arrData[0]['city_covered']));
        } else {
            return 0;
        }

        /*
          $sql = " SELECT distinct city from tbl_itenary_accomodation where destinations <> '' and package_id = ". $intPackageId;
          $arrData =  $this->db->query($sql)->fetchAll();
          return count($arrData);
         * 
         */
    }

    public function updatePackageInclusionsCounter() {
        $sql = " UPDATE tbl_package_master
                   SET inclusions_count = LENGTH(inclusions) - LENGTH(REPLACE(inclusions, ',', '')) + 1 
                ";
        $this->db->query($sql);
    }

    public function updatePkgSearchKeywords($intPackageId) {

        $sql = " SELECT city_covered , destination_covered_ids FROM tbl_package_master 
                        WHERE id = " . $intPackageId;

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

        $strGlobalization = 'D';

        $strDestinationCovered = '';
        $strCityCovered = '';
        $strStateCovered = '';
        $strCountryCovered = '';
        $strContinentCovered = '';
        $strRegionCovered = '';

        /* Search by Cities if hotel exists */

        $sqlHotel = "    SELECT hotel_id_standard, hotel_id_deluxe, hotel_id_luxury 
                        FROM tbl_itenary_accomodation WHERE package_id = " . $intPackageId . "
                            AND ( hotel_id_standard<>0  OR hotel_id_deluxe <> 0 OR hotel_id_luxury <> 0) ";
        $resultHotel = $this->db->query($sqlHotel)->fetchAll();

        if (count($resultHotel) > 0) {
            $strHotelIds = '';
            foreach ($resultHotel as $hotel) {
                if (!empty($hotel['hotel_id_standard'])) {
                    $strHotelIds .= $hotel['hotel_id_standard'] . ",";
                }

                if (!empty($hotel['hotel_id_deluxe'])) {
                    $strHotelIds .= $hotel['hotel_id_deluxe'] . ",";
                }

                if (!empty($hotel['hotel_id_luxury'])) {
                    $strHotelIds .= $hotel['hotel_id_luxury'] . ",";
                }
            }

            if (!empty($strHotelIds)) {
                $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelIds);

                $objHotel = new Travel_Model_TblHotel();
                $objHotel->strCondition = " AND tbl_hotel.id in (" . $strHotelIds . ")";
                $arrHotels = $objHotel->getHotelList();

                if (count($arrHotels) > 0) {
                    $strCityCoveredIds = '';
                    foreach ($arrHotels as $hotel) {
                        $strCityCoveredIds .= $hotel['city_id'] . ",";
                    }
                }
            }
            $strCityCoveredIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCityCoveredIds);
        }



        $keywords = '';
        if (count($result) > 0) {
//$strCityCoveredIds        = $result[0]['city_covered'];
            $strDestinationCoveredIds = $result[0]['destination_covered_ids'];
// $strCityCoveredIds        = $result[0]['city_covered'];
//    $strCityCoveredIds          = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCityCoveredIds);
            $strDestinationCoveredIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strDestinationCoveredIds);
// $strCityCoveredIds          = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCityCoveredIds);

            if (!empty($strDestinationCoveredIds)) {
                $objDestination = new Travel_Model_TblDestination();
                $objDestination->strCondition = " AND tbl_destination.id in (" . $strDestinationCoveredIds . ")";
                $arrDestinations = $objDestination->getDestinationList();

                if (count($arrDestinations) > 0) {
                    foreach ($arrDestinations as $destination) {
                        $keywords .= $destination['destination_name'] . ",";

                        $strDestinationCovered .= $destination['destination_name'] . ",";
                        $strCityCovered .= $destination['city_name'] . ",";
                        $strStateCovered .= $destination['state_name'] . ",";
                        $strCountryCovered .= $destination['country_name'] . ",";
                        $strContinentCovered .= $destination['continent_name'] . ",";
                        $strRegionCovered .= $destination['region_name'] . ",";

                        $keywords .= $destination['synonyms'] . ",";
                        $keywords .= $destination['city_name'] . ",";
                        $keywords .= $destination['city_synonyms'] . ",";
                        $keywords .= $destination['state_name'] . ",";
                        $keywords .= $destination['state_synonyms'] . ",";
                        $keywords .= $destination['country_name'] . ",";
                        $keywords .= $destination['country_synonyms'] . ",";
//$keywords .= $destination['continent_name'] .",";
                        $keywords .= $destination['region_name'] . ",";
                        if (strtolower($destination['country_name']) != 'india') {
                            $strGlobalization = 'I';
                        }
                    }
                }
            }

            $strCountryIds = '';
            if (!empty($strCityCoveredIds)) {
                $objCity = new Travel_Model_TblCity();
                $objCity->strCondition = " AND tbl_city.id in (" . $strCityCoveredIds . ")";
                $arrCities = $objCity->getCityList();

                $strStateIds = '';

                if (count($arrCities) > 0) {
                    foreach ($arrCities as $city) {
                        $keywords .= $city['city_name'] . ",";
                        $keywords .= $city['synonyms'] . ",";
                        $strStateIds .= $city['state_id'] . ",";

                        $intCountryId = $city['country_id'];
                        $strCountryIds .= $intCountryId . ",";
                        $keywords .= $city['state_name'] . ",";
                        $keywords .= $city['state_synonyms'] . ",";
                        $keywords .= $city['country_name'] . ",";
                        $keywords .= $city['country_synonyms'] . ",";

                        if (!$this->excludeCountryFromContinent($intCountryId, $intPackageId)) {
                            $keywords .= $city['continent_name'] . ",";
                        }

                        $keywords .= $city['region_name'] . ",";
                        $strCityCovered .= $city['city_name'] . ",";
                        $strStateCovered .= $city['state_name'] . ",";
                        $strCountryCovered .= $city['country_name'] . ",";
                        $strContinentCovered .= $city['continent_name'] . ",";
                        $strRegionCovered .= $city['region_name'] . ",";

                        if (strtolower($city['country_name']) == 'india') {
                            $strGlobalization = 'D';
                        }
                    }
                }
            }

            if (!empty($keywords)) {
                $arrKeywords = array_map('trim', explode(",", $keywords));
                $arrKeywords = array_filter($arrKeywords);
                $arrKeywords = array_unique($arrKeywords);
                $keywords = implode(",", $arrKeywords);
            }

            $strDestinationCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strDestinationCovered);
            $strCityCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCityCovered);
            $strStateCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strStateCovered);
            $strCountryCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCountryCovered);
            $strContinentCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strContinentCovered);
            $strRegionCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strRegionCovered);
            $strCountryIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strCountryIds);

            $arrDestinationCovered = array_map('trim', explode(",", $strDestinationCovered));
            $arrCityCovered = array_map('trim', explode(",", $strCityCovered));
            $arrStateCovered = array_map('trim', explode(",", $strStateCovered));
            $arrCountryCovered = array_map('trim', explode(",", $strCountryCovered));
            $arrContinentCovered = array_map('trim', explode(",", $strContinentCovered));
            $arrRegionCovered = array_map('trim', explode(",", $strRegionCovered));

            $arrDeleteNotIn = array();

            /* City Covered */
            if (count($arrCityCovered) > 0) {
                foreach ($arrCityCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place, place_type) VALUES 
                                (" . $intPackageId . "," . $this->db->quote($name) . ",'C')";
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }

            /* Destination Covered */
            if (count($arrDestinationCovered) > 0) {
                foreach ($arrDestinationCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place,place_type) VALUES 
                                (" . $intPackageId . ", " . $this->db->quote($name) . ",'D')";
// echo $sql;
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }

            /* State Covered */
            if (count($arrStateCovered) > 0) {
                foreach ($arrStateCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place, place_type) VALUES 
                                (" . $intPackageId . "," . $this->db->quote($name) . ",'S')";
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }

            /* Country Covered */
            if (count($arrCountryCovered) > 0) {
                foreach ($arrCountryCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place, place_type) VALUES 
                               (" . $intPackageId . "," . $this->db->quote($name) . ",'CO')";
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }

            /* Update Package Master for country Covered */
            $sql = " UPDATE tbl_package_master "
                    . "   SET country_covered = '" . $strCountryIds . "' WHERE id = " . $intPackageId;
            $this->db->query($sql);

            /* Countinent Covered */
            if (count($arrContinentCovered) > 0) {
                foreach ($arrContinentCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place, place_type) VALUES 
                                (" . $intPackageId . "," . $this->db->quote($name) . ",'CONTINENT')";
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }

            /* Region Covered */
            if (count($arrRegionCovered) > 0) {
                foreach ($arrRegionCovered as $name) {
                    if (!empty($name)) {
                        $sql = " INSERT IGNORE INTO tbl_pkg_places_covered(package_id, place, place_type) VALUES 
                               (" . $intPackageId . "," . $this->db->quote($name) . ",'REGION')";
                        $this->db->query($sql);
                        $arrDeleteNotIn[] = addslashes($name);
                    }
                }
            }




            if (count($arrDeleteNotIn) > 0) {
                $intCounter = 1;
                $strDeleteItems = '';
                foreach ($arrDeleteNotIn as $deleteName) {
                    $strDeleteItems .= "'" . $deleteName . "',";
                }

                $strDeleteItems = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strDeleteItems);

                $delete = " DELETE FROM tbl_pkg_places_covered WHERE package_id =" . $intPackageId . " 
                            AND place NOT IN (" . $strDeleteItems . ")";
                $this->db->query($delete);
            }

            /* Check if package id already exists */
// $sql = " SELECT * from tbl_pkg_places_covered WHERE package_id = ". $intPackageId;
//  $response = $this->db->query($sql)->fetchAll();


            /* if(count($response)>0) {
              $where = array('package_id = ?'      => $intPackageId);
              $this->db->update('tbl_pkg_places_covered', $otherPlaces, $where);
              }else {
              $otherPlaces['package_id'] = $intPackageId;
              $this->db->insert('tbl_pkg_places_covered', $otherPlaces);
              } */

// echo $keywords;exit;

            $update['search_keywords'] = $keywords;
            $update['globalization'] = $strGlobalization;
            $where = array('id=?' => $intPackageId);
            $this->db->update('tbl_package_master', $update, $where);
        }
    }

    public function markCronExecuted($intPackageId) {
        $sql = " UPDATE tbl_package_master 
                   SET cron_executed = 'Y', cron_priority = 0 WHERE id = " . $intPackageId;
        $this->db->query($sql);
    }

    public function excludeCountryFromContinent($intCountryId, $intPackageId) {
        $objCountry = new Travel_Model_TblCountry();
        $objCountry->strCondition = " AND tbl_country.id = " . $intCountryId;
        $arrCountry = $objCountry->getCountryList();

        if (count($arrCountry) > 0) {
            $excludeFromContinent = $arrCountry[0]['exclude_from_continent'];
            /* If country is excluded from continent */
            if ($excludeFromContinent == '1') {
                $objPackage = new Travel_Model_TblPackageMaster();
                $objPackage->intId = $intPackageId;
                $arrPackageTableData = $objPackage->getPackageTableData();
//                echo "<pre>";
//                print_r($arrPackageTableData);
//                exit;

                if (count($arrPackageTableData) > 0) {
                    $strCountryCovered = $arrPackageTableData[0]['country_covered'];
                    $arrCountryCovered = explode(",", $strCountryCovered);
                    /* Check if package contains onlu one country, then exclude */
                    if (count($arrCountryCovered) == 1) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public function getPackageTableData() {
        $sql = " SELECT * FROM tbl_package_master WHERE 1 ";

        if (!empty($this->intId)) {
            $sql .= " AND tbl_package_master.id = " . $this->intId;
        }
//echo $sql;exit;
        return $this->db->query($sql)->fetchAll();
    }

    public function updateSearchKeywords() {

        $truncate = " TRUNCATE tbl_search_keywords ";
        $this->db->query($truncate);

        $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
                       SELECT  country_name, country_name, 'CO' FROM tbl_country
                WHERE tbl_country.status = '1' AND tbl_country.deleted = 'N' ";
        $this->db->query($sql);

        $sql = " INSERT IGNORE INTO tbl_search_keywords(keywords, description, search_type)
                          SELECT  state_name, CONCAT(state_name,', ',country_name) AS state, 'S' FROM tbl_state 
            LEFT JOIN tbl_country
		   ON tbl_state.country = tbl_country.id
                WHERE 1 AND (
                 tbl_state.status = '1' AND tbl_state.deleted = 'N' AND tbl_country.status = '1' AND tbl_country.deleted = 'N') ";
        $this->db->query($sql);

        $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
                        SELECT city_name, CONCAT(city_name,IF(state_name IS NOT NULL,CONCAT(', ',state_name),'')), 'C' FROM tbl_city
            LEFT JOIN tbl_state
                    ON tbl_city.state_id = tbl_state.id
                WHERE tbl_city.status = '1' AND tbl_city.deleted = 'N'";
        $this->db->query($sql);

        $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
                       SELECT  destination_name, CONCAT(destination_name,', ',city_name), 'D' FROM tbl_destination 
                              LEFT JOIN tbl_city
                                      ON tbl_destination.city = tbl_city.id
                              LEFT JOIN tbl_state
                                      ON tbl_city.state_id = tbl_state.id
                                  WHERE tbl_destination.status = '1' AND tbl_destination.deleted = 'N' ";
        $this->db->query($sql);

        $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
                   SELECT continent_name , continent_name, 'CONTINENT' FROM tbl_continent
                   WHERE continent_name IS NOT NULL ";
        $this->db->query($sql);

        $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
                 SELECT region_name , region_name, 'REGION' from tbl_region where region_name is not NULL ";
        $this->db->query($sql);

        /* Add Synonyms */
        $finalResult = array();
        $sql = " SELECT  synonyms FROM tbl_country
                WHERE tbl_country.deleted = 'N' AND synonyms <> '' AND synonyms IS NOT NULL";
        $result = $this->db->query($sql)->fetchAll();

        $finalResult = array_merge($finalResult, $result);

        $sql = " SELECT  synonyms FROM tbl_state
                WHERE tbl_state.deleted = 'N' AND synonyms <> '' AND synonyms IS NOT NULL ";
        $result = $this->db->query($sql)->fetchAll();
        $finalResult = array_merge($finalResult, $result);

        $sql = " SELECT  synonyms FROM tbl_city
                WHERE tbl_city.deleted = 'N' AND synonyms <> '' AND synonyms IS NOT NULL ";
        $result = $this->db->query($sql)->fetchAll();
        $finalResult = array_merge($finalResult, $result);

        $sql = " SELECT  synonyms FROM tbl_destination
                WHERE tbl_destination.deleted = 'N' AND synonyms <> '' AND synonyms IS NOT NULL ";
        $result = $this->db->query($sql)->fetchAll();
        $finalResult = array_merge($finalResult, $result);

        if (count($finalResult) > 0) {
            foreach ($finalResult as $row) {
                $arrSynonyms = array_map('trim', explode(",", $row['synonyms']));
                if (count($arrSynonyms) > 0) {
                    foreach ($arrSynonyms as $synonym) {
                        $synonym = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->cleanDataBeforeInsert($synonym);
                        $sql = "  INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type) VALUES 
                                    ('" . $synonym . "','" . $synonym . "','SYNONYMS') ";
                        $this->db->query($sql);
                    }
                }
            }
        }



        /* $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
          SELECT synonyms,  CONCAT_WS('',synonyms) as synonyms, 'SYNONYMS' FROM tbl_country WHERE synonyms IS NOT NULL ";
          $this->db->query($sql);

          $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords,description, search_type)
          SELECT synonyms, CONCAT_WS('',synonyms) as synonyms, 'SYNONYMS' FROM tbl_city WHERE synonyms IS NOT NULL ";
          $this->db->query($sql);

          $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords,description, search_type)
          SELECT synonyms, CONCAT_WS('',synonyms) as synonyms, 'SYNONYMS' FROM tbl_state WHERE synonyms IS NOT NULL ";
          $this->db->query($sql);


          $sql = " INSERT IGNORE INTO tbl_search_keywords (keywords, description, search_type)
          SELECT synonyms,CONCAT_WS('',synonyms) as synonyms,'SYNONYMS' FROM tbl_destination WHERE synonyms IS NOT NULL ";
          $this->db->query($sql);
         * 
         */

        $sql = " DELETE FROM tbl_search_keywords WHERE keywords IS NULL OR keywords = ''";
        $this->db->query($sql);

        $customValues = array('Delhi' => 'Delhi, India', 'Goa' => 'Goa, India');

        while (list($key, $value) = each($customValues)) {
            $sql = " UPDATE IGNORE tbl_search_keywords 
                       SET description = '" . $value . "' WHERE keywords = '" . $key . "'";
            $this->db->query($sql);
        }
    }

    public function markCronExecutedAll() {
        $sql = " select count(*) as tot from tbl_package_master where cron_executed = 'N' ";
        $result = $this->db->query($sql)->fetchAll();

        if ($result[0]['tot'] == 0) {
            $sql = " UPDATE tbl_package_master 
                   SET cron_executed = 'N' ";
            $this->db->query($sql);
        }
    }

    public function getGlobalization($keyword) {



        $sql = "  SELECT  destination_name, country_name FROM tbl_destination 
                              LEFT JOIN tbl_city
                                      ON tbl_destination.city = tbl_city.id
                              LEFT JOIN tbl_country
                                      ON tbl_city.country_id = tbl_country.id
                                  WHERE tbl_destination.status = '1' AND tbl_destination.deleted = 'N' 
                                  AND 
                                  ( 
                                        tbl_destination.destination_name = '" . $keyword . "' 
                                            OR
                                        FIND_IN_SET('" . $keyword . "',tbl_destination.synonyms)>0
                                    )
                                  ";
        $result = $this->db->query($sql)->fetchAll();

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

        if (count($result) > 0) {
            foreach ($result as $row) {
                if (strtolower($row['country_name']) != strtolower('India')) {
                    return 'I';
                }
            }
            return 'D';
        }



        $sql = "  SELECT  city_name, country_name FROM tbl_city
                              INNER JOIN tbl_country
                                      ON tbl_city.country_id = tbl_country.id
                                  WHERE tbl_city.status = '1' AND tbl_city.deleted = 'N' 
                                  AND 
                                       (
                                          tbl_city.city_name = '" . $keyword . "'
                                            OR
                                          FIND_IN_SET('" . $keyword . "',tbl_city.synonyms)>0
                                    )";

        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                if (strtolower($row['country_name']) != strtolower('India')) {
                    return 'I';
                }
            }
            return 'D';
        }

        $sql = "  SELECT  state_name, country_name FROM tbl_state
                              INNER JOIN tbl_country
                                      ON tbl_state.country = tbl_country.id
                                  WHERE tbl_state.status = '1' AND tbl_state.deleted = 'N' 
                                  AND
                                    (
                                        tbl_state.state_name = '" . $keyword . "'
                                            OR
                                        FIND_IN_SET('" . $keyword . "',tbl_state.synonyms)>0
                                    )";

        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                if (strtolower($row['country_name']) != strtolower('India')) {
                    return 'I';
                }
            }
            return 'D';
        }

        $sql = "  SELECT  country_name FROM tbl_country
                                  WHERE tbl_country.status = '1' AND tbl_country.deleted = 'N' 
                                  AND 
                                    (
                                        tbl_country.country_name = '" . $keyword . "'
                                       OR
                                        FIND_IN_SET('" . $keyword . "',tbl_country.synonyms)>0
                                    )";

// echo $sql;exit;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            foreach ($result as $row) {
                if (strtolower($row['country_name']) != strtolower('India')) {
                    return 'I';
                }
            }
            return 'D';
        }
    }

    public function updatePkgInclusions($intPackageId) {

        $sql = " SELECT GROUP_CONCAT(inclusion_id) AS inclusion_ids
                        FROM tbl_package_inclusion WHERE package_id = " . $intPackageId;

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

        $strInclusionIds = '';
        if (count($result) > 0) {
            $strInclusionIds = $result[0]['inclusion_ids'];
        }

        if (!empty($strInclusionIds)) {
            $count = count(explode(",", $strInclusionIds));
        } else {
            $count = 0;
        }

        $inclusions = '';
        if (!empty($strInclusionIds)) {
            $objInclusion = new Travel_Model_TblInclusion();
            $objInclusion->strCondition = " AND tbl_inclusion.id in ( " . $strInclusionIds . " ) 
                        AND tbl_inclusion.status = '1' and  tbl_inclusion.deleted = 'N' ";
            $arrInclusions = $objInclusion->getInclusionList('');

            $inclusions = '';

            if (count($arrInclusions) > 0) {
                $intSno = 1;

                foreach ($arrInclusions as $inclusion) {
                    $inclusion['inclusions'] = str_replace(",", ", ", $inclusion['inclusions']);
                    if (isset($inclusion['inclusions']) && !empty($inclusion['inclusions'])) {
                        $inclusions .= $inclusion['inclusions'];
                        if ($intSno < count($arrInclusions)) {
                            $inclusions .= " + ";
                        }
                    }
                    $intSno++;
                }
            }
        }


        $sql = "  UPDATE tbl_package_master 
                        SET inclusions = '" . $strInclusionIds . "' , 
                            inclusions_formatted = '" . $inclusions . "', 
                                inclusions_count =" . $count . " WHERE id =" . $intPackageId;
// echo $sql;
        $this->db->query($sql);
    }

    public function updatePkgBasicInfo($intPackageId) {
        $objPkgMaster = new Travel_Model_TblPackageMaster();
        $objPkgMaster->intId = $intPackageId;
        $arrPackageDetail = $objPkgMaster->getQuickPackageList();
        if (count($arrPackageDetail) > 0) {
            $intDays = $arrPackageDetail[0]['days'];

            $strDayGroup = Zend_Controller_Action_HelperBroker::getStaticHelper('General')->createDayGroup($intDays);
            $sql = "  UPDATE tbl_package_master 
                        SET day_group = '" . $strDayGroup . "' WHERE id =" . $intPackageId;
            $this->db->query($sql);
        }

        $sql = "    SELECT MAX(to_dt) as maxDate
                        FROM tbl_package_rates WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            $update = " UPDATE tbl_package_master set valid_upto = '" . $result[0]['maxDate'] . "' WHERE id = " . $intPackageId;
            $this->db->query($update);
        }



        /* Update Package hotels */

        $sql = " SELECT package_id, hotel_id_standard, hotel_id_deluxe, hotel_id_luxury FROM tbl_itenary_accomodation 
                  WHERE package_id = " . $intPackageId . "
                    AND ( hotel_id_standard <> 0 OR hotel_id_deluxe <> 0 OR hotel_id_luxury <> 0) ";
        $arrHotelInfo = $this->db->query($sql)->fetchAll();

        if (count($arrHotelInfo) > 0) {
            $strHotelIds = '';
            foreach ($arrHotelInfo as $hotel) {

                if (!empty($hotel['hotel_id_standard'])) {
                    $strHotelIds .= $hotel['hotel_id_standard'] . ",";
                }

                if (!empty($hotel['hotel_id_deluxe'])) {
                    $strHotelIds .= $hotel['hotel_id_deluxe'] . ",";
                }

                if (!empty($hotel['hotel_id_luxury'])) {
                    $strHotelIds .= $hotel['hotel_id_luxury'] . ",";
                }
            }

            if (!empty($strHotelIds)) {
                $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelIds);
                $objHotel = new Travel_Model_TblHotel();
                $objHotel->strCondition = " AND tbl_hotel.id in (" . $strHotelIds . " ) ";
                $arrHotelInfo = $objHotel->getHotelList();
                if (count($arrHotelInfo) > 0) {
                    foreach ($arrHotelInfo as $hotel) {
                        $intHotelId = $hotel['id'];
                        $hotelName = addslashes($hotel['hotel_name']);
                        $category = $hotel['category'];
// $rating     = $hotel['rating'];
//  $info  = '<img src="/public/travel/images/resort_icon.png">';
// $info  .= $hotel['hotel_name'];
                        /*  if(!empty($rating)) {
                          $info .= ' ,'. $rating .' <img src="/public/travel/images/blueStar.png">';
                          }
                         */
                        $sql = " SELECT package_id, hotel_id FROM tbl_package_hotels 
                                        WHERE package_id = " . $intPackageId . " AND hotel_id = " . $intHotelId . " LIMIT 0,1 ";

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

                        if (count($result) > 0) {
                            $update = " UPDATE tbl_package_hotels 
                                            SET  hotel_info = '" . $hotelName . "' ,
                                                 hotel_category = " . $category . "
                                                    WHERE package_id = " . $intPackageId . " AND hotel_id = " . $intHotelId;
                            $this->db->query($update);
                        } else {
                            $insert = " INSERT INTO tbl_package_hotels (package_id, hotel_id, hotel_category, hotel_info ) 
                                                VALUES (" . $intPackageId . " , " . $intHotelId . "," . $category . ", '" . $hotelName . "' ) ";
                            $this->db->query($insert);
                        }
                    }
                }
            }
        } else {
            $delete = " DELETE FROM tbl_package_hotels WHERE package_id = " . $intPackageId;
            $this->db->query($delete);
        }
    }

    public function getHotelsInPackage($intPackageId, $category = '', $intCityId = '') {

        $sql = " SELECT hotel_id_standard, similar_hotel_standard, hotel_id_deluxe, similar_hotel_deluxe, hotel_id_luxury, 
                        similar_hotel_luxury FROM tbl_itenary_accomodation WHERE package_id = " . $intPackageId;
        $arrHotelInfo = $this->db->query($sql)->fetchAll();

        if (count($arrHotelInfo)) {
            $strHotelIds = '';
            foreach ($arrHotelInfo as $info) {
                if ($category == 'S' || empty($category)) {
                    if (!empty($info['hotel_id_standard'])) {
                        $strHotelIds .= $info['hotel_id_standard'] . ",";
                    }
                }

                if ($category == 'D' || empty($category)) {
                    if (!empty($info['hotel_id_deluxe'])) {
                        $strHotelIds .= $info['hotel_id_deluxe'] . ",";
                    }
                }

                if ($category == 'L' || empty($category)) {
                    if (!empty($info['hotel_id_luxury'])) {
                        $strHotelIds .= $info['hotel_id_luxury'] . ",";
                    }
                }
            }
        }

        $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelIds);

        if (!empty($strHotelIds)) {

            $objHotel = new Travel_Model_TblHotel();
            $objHotel->strCondition = " AND tbl_hotel.id IN (" . $strHotelIds . " ) ";

            $objHotel->strOrderBy = " tbl_city.city_name ";
            return $objHotel->getHotelList();
        }

        return array();
    }

    public function updatePkgDisplayName($intPackageId) {
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrDetail = $objPackage->getPackageList();
        if (count($arrDetail) > 0) {
            if (!empty($arrDetail[0]['days'])) {
                $days_formatted = Zend_Controller_Action_HelperBroker::getStaticHelper('General')->showDayNight($arrDetail[0]['days'], 'short');
                $display_name = $days_formatted;
            } else {
                $display_name = '';
            }

            $display_name .= ' - ';

            $arrCities = explode(",", $arrDetail[0]['city_covered_text']);

            if (count($arrCities) > 3) {
                $strCities = $arrCities[0] . ', ' . $arrCities[1] . ', ' . $arrCities[2];
            } else {
                $strCities = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->viewCommaSepString4UI($arrDetail[0]['city_covered_text']);
            }

            $display_name .= $strCities . " package - with " . $arrDetail[0]['inclusions_count'] . " inclusions";

            $sql = " UPDATE tbl_package_master
                     SET display_name = '" . $display_name . "' WHERE id =" . $intPackageId;
            $this->db->query($sql);
        }
    }

    public function updatePackageMasterPrice($intPackageId) {
        $sql = " SELECT package_id, MIN(s_b2c_pats) as s_pats FROM tbl_package_rates WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();

        if (count($result) > 0) {
//if(!empty($result[0]['s_pats'])) {
            $update = " UPDATE tbl_package_master 
                           SET s_price = '" . $result[0]['s_pats'] . "'
                               WHERE id = " . $intPackageId;
            $this->db->query($update);
// }
        }


        $sql = " SELECT package_id, MIN(d_b2c_pats) as d_pats FROM tbl_package_rates WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();

        if (count($result) > 0) {
// if(!empty($result[0]['d_pats'])) {
            $update = " UPDATE tbl_package_master 
                           SET d_price = '" . $result[0]['d_pats'] . "'
                               WHERE id = " . $intPackageId;
            $this->db->query($update);
// }
        }

        $sql = " SELECT package_id, MIN(l_b2c_pats) as l_pats FROM tbl_package_rates WHERE package_id = " . $intPackageId . " 
                
                AND l_b2c_pats <> 0 AND l_b2c_pats IS NOT NULL ";
        $result = $this->db->query($sql)->fetchAll();

        if (count($result) > 0) {
// if(!empty($result[0]['l_pats'])) {
            $update = " UPDATE tbl_package_master 
                           SET l_price = '" . $result[0]['l_pats'] . "'
                               WHERE id = " . $intPackageId;
            $this->db->query($update);
// }
        }
    }

    public function updatePkgFacebookShareImage($intPackageId) {
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrDetail = $objPackage->getPackageList();

        if (count($arrDetail) > 0) {
            $destinations = $arrDetail[0]['destination_covered_ids'];

            if (!empty($destinations)) {
                $objDestination = new Travel_Model_TblDestination();
                $destinations = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($destinations);
                $objDestination->strDestinationIds = $destinations;
                $arrDestinationImages = $objDestination->getDestinationImages();
                if (count($arrDestinationImages) > 0) {
                    foreach ($arrDestinationImages as $row) {
                        $image = $this->imageServerUrl . 'destinations/' . $row['destination_id'] . '/large/' . $row['image_name'];
                        $image = addslashes($image);
                        $image = str_replace(' ', '%20', $image);
                        if (!empty($image)) {
                            $sql = " INSERT IGNORE INTO tbl_pkg_fb_images(package_id, fb_share_image)values(" . $intPackageId . ",'" . $image . "')";
                            $this->db->query($sql);
                        }
                    }
                }
            }


            $cities = $arrDetail[0]['city_covered'];
            if (!empty($cities)) {
                $cities = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($cities);
                if (!empty($cities)) {
                    $objCity = new Travel_Model_TblCity();
                    $objCity->strCondition = " AND tbl_city.id in (" . $cities . ")";
                    $arrCities = $objCity->getCityList();
                    if (count($arrCities) > 0) {
                        foreach ($arrCities as $city) {
                            $image = $city['large_image_url'];
                            $image = addslashes($image);
                            $image = str_replace(' ', '%20', $image);
                            if (!empty($image)) {
                                $sql = " INSERT IGNORE INTO tbl_pkg_fb_images(package_id, fb_share_image)values(" . $intPackageId . ",'" . $image . "')";
                                $this->db->query($sql);
                            }
                        }
                    }
                }
            }
        }
    }

    public function getRates($intPackageId, $intDepartureCityId) {

        if (empty($intPackageId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = "SELECT * FROM tbl_package_rates WHERE package_id = " . $intPackageId;

        if (!empty($intDepartureCityId)) {
            $sql .= " AND city_id = " . $intDepartureCityId;
        }


        $sql .= " limit 0,1 ";

        return $this->db->query($sql)->fetchAll();
    }

    public function notShowInSearch($block) {

        if (!empty($this->strPackageIdIn)) {
            if (empty($block)) {
                $sql = "UPDATE tbl_package_master SET show_in_search = 'N' WHERE id in ( " . $this->strPackageIdIn . " ) ";
            } else {
                if ($block == 'Y') {
                    $sql = "UPDATE tbl_package_master SET show_in_search = 'Y' WHERE id in ( " . $this->strPackageIdIn . " ) ";
                } else {
                    $sql = "UPDATE tbl_package_master SET show_in_search = 'N' WHERE id in ( " . $this->strPackageIdIn . " ) ";
                }
            }
//echo $sql;exit;
            $this->db->query($sql);
        }
    }

    public function updatePkgItineraryImage($intPackageId) {

        if (empty($intPackageId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = " SELECT * from tbl_itenary_accomodation where package_id = " . $intPackageId;

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

        $arrPackageImages = array();

        if (count($result) > 0) {
            foreach ($result as $row) {
                $strDestinations = $row['destinations'];

                $imageFound = false;

                if (!empty($strDestinations)) {
                    $strDestinations = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strDestinations);
                    $objDestination = new Travel_Model_TblDestination();
                    $objDestination->strCondition = " AND tbl_destination.id in (" . $strDestinations . ")";
                    $arrDestinations = $objDestination->getDestinationList();

                    if (count($arrDestinations) > 0) {
                        foreach ($arrDestinations as $destination) {
                            $imageUrl = addslashes($destination['thumb_image_url']);
                            if (!empty($imageUrl)) {
                                $update = array();
                                $arrPackageImages[] = addslashes($destination['thumb_image_url']);
                                $update['image_link'] = addslashes($destination['detail_page_url']);
                                $where = " id = " . $row['id'];
                                $this->db->update('tbl_itenary_accomodation', $update, $where);
                                $imageFound = true;
                            }
                        }
                    }
                } else {

                    /* Add optional destinations if any */
                    $innerSql = " SELECT package_id, destination_id, itinerary_day, city 
                                        FROM tbl_optional_destinations WHERE package_id = " . $intPackageId;
                    $innerResult = $this->db->query($innerSql)->fetchAll();

                    if (count($innerResult) > 0) {
                        foreach ($innerResult as $innerRow) {
                            $strDestinations = $innerRow['destination_id'];

                            if (!empty($strDestinations)) {
                                $strDestinations = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strDestinations);
                                $objDestination = new Travel_Model_TblDestination();
                                $objDestination->strCondition = " AND tbl_destination.id in (" . $strDestinations . ")";
                                $arrDestinations = $objDestination->getDestinationList();

                                if (count($arrDestinations) > 0) {
                                    foreach ($arrDestinations as $destination) {
                                        $imageUrl = addslashes($destination['thumb_image_url']);

                                        if (!empty($imageUrl)) {
                                            $arrPackageImages[] = $destination['thumb_image_url'];
                                            $update = " UPDATE tbl_itenary_accomodation SET 
                                                           thumb_image_url = '" . $imageUrl . "', 
                                                           image_link = '" . addslashes($destination['detail_page_url']) . "'
                                                         WHERE 
                                                            id = " . $row['id'];
                                            $this->db->query($update);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
// exit;

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

                if (!$imageFound) {
                    $city = $row['city'];
                    $objCity = new Travel_Model_TblCity();
                    $objCity->intId = $city;
                    $arrCity = $objCity->getCityList();
                    $update = array();
                    if (count($arrCity) > 0) {

                        $imageUrl = $arrCity[0]['thumb_image_url'];

                        if (!empty($imageUrl)) {

                            /*  $update = " UPDATE tbl_itenary_accomodation 
                              SET thumb_image_url = '" . $imageUrl ."',
                              image_link      = '" . $this->db->quote($arrCity[0]['detail_page_url']) ."'
                              WHERE id= " . $row['id']; */
                            $arrPackageImages[] = addslashes($arrCity[0]['thumb_image_url']);
                            $update['thumb_image_url'] = $imageUrl;
                            $update['image_link'] = addslashes($arrCity[0]['detail_page_url']);
                            $where = " id = " . $row['id'];
                            $this->db->update('tbl_itenary_accomodation', $update, $where);
                            $imageFound = true;
                        }
                    }
                }


                if (!$imageFound) {
                    $sql = " SELECT hotel_id_standard, hotel_id_deluxe, hotel_id_luxury FROM tbl_itenary_accomodation
                            WHERE id = " . $row['id'] . "  AND ( hotel_id_standard <> 0 OR hotel_id_deluxe OR hotel_id_luxury ) ";
                    $response = $this->db->query($sql)->fetchAll();
                    if (count($response) > 0) {

                        $intHotelId = 0;
                        $intHotelStandard = $response[0]['hotel_id_standard'];
                        $intHotelDeluxe = $response[0]['hotel_id_deluxe'];
                        $intHotelLuxury = $response[0]['hotel_id_luxury'];
                        if (!empty($intHotelStandard)) {
                            $intHotelId = $intHotelStandard;
                        } else if (!empty($intHotelDeluxe)) {
                            $intHotelId = $intHotelDeluxe;
                        } else if (!empty($intHotelLuxury)) {
                            $intHotelId = $intHotelLuxury;
                        }

                        if (!empty($intHotelId)) {
                            $objHotel = new Travel_Model_TblHotel();
                            $objHotel->intId = $intHotelId;
                            $arrHotelList = $objHotel->getHotelList();

                            if (count($arrHotelList) > 0) {
                                $intHotelCityId = $arrHotelList[0]['city_id'];

                                $objCity = new Travel_Model_TblCity();
                                $objCity->intId = $intHotelCityId;
                                $arrCityList = $objCity->getCityList();
                                if (count($arrCityList) > 0) {
                                    $imageUrl = $arrCityList[0]['thumb_image_url'];
                                    $arrPackageImages[] = $arrCityList[0]['thumb_image_url'];
                                    if (!empty($imageUrl)) {
                                        $update = " UPDATE tbl_itenary_accomodation 
                                        SET thumb_image_url = '" . $imageUrl . "',
                                            image_link      = ''
                                            WHERE id= " . $row['id'];
                                        $this->db->query($update);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        if (count($arrPackageImages) > 0) {
            $randomNumber = rand(0, (count($arrPackageImages) - 1));
            $sql = " UPDATE tbl_package_master SET 
                                  image = '" . addslashes($arrPackageImages[$randomNumber]) . "' WHERE id = " . $intPackageId;
            $this->db->query($sql);
        }
    }

    public function getNearByPlaces() {

        if (isset($_COOKIE['cookie_searched_for'])) {
            $keyword = $_COOKIE['cookie_searched_for'];
            if (isset($_COOKIE['cookie_searchType'])) {

                $type = $_COOKIE['cookie_searchType'];

                $limit = 7;

                /*   $sql = " SELECT COUNT(DISTINCT package_id) AS frequency, place 
                  FROM tbl_pkg_places_covered WHERE  package_id IN
                  (
                  SELECT DISTINCT package_id FROM tbl_pkg_places_covered
                  WHERE place = '". $keyword. "'
                  )
                  AND ( place_type ='". $type. "' AND place <> '". $keyword. "')
                  GROUP BY place
                  ORDER BY frequency DESC LIMIT 0, " . $limit ; */
                $sql = "  SELECT COUNT(DISTINCT package_id) AS frequency, place FROM tbl_pkg_places_covered WHERE 1
                AND ( place_type ='" . $type . "' AND place <> '" . $keyword . "')
                AND package_id IN (
                     SELECT DISTINCT package_id FROM tbl_pkg_places_covered 
                             INNER JOIN tbl_package_master
                       ON  tbl_package_master.id = tbl_pkg_places_covered.package_id 
                       WHERE 
                             tbl_package_master.status = '1' AND tbl_package_master.admin_status = '1' AND tbl_pkg_places_covered.place = '" . $keyword . "' )
                GROUP BY place ORDER BY frequency DESC  LIMIT 0, " . $limit;
//echo $sql;exit;
                $result = $this->db->query($sql)->fetchAll();

                $response = array();
                if (count($result) > 0) {
                    foreach ($result as $row) {
                        $response[] = $row['place'];
                    }
                    asort($response);
                }
                return $response;
            }
        }
        return array();
    }

    public function getPackageIdsForCron() {
        $sql = " SELECT id FROM tbl_package_master WHERE tbl_package_master.cron_executed = 'N' 
                            AND tbl_package_master.deleted = 'N' 
                            ORDER BY cron_priority, id desc limit 0 , 5 ";
        return $this->db->query($sql)->fetchAll();
    }

    public function changeStatus($intPackageId, $status) {

        if (empty($intPackageId)) {
            throw new Exception("Package Id not found.");
        }

        $sql = " UPDATE tbl_package_master SET admin_status = '" . $status . "' WHERE id = " . $intPackageId;
        $this->db->query($sql);
        return true;
    }

    public function updatePackageItineraryAccomodation($intPackageId) {

        $sql = " SELECT DISTINCT city FROM tbl_itenary_accomodation WHERE package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();

        $strItineraryDestination = '';
        if (count($result) > 0) {
            $intCounter = 1;
            $intTotalRecords = count($result);
            foreach ($result as $row) {
                $intCityId = $row['city'];

                $sqlHotel = " SELECT hotel_id_standard, hotel_id_deluxe, hotel_id_luxury FROM tbl_itenary_accomodation
                                        WHERE package_id = " . $intPackageId . " AND city = " . $intCityId . " AND 
                                            ( hotel_id_standard <> 0  OR hotel_id_deluxe <> 0 OR hotel_id_luxury <> 0) ";
                $resultHotel = $this->db->query($sqlHotel)->fetchAll();

                if (count($resultHotel) > 0) {
                    $intNights = count($resultHotel);

                    $objCity = new Travel_Model_TblCity();
                    $strCityName = $objCity->getCityName($intCityId);

                    $strItineraryDestination .= $intNights . 'N ' . $strCityName;

                    if ($intCounter < $intTotalRecords) {
                        $strItineraryDestination .= ' | ';
                    }
                }
                $intCounter++;
            }
        }

        $strItineraryDestination = rtrim($strItineraryDestination, " | ");
        $updateInfo['itenary_destination'] = $strItineraryDestination;
        $this->db->update('tbl_package_master', $updateInfo, 'id = ' . $intPackageId);

        /*         * ****************** Update Standard info **************************** */
        $sql = "     SELECT package_id, city,city_name, hotel_id_standard,  COUNT(hotel_id_standard) AS nights
                     FROM tbl_itenary_accomodation INNER JOIN tbl_city 
                     ON tbl_itenary_accomodation.city = tbl_city.id 
                     WHERE package_id = " . $intPackageId . " AND hotel_id_standard <> 0 GROUP BY package_id,city,
                     city_name,hotel_id_standard ";

        $result = $this->db->query($sql)->fetchAll();
        $strStayInfoStandard = '';
        $intCounter = 1;
        if (count($result) > 0) {
            foreach ($result as $row) {
                $intHotelId = $row['hotel_id_standard'];
                if (empty($intHotelId)) {
                    $strStayInfoStandard = '';
                } else {
                    $intNights = $row['nights'];
                    $strCity = $row['city_name'];

                    /* $objHotel = new Travel_Model_TblHotel;
                      $objHotel->intId = $intHotelId;
                      $arrHotelDetail = $objHotel->getHotelList();
                      $intHotelRating = '';
                      if(count($arrHotelDetail)>0) {
                      $intHotelRating = $arrHotelDetail[0]['rating'];
                      if(!empty($intHotelRating)) {
                      $stayIn .= $intHotelRating . ',';
                      }
                      }
                     * 
                     */
                    $strStayInfoStandard .= $intNights . 'N ' . $strCity;
// $intHotelRating = trim($intHotelRating);
//                    if(!empty($intHotelRating)){
//                        $strStayInfoStandard .=  ' - '. $intHotelRating.'#STAR#';
//                    }

                    if ($intCounter < count($result)) {
                        $strStayInfoStandard .= ' | ';
                    }
                    $intCounter++;
                }
            }
            $strStayInfoStandard = trim($strStayInfoStandard);
        }
        /*         * ***************************************************************************** */


        /*         * ****************** Update Deluxe info **************************** */
        $sql = "     SELECT package_id, city,city_name, hotel_id_deluxe,  COUNT(hotel_id_deluxe) AS nights
                     FROM tbl_itenary_accomodation INNER JOIN tbl_city 
                     ON tbl_itenary_accomodation.city = tbl_city.id 
                     WHERE package_id = " . $intPackageId . " AND hotel_id_deluxe<>0 GROUP BY package_id,city,
                     city_name,hotel_id_standard ";

        $result = $this->db->query($sql)->fetchAll();
        $strStayInfoDeluxe = '';
        $intCounter = 1;
        if (count($result) > 0) {
            foreach ($result as $row) {
                $intHotelId = $row['hotel_id_deluxe'];
                if (empty($intHotelId)) {
                    $strStayInfoDeluxe = '';
                } else {
                    $intNights = $row['nights'];
                    $strCity = $row['city_name'];

                    /* $objHotel = new Travel_Model_TblHotel;
                      $objHotel->intId = $intHotelId;
                      $arrHotelDetail = $objHotel->getHotelList();
                      $intHotelRating = '';
                      if(count($arrHotelDetail)>0) {
                      $intHotelRating = $arrHotelDetail[0]['rating'];
                      if(!empty($intHotelRating)) {
                      $stayIn .= $intHotelRating . ',';
                      }
                      }
                     */

                    $strStayInfoDeluxe .= $intNights . 'N ' . $strCity;

                    /* $intHotelRating = trim($intHotelRating);
                      if(!empty($intHotelRating)){
                      $strStayInfoDeluxe .=  ' - '. $intHotelRating.'#STAR#';
                      }
                     */

                    if ($intCounter < count($result)) {
                        $strStayInfoDeluxe .= ' | ';
                    }
                    $intCounter++;
                }
            }
            $strStayInfoDeluxe = trim($strStayInfoDeluxe);
        }
        /*         * *********************************************************************** */


        /*         * ****************** Update Luxury info **************************** */
        $sql = "     SELECT package_id, city,city_name, hotel_id_luxury,  COUNT(hotel_id_luxury) AS nights
                     FROM tbl_itenary_accomodation INNER JOIN tbl_city 
                     ON tbl_itenary_accomodation.city = tbl_city.id 
                     WHERE package_id = " . $intPackageId . " AND hotel_id_luxury<>0 GROUP BY package_id,city,
                     city_name,hotel_id_standard ";

        $result = $this->db->query($sql)->fetchAll();
        $strStayInfoLuxury = '';
        $intCounter = 1;
        if (count($result) > 0) {
            foreach ($result as $row) {
                $intHotelId = $row['hotel_id_luxury'];
                if (empty($intHotelId)) {
                    $strStayInfoLuxury = '';
                } else {
                    $intNights = $row['nights'];
                    $strCity = $row['city_name'];

                    /* $objHotel = new Travel_Model_TblHotel;
                      $objHotel->intId = $intHotelId;
                      $arrHotelDetail = $objHotel->getHotelList();
                      $intHotelRating = '';
                      if(count($arrHotelDetail)>0) {
                      $intHotelRating = $arrHotelDetail[0]['rating'];
                      if(!empty($intHotelRating)) {
                      $stayIn .= $intHotelRating . ',';
                      }
                      }
                     */

                    $strStayInfoLuxury .= $intNights . 'N ' . $strCity;

                    /* $intHotelRating = trim($intHotelRating);
                      if(!empty($intHotelRating)){
                      $strStayInfoLuxury .=  ' - '. $intHotelRating.'#STAR#';
                      }
                     */

                    if ($intCounter < count($result)) {
                        $strStayInfoLuxury .= ' | ';
                    }
                    $intCounter++;
                }
            }
            $strStayInfoLuxury = trim($strStayInfoLuxury);
        }


        $updateInfo['itenary_destination_standard'] = $strStayInfoStandard;
        $updateInfo['itenary_destination_deluxe'] = $strStayInfoDeluxe;
        $updateInfo['itenary_destination_luxury'] = $strStayInfoLuxury;

//        if(!empty($strStayInfoStandard)) {
//            $updateInfo['itenary_destination'] = $strStayInfoStandard;
//        }else if(!empty($strStayInfoDeluxe)) {
//            $updateInfo['itenary_destination'] = $strStayInfoDeluxe;
//        }else if(!empty($strStayInfoLuxury)) {
//            $updateInfo['itenary_destination'] = $strStayInfoLuxury;
//        }

        $this->db->update('tbl_package_master', $updateInfo, 'id = ' . $intPackageId);
        /*         * *********************************************************************** */
    }

    public function updatePackageHotelCategory($intPackageId) {
        $sql = " SELECT hotel_id_standard, hotel_id_deluxe, hotel_id_luxury FROM tbl_itenary_accomodation
                              WHERE package_id = " . $intPackageId . "  AND 
                                  ( hotel_id_standard <> 0 OR hotel_id_deluxe OR hotel_id_luxury ) ";

        $result = $this->db->query($sql);

        if (count($result) > 0) {
            $strHotelIds = '';
            foreach ($result as $row) {
                if (!empty($row['hotel_id_standard'])) {
                    $strHotelIds .= $row['hotel_id_standard'] . ",";
                }
                if (!empty($row['hotel_id_deluxe'])) {
                    $strHotelIds .= $row['hotel_id_deluxe'] . ",";
                }
                if (!empty($row['hotel_id_luxury'])) {
                    $strHotelIds .= $row['hotel_id_luxury'] . ",";
                }
            }

            $strHotelIds = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelIds);
            if (!empty($strHotelIds)) {
                $objHotel = new Travel_Model_TblHotel();
                $objHotel->strCondition = " AND tbl_hotel.id in ( " . $strHotelIds . " )";
                $arrHotelList = $objHotel->getHotelList();
                $strHotelCategory = '';
                if (count($arrHotelList) > 0) {
                    foreach ($arrHotelList as $hotel) {
                        $strHotelCategory .= $hotel['category'] . ",";
                    }
                }

                $strHotelCategory = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strHotelCategory);

                $update = " UPDATE tbl_package_master
                                SET hotel_category_included = '" . $strHotelCategory . "' WHERE id = " . $intPackageId;
                $this->db->query($update);
            }
        }
    }

    public function updateDestination4UISort($intPackageId) {
        $sql = " SELECT COUNT(DISTINCT city) AS city FROM tbl_itenary_accomodation 
                      WHERE 1 AND ( hotel_id_standard <> 0 OR hotel_id_deluxe <> 0 OR hotel_id_luxury <> 0 )
               AND package_id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            $intCityCounter = $result[0]['city'];
            $update = " UPDATE tbl_package_master
                          set itinerary_count=" . $intCityCounter . " WHERE id = " . $intPackageId;
            $this->db->query($update);
        }
    }

    public function saveSimilarPackages($data) {
        $result = $this->db->insert('tbl_similar_pkgs', $data);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function saveRecommendedPackages($data) {

        $result = $this->db->insert('tbl_recommended_pkgs', $data);
        if ($result) {
            return true;
        } else {
            return false;
        }
    }

    public function isCityCoveredInPercentage($intPackageId, $strParamCityCovered) {
        /* Get city covered of $intPackageId */
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrPackageDetail = $objPackage->getQuickPackageList();
        $arrCityCovered = explode(",", $arrPackageDetail[0]['city_covered']);

        $arrParamCityCovered = explode(",", $strParamCityCovered);

        $intMainPackageCityCovered = count($arrCityCovered);
        $intRequiredCityCovered = ceil(($intMainPackageCityCovered * SIMILAR_PACKAGE_CITYCOVERED_PERCENTAGE) / 100);

        $intCounter = 1;
        foreach ($arrParamCityCovered as $intCityId) {
            if ($intCounter < $intRequiredCityCovered) {
                /* If this city id exist in $arrCityCovered */
                if (in_array($intCityId, $arrCityCovered)) {
                    $intCounter++;
                }
            } else {
                return true;
            }
        }
        return false;
    }

    public function getNearByDaysCovered($intPackageId, $strPackageIdsIn) {

        /* Get city covered of $intPackageId */
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrPackageDetail = $objPackage->getQuickPackageList();
        $intItenaryDays = $arrPackageDetail[0]['days'];
        if ($intItenaryDays >= 2) {
            $intPreviousDay = $intItenaryDays - 1;
            $intNextDay = $intItenaryDays + 1;
            $strNearByDays = $intPreviousDay . "," . $intItenaryDays . "," . $intNextDay;
        } else {
            $intNextDay = $intItenaryDays + 1;
            $strNearByDays = $intItenaryDays . "," . $intNextDay;
        }

        $objPackage = new Travel_Model_TblPackageMaster();
        if (!empty($strPackageIdsIn)) {
            $strPackageIdsIn = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIdsIn);
            $objPackage->strCondition .= " AND tbl_package_master.id IN( " . $strPackageIdsIn . " ) ";
        } else {
            return '';
        }

        if (!empty($strNearByDays)) {
            $strNearByDays = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strNearByDays);
            $objPackage->strCondition .= " AND tbl_package_master.days IN( " . $strNearByDays . " ) ";
        }
//echo $objPackage->strCondition;exit;
        $arrPackageList = $objPackage->getPackageList();
        $strPackageIds = '';
        if (count($arrPackageList) > 0) {
            foreach ($arrPackageList as $package) {
                $strPackageIds .= $package['id'] . ",";
            }
            return Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
        }

        return '';
    }

    public function getNearByPrice($intPackageId, $strPackageIdsIn) {

        /* Get city covered of $intPackageId */
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrPackageDetail = $objPackage->getQuickPackageList();
        $fltPrice = $arrPackageDetail[0]['min_price'];
        $fltMinPrice = $fltPrice - ($fltPrice * PKG_NEARBY_PRICE_PERCENTAGE) / 100;
        $fltMaxPrice = $fltPrice + ($fltPrice * PKG_NEARBY_PRICE_PERCENTAGE) / 100;

        if ($fltMinPrice < 0) {
            $fltMinPrice = 0;
        }

        $objPackage = new Travel_Model_TblPackageMaster();
        if (!empty($strPackageIdsIn)) {
            $strPackageIdsIn = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIdsIn);
            $objPackage->strCondition .= " AND tbl_package_master.id IN( " . $strPackageIdsIn . " ) ";
        } else {
            return '';
        }

        $objPackage->strCondition .= " AND  tbl_package_master.min_price BETWEEN " . $fltMinPrice . "
                                                AND " . $fltMaxPrice . " 
                                             ";

// echo $objPackage->strCondition;exit;
        $arrPackageList = $objPackage->getQuickPackageList();
        $strPackageIds = '';
        if (count($arrPackageList) > 0) {
            foreach ($arrPackageList as $package) {

                $strPackageIds .= $package['id'] . ",";
            }
            return Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strPackageIds);
        }

        return '';
    }

    public function updatePkgSimilarPackages($intPackageId) {

        /* Get Citi Covered of this package */
        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->intId = $intPackageId;
        $arrCityCovered = $objPackage->getCityCovered();
        $intCounter = 0;

        /* Get Package List */
        $strFinalSimilarPackageIds = '';

        $intMainPackageCityCovered = count($arrCityCovered);
        $intRequiredCityCovered = ceil(($intMainPackageCityCovered * SIMILAR_PACKAGE_CITYCOVERED_PERCENTAGE) / 100);

        if (count($arrCityCovered) > 0) {



// $condition .= " AND (  " ;
            $objPackage = new Travel_Model_TblPackageMaster();
            $objPackage->strCondition .= " AND tbl_package_master.id <> " . $intPackageId;

            foreach ($arrCityCovered as $city) {
                if ($intCounter < $intRequiredCityCovered) {
                    $objPackage->strCondition .= " AND find_in_set (" . $city['city_covered'] . ", city_covered ) > 0 ";
                    $objPackage->strSelectedView = 'count';
                    $objPackage->intId = $city['package_id'];
                    $objPackage->isAdmin = true;
                    $arrPackageCount = $objPackage->getPackageList();

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

                    if ($arrPackageCount[0]['total'] > 0) {
                        $intCounter++;
                        $strFinalSimilarPackageIds .= $city['package_id'];
                    }
                }
            }
        }


        if (!empty($strFinalSimilarPackageIds)) {
            $data = array(
                'package_id' => $intPackageId,
                'similar_pkgs_ids' => $strFinalSimilarPackageIds
            );
            $objPackage = new Travel_Model_TblPackageMaster();
            $objPackage->saveSimilarPackages($data);
        }
    }

    public function updateRecommondedPackages($intPackageId) {

//$intPackageId = 50;

        $objPackage = new Travel_Model_TblPackageMaster();
        $objPackage->strCondition .= " AND ( agent_rating = 3 OR agent_rating = 4 OR agent_rating = 5 ) ";
        $objPackage->strCondition .= " AND tbl_package_master.id <> " . $intPackageId;

//echo $objPackage->strCondition;exit;

        $arrPackageList = $objPackage->getQuickPackageList();

        $strFinalRecommendedPackageIds = '';
        if (count($arrPackageList) > 0) {
            $strRecommendedPackageIds1Level = '';
            foreach ($arrPackageList as $package) {
                $strRecommendedPackageIds1Level .= $package['id'] . ",";
            }

            $strRecommendedPackageIds1Level = Zend_Controller_Action_HelperBroker::getStaticHelper('string')->cleanCommaSepString($strRecommendedPackageIds1Level);

            if (count(explode(",", $strRecommendedPackageIds1Level)) > RECOMMONDED_PKG_COUNT) {
                $strRecommendedPackageIds2Level = $this->getNearByPrice($intPackageId, $strRecommendedPackageIds1Level);
                $strFinalRecommendedPackageIds = $strRecommendedPackageIds2Level;
            } else {
                $strFinalRecommendedPackageIds = $strRecommendedPackageIds1Level;
            }


//echo $strFinalRecommendedPackageIds."<br/>";

            if (!empty($strFinalRecommendedPackageIds)) {
                $data = array(
                    'package_id' => $intPackageId,
                    'recommended_pkgs_ids' => $strFinalRecommendedPackageIds
                );
                $objPackage = new Travel_Model_TblPackageMaster();
                $objPackage->saveRecommendedPackages($data);
            }
        }
    }

    public function getExcludingReturnFareCount() {

        $intReturnFareId = 31;

        $sql = " SELECT COUNT(*) as total FROM tbl_package_master WHERE 1 
                 AND FIND_IN_SET(" . $intReturnFareId . ", inclusions ) = 0 ";

        if (!empty($this->strPackageIdIn)) {
            $sql .= " AND id in (" . $this->strPackageIdIn . ")";
        }

        $sql .= " AND admin_status = '1' AND show_in_search = 'Y' ";

        $result = $this->db->query($sql)->fetch();

        return $result['total'];
    }

    public function getIncludingReturnFareCount() {

        $intReturnFareId = 31;

        $sql = " SELECT COUNT(*) as total FROM tbl_package_master WHERE 1 
                 AND FIND_IN_SET(" . $intReturnFareId . ", inclusions ) > 0 ";

        if (!empty($this->strPackageIdIn)) {
            $sql .= " AND id in (" . $this->strPackageIdIn . ") ";
        }

        if (!empty($this->strAgentCity)) {
            $sql .= " AND tbl_package_master.agent_city in (" . $this->strAgentCity . ")";
        }


        $sql .= " AND admin_status = '1' AND show_in_search = 'Y' ";

        $result = $this->db->query($sql)->fetch();

        return $result['total'];
    }

    function isPackageCategoryExists($intPackageId, $pkgCategory) {
        $sql = " SELECT category FROM tbl_package_master WHERE id = " . $intPackageId;
        $result = $this->db->query($sql)->fetchAll();
        if (count($result) > 0) {
            $arrCategory = explode(",", $result[0]['category']);
            if (count($arrCategory) > 0) {
                foreach ($arrCategory as $category) {
                    if ((strtolower($category) == 'standard') && (strtoupper($pkgCategory) == 'S'))
                        return true;
                    if ((strtolower($category) == 'deluxe') && (strtoupper($pkgCategory) == 'D'))
                        return true;
                    if ((strtolower($category) == 'luxury') && (strtoupper($pkgCategory) == 'L'))
                        return true;
                }
            }
        }
        return false;
    }

    public function saveRefertoFriend($data) {
        $this->db->insert('tbl_emailto_friend', $data);
        $intId = $this->db->lastInsertId();
        if (!empty($intId)) {
            return true;
        }
        return false;
    }

    public function getCitiesHavingPackageCategory($intPackageCategory) {
        $sql = " SELECT tbl_package_citycovered.city_covered, COUNT(package_id)
                FROM tbl_package_citycovered 
                 INNER JOIN tbl_package_master ON tbl_package_master.id = tbl_package_citycovered.package_id
                 INNER JOIN tbl_city ON tbl_package_citycovered.city_covered = tbl_city.id
                 INNER JOIN tbl_agent_info
                           ON tbl_package_master.agent_id = tbl_agent_info.id
                           INNER JOIN admin_user
                           ON tbl_agent_info.user_id = admin_user.user_id

                   WHERE 1 AND 
                   (tbl_package_master.status = '1' AND tbl_package_master.show_in_search = 'Y' AND tbl_package_master.admin_status = '1' 
                           AND  tbl_agent_info.active = '1' 
                        AND ( tbl_agent_info.available_fund > 0 ) 
                        AND ( tbl_package_master.p_type <> 'OH' AND tbl_package_master.p_type <> 'HF' ) 
                        ) ";

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }



        $sql .= " AND FIND_IN_SET( " . $intPackageCategory . ", package_type ) > 0  ";

        $sql .= "   GROUP BY tbl_package_citycovered.city_covered ORDER BY COUNT(package_id) DESC
                            LIMIT 0, 10 ";

//   echo $sql;exit;

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

        $cityCovered = '';
        if (count($result) > 0) {
            foreach ($result as $row) {
                $cityCovered .= $row['city_covered'] . ",";
            }
        }

        if (!empty($cityCovered)) {
            $objCity = new Travel_Model_TblCity();
            $cityCovered = Zend_Controller_Action_HelperBroker::getStaticHelper('String')->cleanCommaSepString($cityCovered);
            $objCity->strCondition = " AND tbl_city.id in (" . $cityCovered . " )";
//echo $cityCovered;exit;
            return $objCity->getCityList();
        }

        return array();
    }

    public function getBrowseByCategories() {
        $strPackageCategoryIds = '9,2,10,5';

        $objPackageCategories = new Travel_Model_TblPackageType();
        $objPackageCategories->strCondition = " AND tbl_package_type.id in ( " . $strPackageCategoryIds . " ) ";
        $arrPackageTypes = $objPackageCategories->getPackageTypeList();
        return $arrPackageTypes;

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

############## Code  on 27 Oct 2016 ############

    public function GetDuplicateMarketwiserateDate($packageId = NULL, $tripdate = NULL, $MarketPlaceId = NULL, $FixedInvnSysId = 0, $IsMarkForDel = 0) {
        $MarketPlaceId = isset($MarketPlaceId) ? $MarketPlaceId : 1;
        $cond = '';
        if (!empty($tripdate)) {
            $cond = " AND  '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE)";
        }
        if (!empty($FixedInvnSysId)) {
            $cond .= " AND FixedInvnSysId = " . (int) $FixedInvnSysId;
        }
        $whereCondition = " TPIntSysId = '" . @$packageId . "' AND MarketPlaceId = $MarketPlaceId AND IsActive = '1' $cond ";
        if ($IsMarkForDel == 0) {
            $whereCondition .= " AND IsMarkForDel = '" . $IsMarkForDel . "'";
        }


        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_MarketWise_Rate"))
                ->where($whereCondition);
//               echo $select; 
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getMinPackRate($packid, $Date, $MarketPlaceId = NULL) {
        $cond = '';
        if ($MarketPlaceId != '') {
            $cond = " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $sqlPackage = "SELECT TOP 1 TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE ( CAST(FromDate AS DATE)	   >=   '$Date' OR
	   '$Date' BETWEEN CAST(FromDate AS DATE) AND CAST(ToDate AS DATE))  AND  CostPPDO is not null AND TPIntSysId = '" . @$packid . "' AND TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1' "
                . $cond . "Order By CostPPDO ASC";
//echo $sqlPackage; exit;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function UpadteTransportFlight($TPIntSysId, $VersionID) {

        $where = array('TPIntSysId = ? ' => $TPIntSysId, 'VersionId = ? ' => $VersionID);
        $updateData = array('IsMarkForDel' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_Air', $updateData, $where);
//$this->db->update('TB_TravelPlan_Itenary', $data, $where); 
    }

    public function GetCustomerSelectedFlightByo() {
        $select = $this->dbObj->select();
        $select->from(array('tbl' => "TB_TravelPlan_Itenary_Air"));
        $select->where('tbl.TPIntSysId = ?', $tpintID);
        $select->where('tbl.IsMarkForDel = ?', 0);
        $result = $this->dbObj->fetchAll($select);
        return $result;
    }

    public function UpadteTransportFlightBYO($TPIntSysId, $VersionID) {

        $where = array('TPIntSysId = ? ' => $TPIntSysId, 'VersionId = ? ' => $VersionID);
        $updateData = array('IsMarkForDel' => '1');
        $this->db->update('TB_TravelPlan_Itenary_Air', $updateData, $where);
//$this->db->update('TB_TravelPlan_Itenary', $data, $where); 
    }

    public function UpadteFlightFixedCost($transID) {
        $where = array('FixTransSysId = ? ' => $transID);
        $updateData = array('IsMarkForDel' => '1', 'IsIncluded' => '0');
        $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $where);
    }

    public function UpadteFlightFixedCostByo($transID) {
        $where = array('FixTransSysId = ? ' => $transID);
        $updateData = array('IsMarkForDel' => '1', 'IsIncluded' => '0');
        $this->db->update('TB_TravelPlan_Trans_Fixed', $updateData, $where);
    }

    public function GetFixedFlight($tpintsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'flight');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedFixedBus($tpintsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'bus');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedFixedBusByo($tpintsysID) {
        $select = $this->db->select();
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.TransType = ?', 'bus');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFixedTrain($tpintsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'train');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFixedTrainBYO($tpintsysID) {
        $select = $this->db->select();
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.TransType = ?', 'train');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPackageTPDetails($tpintsysID) {
        $select = $this->db->select();
        $travel_pal_air = array(
            'TPIntSysId',
            'SeqId',
            'VersionId',
            'InvnItemSysId',
            'AgencySysId',
            'IsFromAPI',
            'SourceSysId',
            'SupplierSysId',
            'Cost',
            'FlightNumber',
            'AirlineSysId',
            'ICSourceSysId',
            'IsFromAgency',
            'LocalFromTime',
            'LocalToTime',
            'FromUTCTime',
            'ToUTCTime',
            'FlightCabinClass',
            'AdultPax',
            'ChildPax',
            'InfentPax',
            'TotalPax',
            'FlyingMinutes',
            'SourcePlaceSysId',
            'DestPlaceSysId as destinationID',
            'SourceAirportCode',
            'DestAirportCode',
            'AirportHaultMinutes',
            'StopCount',
            'Stops',
            'Rating',
            'CreateDate',
            'UpdateDate',
            'IsMarkForDel',
            'IsActive',
            'encodedata'
        );
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"), $travel_pal_air);
        $select->joinLeft(array("TB_MP_Inventory_Air"), "TACTA.InvnItemSysId = TB_MP_Inventory_Air.InvnItemSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPackageTPDetailsBYO($tpintsysID) {
        $select = $this->db->select();
        $travel_pal_air = array(
            'TPIntSysId',
            'SeqId',
            'VersionId',
            'InvnItemSysId',
            'AgencySysId',
            'IsFromAPI',
            'ICSourceSysId as SourceSysId',
            'SupplierSysId',
            'Cost',
            'FlightNumber',
            'AirlineSysId',
            'ICSourceSysId',
            'IsFromAgency',
            'LocalFromTime',
            'LocalToTime',
            'FromUTCTime',
            'ToUTCTime',
            'FlightCabinClass',
            'AdultPax',
            'ChildPax',
            'InfentPax',
            'TotalPax',
            'FlyingMinutes',
            'SourcePlaceSysId',
            'DestPlaceSysId as destinationID',
            'SourceAirportCode',
            'DestAirportCode',
            'AirportHaultMinutes',
            'StopCount',
            'Stops',
            'Rating',
            'CreateDate',
            'UpdateDate',
            'IsMarkForDel',
            'IsActive',
            'encodedata'
        );
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"), $travel_pal_air);
        $select->joinLeft(array("TB_MP_Inventory_Air"), "TTIA.InvnItemSysId = TB_MP_Inventory_Air.InvnItemSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TTIA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TTIA.TPIntSysId = ?', $tpintsysID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsFromAPI = ?', 1);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPackageTPDetailsBYOInv($tpintsysID) {
        $select = $this->db->select();
        $travel_pal_air = array(
            'TPIntSysId',
            'SeqId',
            'VersionId',
            'InvnItemSysId',
            'AgencySysId',
            'IsFromAPI',
            'ICSourceSysId as SourceSysId',
            'SupplierSysId',
            'Cost',
            'FlightNumber',
            'AirlineSysId',
            'ICSourceSysId',
            'IsFromAgency',
            'LocalFromTime',
            'LocalToTime',
            'FromUTCTime',
            'ToUTCTime',
            'FlightCabinClass',
            'AdultPax',
            'ChildPax',
            'InfentPax',
            'TotalPax',
            'FlyingMinutes',
            'SourcePlaceSysId',
            'DestPlaceSysId as destinationID',
            'SourceAirportCode',
            'DestAirportCode',
            'AirportHaultMinutes',
            'StopCount',
            'Stops',
            'Rating',
            'CreateDate',
            'UpdateDate',
            'IsMarkForDel',
            'IsActive',
            'encodedata'
        );
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"), $travel_pal_air);
        $select->joinLeft(array("TB_MP_Inventory_Air"), "TTIA.InvnItemSysId = TB_MP_Inventory_Air.InvnItemSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TTIA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TTIA.TPIntSysId = ?', $tpintsysID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsFromAPI = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPackageTPDetailsAPI($tpintsysID) {
        $select = $this->db->select();
        $travel_pal_air = array(
            'TPIntSysId',
            'SeqId',
            'VersionId',
            'InvnItemSysId',
            'AgencySysId',
            'IsFromAPI',
            'SourceSysId',
            'SupplierSysId',
            'Cost',
            'FlightNumber',
            'AirlineSysId',
            'ICSourceSysId',
            'IsFromAgency',
            'LocalFromTime',
            'LocalToTime',
            'FromUTCTime',
            'ToUTCTime',
            'FlightCabinClass',
            'AdultPax',
            'ChildPax',
            'InfentPax',
            'TotalPax',
            'FlyingMinutes',
            'SourcePlaceSysId',
            'DestPlaceSysId as destinationID',
            'SourceAirportCode',
            'DestAirportCode',
            'AirportHaultMinutes',
            'StopCount',
            'Stops',
            'Rating',
            'CreateDate',
            'UpdateDate',
            'IsMarkForDel',
            'IsActive',
            'encodedata'
        );
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"), $travel_pal_air);
        $select->joinLeft(array("TB_MP_Inventory_Air"), "TACTA.InvnItemSysId = TB_MP_Inventory_Air.InvnItemSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 1);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelByItenary($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTA.SupplierSysId");
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllHotelByItenaryBYO($tpintID, $catID, $MealTypeId = null) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTIA.SupplierSysId");
        $select->joinLeft(array('t4' => 'TB_Master_RoomType'), 't4.RoomType = TTIA.RoomType', array("Title as EconomyTypeTitle", "RoomType as RoomTypeId"));
        $select->joinLeft(array('t5' => 'TB_Master_Accom_MealType'), 't5.MealTypeId = TTIA.MealPlanType', array("Title as MealPlanTypeTitle", "MealTypeId"));
        $select->joinLeft(array('t7' => 'TB_Master_Currency'), 't7.CurrencyType = TTIA.CurrencyType', array('Symbol'));
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsSelectedOnPkg = ?', 0);
        if (!empty($MealTypeId)) {
            $select->where('TTIA.MealPlanType = ?', $MealTypeId);
        }
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('t5.IsMarkForDel = ?', 0);
        $select->where('t5.IsActive = ?', 1);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelByItenaryBYO($tpintID, $catID, $MealTypeId = null) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTIA.SupplierSysId");
        $select->joinLeft(array('t4' => 'TB_Master_RoomType'), 't4.RoomType = TTIA.RoomType', array("Title as EconomyTypeTitle", "RoomType as RoomTypeId"));
        $select->joinLeft(array('t5' => 'TB_Master_Accom_MealType'), 't5.MealTypeId = TTIA.MealPlanType', array("Title as MealPlanTypeTitle", "MealTypeId"));
        $select->joinLeft(array('t7' => 'TB_Master_Currency'), 't7.CurrencyType = TTIA.CurrencyType', array('Symbol'));
        $select->where('TTIA.TPIntSysId IN(?)', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        if (!empty($MealTypeId)) {
            $select->where('TTIA.MealPlanType = ?', $MealTypeId);
        }
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $select->where('t5.IsMarkForDel = ?', 0);
        $select->where('t5.IsActive = ?', 1);
        $select->order('TTIA.TotalCostDO ASC');
//         echo $select;exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTPIntSysIDBySeq($sequencenum, $tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('TPIntSysId', 'Cities');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $travel_airline);
        $select->where('TTI.Sequence = ?', $sequencenum);
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $select->where('TTI.IsActive = ?', 1);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTPIntSysIDByByoSeq($sequencenum, $tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('TPIntSysId', 'Cities');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $travel_airline);
//$select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TB_TravelPlan_Itenary_Accom.SupplierSysId");
        $select->where('TACTI.Sequence = ?', $sequencenum);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $select->where('TACTI.IsActive = ?', 1);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelByItenaryBYOPKG($tpintID, $catID, $mId = NULL) {
        $condmId = !empty($mId) ? " AND TTIA.MealPlanType = $mId " : " ";

//public function GetAllSelectedHotelCountBYO($implodeitenary,$catID){
        $whereCondition = "TTIA.TPIntSysId IN ($tpintID) AND TTIA.IsMarkForDel = '0' AND t5.IsMarkForDel = '0' AND t5.IsActive = '1' AND TTIA.BYOPackType = $catID AND TTIA.IsSelectedOnPkg = '1' $condmId";
        $select = $this->db->select()
                ->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"))
                ->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTIA.SupplierSysId")
                ->joinLeft(array('t4' => 'TB_Master_RoomType'), 't4.RoomType = TTIA.RoomType', array("Title as EconomyTypeTitle", "RoomType as RoomTypeId"))
                ->joinLeft(array('t5' => 'TB_Master_Accom_MealType'), 't5.MealTypeId = TTIA.MealPlanType', array("Title as MealPlanTypeTitle", "MealTypeId"))
                ->where($whereCondition);

        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetHotelByItenaryBYOView($tpintID, $catID) {


//public function GetAllSelectedHotelCountBYO($implodeitenary,$catID){
        $whereCondition = "TACTA.TPIntSysId IN ($tpintID) AND TACTA.IsMarkForDel = '0' AND TACTA.BYOPackType = $catID AND TACTA.IsSelectedOnPkg = '1'";
        $select = $this->db->select()
                ->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"))
                ->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTA.SupplierSysId")
                ->where($whereCondition);

        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetViewHotelByItenary($tpintID, $catID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTA.SupplierSysId");
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetOtherServices($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTO' => "TB_TravelPlan_OtherServices"));
        $select->where('TTO.TPIntSysId = ?', $tpsysID);
        $select->where('TTO.IsMarkForDelete = ?', 0);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetOtherServicesBYO($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTO' => "TB_Agency_Customer_TravelPlan_OtherServices"));
        $select->where('TACTO.TPIntSysId = ?', $tpsysID);
        $select->where('TACTO.IsMarkForDelete = ?', 0);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllTransportOption($tpsysID) {

        $select = "SELECT TTTF.TPSysId,TTTF.TransType,TTTF.TransType,
        TTTF.Type FROM TB_TravelPlan_Trans_Fixed as TTTF WHERE (TTTF.TPSysId = '" . $tpsysID . "') AND 
        (TTTF.IsMarkForDel = 0) AND (TTTF.IsIncluded = 1) group by TPSysId,TransType,Type";

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTransportOptionBYO($tpsysID) {

        $select = "SELECT TB_Agency_Customer_Trans_Fixed.TPSysId,TB_Agency_Customer_Trans_Fixed.TransType,TB_Agency_Customer_Trans_Fixed.TransType,
        TB_Agency_Customer_Trans_Fixed.Type FROM TB_Agency_Customer_Trans_Fixed WHERE (TB_Agency_Customer_Trans_Fixed.TPSysId = '" . $tpsysID . "') AND 
        (TB_Agency_Customer_Trans_Fixed.IsMarkForDel = 0) AND (TB_Agency_Customer_Trans_Fixed.IsIncluded = 1) group by TPSysId,TransType,Type";

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetDayNumberByTpID($tpinstsysID) {
        $select = $this->db->select();
        $travel_airline = array('Sequence');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPIntSysId = ?', $tpinstsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetCarCount($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsGroup = ?', '0');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTrainCount($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'train');
        $select->where('TTTF.IsMarkForDel = ?', 0);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetBusCount($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'bus');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelByItenaryCatBYO($tpintID, $catID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTIA.SupplierSysId");
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);

//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSeletedHotelOnOverview($tpitnID) {
        $sqlPackage = "SELECT COUNT(TACTA.AccoSysId) AS TOTAL , TACTA.Title,TACTA.XRefCityId,TACTA.StarRating,TACTA.FromDate,TACTA.ToDate,TACTA.RoomTypeStr FROM TB_Agency_Customer_TravelPlan_Accom as TACTA
         WHERE (TACTA.TPIntSysId IN ($tpitnID)) AND (TACTA.IsMarkForDel = 0) AND (TACTA.IsSelectedOnPkg = 1) group by TACTA.AccoSysId,TACTA.Title,TACTA.StarRating,
        TACTA.FromDate,TACTA.ToDate,TACTA.RoomTypeStr,TACTA.XRefCityId ORDER BY TACTA.AccoSysId DESC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function GetSeletedHotelOnOverviewNew($tpitnID) {
        $sqlPackage = "SELECT AccoSysId,RoomTypeStr,Title,FromDate,ToDate,IsFromAPI,XRefCityId FROM TB_Agency_Customer_TravelPlan_Accom WHERE 
        TPIntSysId IN ($tpitnID) AND IsSelectedOnPkg = '1' group by AccoSysId,RoomTypeStr,Title,FromDate,ToDate,IsFromAPI,XRefCityId ORDER BY FromDate";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function GetSeletedHotelOnOverviewBYONew($tpitnID, $catID, $mpID = NULL) {
        $condmId = !empty($mpID) ? " AND TTIA.MealPlanType = $mpID " : " ";

        $sqlPackage = "SELECT AccoSysId,RoomTypeStr,TTIA.Title,FromDate,ToDate,IsFromAPI,XRefCityId, t4.Title as EconomyTypeTitle,t5.Title as MealPlanTypeTitle 
            FROM TB_TravelPlan_Itenary_Accom as TTIA
            LEFT JOIN TB_Master_RoomType t4 ON t4.RoomType = TTIA.RoomType
            LEFT JOIN TB_Master_Accom_MealType t5 ON t5.MealTypeId = TTIA.MealPlanType
            WHERE TPIntSysId IN ($tpitnID) AND IsSelectedOnPkg = '1'  AND t5.IsMarkForDel = '0' AND t5.IsActive = '1'  AND BYOPackType = $catID  $condmId
            group by AccoSysId,RoomTypeStr,TTIA.Title,FromDate,ToDate,IsFromAPI,XRefCityId,t4.Title,t5.Title ORDER BY FromDate";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function GetHotelOverview($tpitnID, $catID) {
        $sqlPackage = "SELECT AccoSysId,RoomTypeStr,Title,FromDate,ToDate,IsFromAPI,XRefCityId FROM TB_Agency_Customer_TravelPlan_Accom WHERE 
        TPIntSysId IN ($tpitnID) AND IsSelectedOnPkg = '1' AND BYOPackType = $catID  group by AccoSysId,RoomTypeStr,Title,FromDate,ToDate,IsFromAPI,XRefCityId ORDER BY FromDate";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function GetPackageTPDetailsByInventory($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 1);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetCityNameByID($cityID) {
        $select = $this->db->select();
        $city_array = array('Title');
        $select->from(array("TB_Master_Geo_City"), $city_array);
        $select->where('TB_Master_Geo_City.CityId = ?', $cityID);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetPackageCostSheetDetail($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.InvnItemSysId = ?', $tpintsysID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetApiFlightStop($invID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array("TB_Agency_Customer_TravelPlan_Air"));
    }

    public function GetHotelThumbImage($hotelid = null) {
        $sql = "select Top 1 Details from TB_IC_Accomdation_Images where AccomSysId = '$hotelid' and imgtype = 1 and IsActive=1 and IsMarkForDel=0";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetFlightItenaryWise($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $city = array('Title', 'CityId');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_Master_Geo_City"), "TACTA.DestPlaceSysId = TB_Master_Geo_City.CityId", $city);
        $select->where('TACTA.TPIntSysId IN (' . $tpintID . ')');
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFlightItenaryWiseBYO($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $city = array('Title', 'CityId');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"));
        $select->joinLeft(array("TB_Master_Geo_City"), "TTIA.DestPlaceSysId = TB_Master_Geo_City.CityId", $city);
        $select->where('TTIA.TPIntSysId IN (' . $tpintID . ')');
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTravelPlanItenaryID($tpsysID) {
        $select = $this->db->select();
        $tpintsysID = array('TPIntSysId', 'Cities');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $tpintsysID);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);

        return $result;
    }

    public function GetTravelPlanItenaryIDBYO($tpsysID) {
        $select = $this->db->select();
        $tpintsysID = array('TPIntSysId', 'Cities');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $tpintsysID);
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);

        return $result;
    }

    public function GetTravelPlanInfo($tpsysID) {
        $select = $this->db->select();
        $tpintsysID = array('*');
        $select->from(array("TB_TravelPlan"), $tpintsysID);
        $select->where('TB_TravelPlan.TPSysId = ?', $tpsysID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelPriceByAccomSysID($itnID, $catID, $accomsysID) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.TPIntSysId = ?', $itnID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.AccoSysId = ?', $accomsysID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedHotelPrice($TPIntSysId, $selectedaccmsysID, $catID, $roominfojson) {


        $hotelInfo = $this->GetHotelPriceByAccomSysID($TPIntSysId, $catID, $selectedaccmsysID);

        $roominfoarr = json_decode($roominfojson, 1);

        $totalhotelprice = 0;

        if (!empty($hotelInfo)) {

            for (
                    $k = 1;
                    $k <= count($roominfoarr);
                    $k++
            ) {
                if ($roominfoarr[$k]['Adult'] == 2) {
                    $totalhotelprice = $totalhotelprice + $hotelInfo['TotalCostDO'];
                }
                if ($roominfoarr[$k]['Adult'] == 1) {
                    $totalhotelprice = $totalhotelprice + $hotelInfo['TotalCostSO'];
                }
                if ($roominfoarr[$k]['Adult'] == 3) {
                    $totalhotelprice = $totalhotelprice + $hotelInfo['TotalCostSO'] + $hotelInfo['TotalCostDO'];
                }
                if ($roominfoarr[$k]['Child'] > 0) {
                    $bedtype = $roominfoarr[$k]['bedtype'];
                    if ($bedtype == "extrabed") {
                        $totalhotelprice = $totalhotelprice + $hotelInfo['TotalCostExtraBed'];
                    }
                    if ($bedtype == "withoutbed") {
                        $totalhotelprice = $totalhotelprice + $hotelInfo['TotalCostWithoutBed'];
                    }
                    if ($bedtype == "none") {
                        $totalhotelprice = $totalhotelprice;
                    }
                }
            }
        }
        return $totalhotelprice;
    }

    public function GetTravelPlanBYOItenaryID($tpsysID) {
        $select = $this->db->select();
        $tpintsysID = array('TPIntSysId', 'Cities');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $tpintsysID);
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);

        return $result;
    }

    public function getCountryIDByCity($intId) {
        $sql = " SELECT ContSysId  FROM TB_Master_Geo_City WHERE CityId = " . $intId;
        $rowset = $this->db->query($sql)->fetch();
        return $rowset['ContSysId'];
    }

    public function GetAssignedHotel($accomsysID, $itnID) {
        $select = $this->db->select();
        $tpintsysID = array('TPIntSysId');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $tpintsysID);
        $select->where('TACTA.AccoSysId = ?', $accomsysID);
        $select->where('TACTA.TPIntSysId = ?', $itnID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTravelPlanItenaryIDByCity($tpsysID, $cityname) {
        $select = $this->db->select();
        $tpintsysID = array('TPIntSysId', 'Cities');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $tpintsysID);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.Cities = ?', $cityname);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getHotelbyname($title) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_Accomdation"));
        $select->where("tbl.Title = ?", $title);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getHotelbynameAndCityId($title, $cityId) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_Accomdation"));
        $select->where("tbl.Title = ?", $title);
        $select->where("tbl.CitySysId = ?", $cityId);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getActivitybyname($title) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_Activity"));
        $select->where("tbl.Title = ?", $title);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetInventoryHotelBYO($accomsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_Accomdation"));
        $select->where("tbl.AccomSysId = ?", $accomsysID);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFreeChildInfo($invitemsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_MP_Inventory_Accom"));
        $select->where("tbl.InvnItemSysId = ?", $invitemsysID);
        $result = $this->db->fetchAll($select);
// echo $select;
        return $result;
    }

    public function getmarketplaceinventoryhotel($innvnitemsysID) {
        $select = $this->db->select();
//$travel_itenary = array('Title as packtitle','AccomSysId','Icon','Stars','RoomCounts','CitySysId','ICSourceSysId','Address','Brief' );
        $select->from(array('tb1' => "Tb_MP_Accomdation_Room_Inventory"), array('RoomSysId as EconomyType'));
        $select->joinInner(array('tb2' => 'TB_MP_Inventory_Accom'), 'tb2.RoomInventorySysId = tb1.id', array('*'));
//$select->joinLeft(array("TB_MP_Inventory_Accom"), "TB_IC_Accomdation.AccomSysId = TB_MP_Inventory_Accom.XRefAccoSysId");
        $select->where("tb2.InvnItemSysId = ?", $innvnitemsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

//getmarketplaceinventoryhotel($innvnitemsysID);

    public function getinventoryhotel($invID) {
        $select = $this->db->select();
        $travel_itenary = array('Title as packtitle', 'AccomSysId', 'Icon', 'Stars', 'RoomCounts', 'CitySysId', 'ICSourceSysId', 'Address', 'Brief');
        $select->from(array("TB_IC_Accomdation"), $travel_itenary);
        $select->joinLeft(array("TB_MP_Inventory_Accom"), "TB_IC_Accomdation.AccomSysId = TB_MP_Inventory_Accom.XRefAccoSysId");
        $select->where("TB_IC_Accomdation.AccomSysId = ?", $invID);

//echo $select;exit;

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getSightbyname($title, $SCityId = 0, $AgencySysId = 0) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_SightSeeing"));
        $select->where("tbl.Title = ?", $title);
        if ((int) $SCityId > 0) {
            $select->where("tbl.CitySysId = ?", (int) $SCityId);
        }
        if ((int) $AgencySysId > 0) {
            $select->where("tbl.ICSourceSysId = ?", (int) $AgencySysId);
        }
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getSightbySSID($ssID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_SightSeeing"));
        $select->where("tbl.SSSysId = ?", $ssID);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetCityMaskByCityID($cityID) {
        $select = $this->db->select();
        $selectedfields = array('CityCategoryMask');
        $select->from(array('tbl' => "TB_Master_Geo_City"), $selectedfields);
        $select->where("tbl.CityId = ?", $cityID);
        $select->where("tbl.IsMarkForDel = ?", 0);
        $select->where("tbl.IsActive = ?", 1);
//echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetCityMaskName($citymask) {
        $select = $this->db->select();
        $selectedfields = array('Title');
        $select->from(array('tbl' => "TB_Master_PlaceCatType"), $selectedfields);
        $select->Where('tbl.PlaceCatType IN ' . '(' . $citymask . ')');
//echo $select; die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetItenrayHotelByInventory($travelplanitenariID) {
        $select = $this->db->select();
        $selectedfields = array('Title as roomtypetitle');
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array('tb2' => "TB_IC_Supplier"), "tb2.SupplierSysId = tbl.SupplierSysId");
        $select->joinLeft(array('tb3' => "TB_Master_RoomType"), "tb3.RoomType = tbl.RoomType", $selectedfields);
        $select->where('tbl.TPIntSysId = ?', $travelplanitenariID);
        $select->where('tbl.IsFromAPI = ?', 0);
        $select->where('tbl.IsMarkForDel = ?', 0);
//echo $select;
//die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetItenrayHotelByInventoryBYO($travelplanitenariID, $catID) {
        $select = $this->db->select();
        $selectedfields = array('Title as roomtypetitle');
        $select->from(array('tbl' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array('tb2' => "TB_IC_Supplier"), "tb2.SupplierSysId = tbl.SupplierSysId");
        $select->joinLeft(array('tb3' => "TB_Master_RoomType"), "tb3.RoomType = tbl.RoomType", $selectedfields);
        $select->joinLeft(array('tb4' => 'TB_Master_Accom_MealType'), 'tb4.MealTypeId = tbl.MealPlanType', array("Title as MealPlanTypeTitle"));
        $select->joinLeft(array('t7' => 'TB_Master_Currency'), 't7.CurrencyType = tbl.CurrencyType', array('symbol'));
        $select->where('tbl.BYOPackType = ?', $catID);
        $select->where('tbl.TPIntSysId = ?', $travelplanitenariID);
        $select->where('tbl.IsFromAPI = ?', 0);
        $select->where('tbl.IsMarkForDel = ?', 0);
        $select->where('tb4.IsMarkForDel = ?', 0);
        $select->where('tb4.IsActive = ?', 1);
        $select->order("tbl.TotalCostDO ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetApiHotel($travelplanitenariID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array('tb2' => "TB_IC_Supplier"), "tb2.SupplierSysId = tbl.SupplierSysId");
        $select->where('tbl.TPIntSysId = ?', $travelplanitenariID);
        $select->where('tbl.IsFromAPI = ?', 1);
        $select->where('tbl.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetApiHotelStarRating($accomsysID) {
        $selectedvalues = array('Stars', 'AccoAminitiesMask');
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_IC_Accomdation_API"), $selectedvalues);
        $select->where('tbl.AccomSysId = ?', $accomsysID);
        $select->where('tbl.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelRoomNumber($itenaryID) {
        $select = $this->db->select();
        $selectedfields = array('RoomNumber');
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('tbl.TPIntSysId = ?', $itenaryID);
        $select->where('tbl.IsMarkForDel = ?', 0);

        $result = $this->db->fetchAll($select);
        return $result;
    }

//this function create by amit kumar dubey for fetching record order by inclid on 6 december 2016 at 1:06:PM
    public function getPackageInclusionListOrderById() {
        $sqlPackageIncl = "SELECT * 
                        FROM TB_Master_PackInclusion WHERE IsActive = '1' AND IsMarkForDel = '0' ORDER BY Title ASC";
        $resultPackageIncl = $this->db->query($sqlPackageIncl)->fetchAll();

        return $resultPackageIncl;
    }

    public function getMasking($varfromDb, $masterListingArr, $primaryKey) {
        $varfromDbArr = str_split(trim($varfromDb));
        $resultMask = array();
        $counter = 1;
//print_r($varfromDbArr);die;
        foreach ($masterListingArr as $value) {
            if (@$varfromDbArr[$counter] == 1) {
                $resultMask[$value[$primaryKey]] = $value;
            }
            $counter++;
        }
        return $resultMask;
    }

    public function getMaskingWithImage($varfromDb, $masterListingArr, $primaryKey) {
        $varfromDbArr = str_split(trim($varfromDb));
        $resultMask = array();
        $counter = 1;
        $inclusionMArray = [
            '1' => array('title' => 'Flight', 'icon' => 'key2.png'),
            '2' => array('title' => 'Hotel', 'icon' => 'key3.png'),
            '10' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '13' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '15' => array('title' => 'Sightseeing', 'icon' => 'key5.png'),
            '11' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '14' => array('title' => 'Sightseeing', 'icon' => 'key5.png'),
            '19' => array('title' => 'Visa', 'icon' => 'key9.png'),
            '22' => array('title' => 'Cruise', 'icon' => 'key10.png'),
            '30' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '33' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '35' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '50' => array('title' => 'Cruise', 'icon' => 'key10.png'),
            '20' => array('title' => 'Transfer', 'icon' => 'key4.png'),
            '57' => array('title' => 'Cruise', 'icon' => 'key10.png'),
        ];
        $totalInc = 0;
        foreach ($masterListingArr as $value) {
            if (@$varfromDbArr[$counter] == 1) {
                if (isset($inclusionMArray[$value['InclId']]) && $inclusionMArray[$value['InclId']] != '') {
                    $resultMask[$inclusionMArray[$value['InclId']]['icon']] = $inclusionMArray[$value['InclId']]['title'];
                }
                $totalInc++;
            }
            $counter++;
        }
        if ($totalInc > count($resultMask)) {
            $resultMask['key99.png'] = 'Others';
        }
        return $resultMask;
    }

    public function getCustTravelPackageActivityList($itn) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Itenary_Events"));
        $select->joinLeft(array('tb2' => "TB_IC_Activity"), "tbl.TPActivitySysId = tb2.ActivitySysId");
        $select->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tbl.CityId = tb3.CityId");
        $select->Where('tbl.TPIntSysId IN ' . '(' . $itn . ')');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCustPackageActivityListBySeq($packageId, $seq, $daily = NULL) {
        $dailyQ = empty($daily) ? '  top 1  ' : '';
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
                                               
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN (SELECT $dailyQ TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "'  AND Sequence = " . $seq . " )";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageSightseenListBySeq($packageId, $seq, $daily = NULL) {
        $dailyQ = empty($daily) ? '  top 1  ' : '';
        $sqlPackageActivity = "SELECT TACTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*
                        FROM TB_Agency_Customer_TravelPlan_SightSeeing as TACTS
						LEFT JOIN TB_IC_SightSeeing ON TACTS.SSSysId=TB_IC_SightSeeing.SSSysId
                                                
						WHERE TACTS.IsActive = '1' AND TACTS.IsMarkForDelete = '0' AND TACTS.InvnItemSysId IN (SELECT $dailyQ TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = " . $seq . ")";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerFlexiPackageFinalHotelsBYO($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_TravelPlan_Itenary_Accom WHERE IsActive = '1' AND IsMarkForDel = '0' AND TPIntSysId IN (SELECT TPIntSysId FROM TB_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerFlexiPackageFinalHotels($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_Accom WHERE IsActive = '1' AND IsMarkForDel = '0' AND TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerFlexiPackageFinalHotelsNew($packageId) {
        $sqlAllItenary = "SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = ?";
        $resultAllItenary = $this->db->query($sqlAllItenary, [$packageId])->fetchAll(PDO::FETCH_COLUMN); // Fetch as a simple array

        if (empty($resultAllItenary)) {
            return []; // No itinerary records, return empty array
        }
        $placeholders = implode(',', array_fill(0, count($resultAllItenary), '?')); // Create placeholders for IN clause
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_Accom 
                       WHERE IsActive = 1 AND IsMarkForDel = 0 AND IsSelectedOnPkg = 1 
                       AND TPIntSysId IN ($placeholders)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity, $resultAllItenary)->fetchAll();

        $expandedResult = [];

        foreach ($resultPackageActivity as $activity) {
            $startIndex = array_search($activity['TPIntSysId'], $resultAllItenary);

            if ($startIndex !== false) {
                $limit = min($activity['TotalNights'], count($resultAllItenary) - $startIndex); // Prevent out-of-bounds
                for (
                        $i = 0;
                        $i < $limit;
                        $i++
                ) {
                    $newEntry = $activity;
                    $newEntry['TPIntSysId'] = $resultAllItenary[$startIndex + $i];
                    $expandedResult[] = $newEntry;
                }
            }
        }

        return $expandedResult;
    }

    public function getCustomerFlexiPackageFullfilmentHotels($packageId, $TPIntSysId = null) {
        $sqlPackageActivity = "SELECT a.*, TB_IC_Accomdation.Address,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_IC_Accomdation.SecondaryContact FROM TB_Agency_Customer_TravelPlan_Accom_Fullfillment a LEFT JOIN  TB_IC_Accomdation ON a.AccoSysId = TB_IC_Accomdation.AccomSysId WHERE a.IsActive = '1' AND a.IsMarkForDel = '0' AND a.TPIntSysId IN ('" . $TPIntSysId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerFlexiPackageFinalHotelsForB2BOptinal($packageId) {


        $select = $this->db->select()->from(array("t1" => "TB_Agency_Customer_TravelPlan_Accom"), array("SeqId", "AccoSysId", "XRefCityId", "TotalCost", "MealPlanType", "AdultPax", "ChildPax", "InfantPax", "FromDate", "ToDate", "RoomType"))
                ->joinLeft(array('t2' => "TB_IC_Accomdation"), "t1.AccoSysId = t2.AccomSysId", array("Title as HotelName"))
                ->joinLeft(array('t3' => "TB_Master_Geo_City"), "t1.XRefCityId = t3.CityId", array("Title as cityName"))
//->joinLeft(array('t3' => "TB_Master_PaymentMediaType"), "t1.TrxPayMediaType = t3.PaymentMediaType",array("Title"))
//->joinLeft(array('t4' => "TB_Trx_Tax"), "t1.TrxSysId = t4.TrxSysId",array("AgencyTDS","XServiceTaxAmount","GTXServiceTaxAmount","AgentServiceTaxAmount","AgentsCustomServiceTaxAmount"))
//->joinLeft(array('t6' => "TB_Agency_Customer_TravelPlan"),"t5.TPSysId = t6.TPSysId",array("Readymade","IsHotelFromAPI"))
                ->where("t1.MasterIntSysId =?", $packageId)->where("t1.IsActive =?", 1)->where("t1.IsMarkForDel =?", 0)
                ->order("t1.FromDate ASC")
                ->order("t1.SeqId ASC");

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

// $sqlPackageActivity = "SELECT * FROM  WHERE IsActive = '1' AND  = '0' AND  MasterIntSysId = '".@$packageId."'";
//AND IsActive = '1' AND IsMarkForDel = '0'
//$resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();		        
        return $resultPackageActivity;
    }

//created by Er amit kumar dubey on 15 dec 2016 at 2:49PM for send pdf
    public function getCustPackageHotelsListPublic($packageId) {
        $sqlPackageActivity = "SELECT TACTA.*,TB_IC_Accomdation.Stars as Stars, TB_Master_RoomType.Title as RoomType,TB_IC_Supplier.SupplierName,TB_IC_Accomdation.GeoLat,TB_IC_Accomdation.GeoLong,TB_MP_Inventory_Accom.NetDOccupCost,
								TB_MP_Inventory_Accom.NetSOccupCost,TB_IC_Supplier.SupplierName as sname,TB_MP_Inventory_Accom.NetExtraBedCost,TB_MP_Inventory_Accom.NetExtraWOBedCost
								FROM TB_Agency_Customer_TravelPlan_Accom as TACTA
								INNER JOIN  TB_IC_Accomdation ON TACTA.AccoSysId = TB_IC_Accomdation.AccomSysId
								LEFT JOIN TB_MP_Inventory_Accom ON TACTA.XrefInvtSysId = TB_MP_Inventory_Accom.InvnItemSysId
								LEFT  JOIN  TB_IC_Supplier ON TACTA.SupplierSysId = TB_IC_Supplier.SupplierSysId
								LEFT  JOIN  TB_Master_Currency ON TACTA.CurrencyType = TB_Master_Currency.CurrencyType 
            					LEFT JOIN   TB_Master_RoomType ON TACTA.RoomType = TB_Master_RoomType.RoomType
								WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0' AND TACTA.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "')";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getPackagesItenId($packageIds = null, $seq = null, $cityId = null) {
        $sqlPackIten = "SELECT TPIntSysId,Sequence,CitySysId FROM TB_TravelPlan_Itenary WHERE IsMarkForDel = '0' AND IsActive = '1' AND TPSysId IN (" . @$packageIds . ") AND Sequence = '" . $seq . "' ";
        if (!empty($cityId)) {
            $sqlPackIten .= " AND CitySysId = $cityId";
        }
        $resultPackIten = $this->db->query($sqlPackIten)->fetchAll();
        return $resultPackIten;
    }

    public function GetFlightByItenary($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');

        $select->from(array("tb1" => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "tb1.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "tb1.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('tb1.TPIntSysId = ?', $tpintsysID);
        $select->where('tb1.IsSelectedOnPkg = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->order("tb1.Cost ASC");
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetFlightByItenaryBYO($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TTIA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TTIA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TTIA.TPIntSysId = ?', $tpintsysID);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->order("TTIA.Cost ASC");
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAirInfo($airinvnsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array("TB_IC_Trans_Air"));
        $select->where('TB_IC_Trans_Air.AirInvenSysId = ?', $airinvnsysID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAirInfoSourceByStop($airinvnsysID, $sourceID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array("TB_IC_Trans_Air_Stop"));
        $select->where('TB_IC_Trans_Air_Stop.AirInvenSysId = ?', $airinvnsysID);
        $select->where('TB_IC_Trans_Air_Stop.SourcePlaceSysId = ?', $sourceID);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAirInfoDestByStop($airinvnsysID, $destID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array("TB_IC_Trans_Air_Stop"));
        $select->where('TB_IC_Trans_Air_Stop.AirInvenSysId = ?', $airinvnsysID);
        $select->where('TB_IC_Trans_Air_Stop.DestPlaceSysId = ?', $destID);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedFlightByItenary($tpintsysID) {
        $travelplanitineraryID = '(' . $tpintsysID . ')';
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId IN ' . $travelplanitineraryID);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->order("TACTA.Cost ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAirportCode($apcode) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array("TB_Master_Airport"));
        $select->where('TB_Master_Airport.AirportCode = ?', $apcode);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedBYOHotel($itnID) {
        $select = $this->db->select();
        $travel_airline = array('XrefInvtSysId');
        $select->from(array('TACTC' => "TB_Agency_Customer_TravelPlan_CostSheet"));
        $select->joinInner(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), "TACTA.TPIntSysId = TACTC.TPIntSysId", $travel_airline);
        $select->where('TACTC.InventoryType = ?', 1);
        $select->where('TACTC.IsSelectedOnPkg = ?', 1);
        $select->where('TACTA.IsMarkForDel = ?', 0);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetItenaryIdOnly($itnID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Itenary"));
        $select->Where('tbl.TPSysId = ?', $itnID);
        $select->where('tbl.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetItenaryIdOnlyBYO($itnID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_TravelPlan_Itenary"));
        $select->Where('tbl.TPSysId = ?', $itnID);
        $select->where('tbl.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetOnlyMasterId($itnsysID) {
        $sql = "SELECT MasterIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE TPIntSysId IN ($itnsysID) AND IsSelectedOnPkg = '1' AND MasterIntSysId != 0";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetOnlyMasterIdBYO($itnsysID, $catID) {
        $sql = "SELECT MasterIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE TPIntSysId IN ($itnsysID) AND IsSelectedOnPkg = '1' AND MasterIntSysId != 0 AND BYOPackType = '" . $catID . "'";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetAllTPIntSysIdByVersionID($versionID, $tpintsysID) {
        $ismasterexist = $this->IsMasterExist($versionID);
        if ($ismasterexist['MasterIntSysId']) {
            $sql = "SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $ismasterexist['MasterIntSysId'] . "' OR MasterIntSysId = '" . $ismasterexist['MasterIntSysId'] . "') AND IsSelectedOnPkg = 1";
        } else {
            $sql = "SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        }
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetAllTPIntSysIdByVersionIDBYO($versionID, $tpintsysID) {
        $ismasterexist = $this->IsMasterExistBYO($versionID);
        if ($ismasterexist['MasterIntSysId']) {
            $sql = "SELECT TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $ismasterexist['MasterIntSysId'] . "' OR MasterIntSysId = '" . $ismasterexist['MasterIntSysId'] . "') AND IsSelectedOnPkg = 1";
        } else {
            $sql = "SELECT TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        }
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetAllTPIntSysIdByMasterID($tpintsysID) {
        $sql = "SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetAllTPIntSysIdByMasterIDBYO($tpintsysID) {
        $sql = "SELECT TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetHotelCostForCopyHotel($tpintsysID, $totaltraveler) {
        $sql = "SELECT TotalCost,TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        $result = $this->db->query($sql)->fetchAll();
        $totalhotelcount = count($result);
        $hotelInfo = $this->GetHotelCostByItenary($tpintsysID);
        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'] * $totalhotelcount;
        $hotelprice['perperson'] = ($hotelInfo['TotalCost'] * $totalhotelcount) / $totaltraveler;
//return $hotelprice;
        return $hotelprice;
    }

    public function GetHotelCostForCopyHotelBYO($tpintsysID, $totaltraveler, $catID) {
        $sql = "SELECT TotalCost,TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        $result = $this->db->query($sql)->fetchAll();
        $totalhotelcount = count($result);
        $hotelInfo = $this->GetHotelCostByItenaryBYO($tpintsysID, $catID);
        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'] * $totalhotelcount;
        $hotelprice['perperson'] = ($hotelInfo['TotalCost'] * $totalhotelcount) / $totaltraveler;
//return $hotelprice;
        return $hotelprice;
    }

    public function GetItenaryIdOnlyHotel($itnID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Itenary"));
        $select->joinInner(array('tb2' => "TB_Agency_Customer_TravelPlan_Accom"), "tb2.TPIntSysId = tbl.TPIntSysId");
        $select->Where('tbl.TPSysId = ?', $itnID);
        $select->where('tbl.IsMarkForDel = ?', 0);
        $select->where('tb2.IsSelectedOnPkg = ?', 1);

// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelsFromCostsheet($itnID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_CostSheet"));
        $select->Where('tbl.TPIntSysId = ?', $itnID);
        $select->where('tbl.InventoryType = ?', 1);
        $select->where('tbl.IsSelected = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelFromInv($tpintID, $accomsysID) {
        $select = $this->db->select();
        $travel_airline = array('Address', 'Stars');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Accomdation"), "TB_IC_Accomdation.AccomSysId = TACTA.AccoSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.AccoSysId != ?', $accomsysID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetChangeHotelFromInvByo($itnID, $accomsysID = NULL, $catID = 1) {
        $select = $this->db->select();
        $travel_airline = array('Address', 'Stars');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Accomdation"), "TB_IC_Accomdation.AccomSysId = TACTA.AccoSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $itnID);
        if (!empty($accomsysID)) {
            $select->where('TACTA.AccoSysId != ?', $accomsysID);
        }
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 0);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedHotel($tpintID) {
        $select = $this->db->select();
        $selectedfields = array('IsFromAPI');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedHotelPkg($tpintID, $catID) {
        $select = $this->db->select();
        $selectedfields = array('IsFromAPI');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedHotelBYO($tpintID, $catID) {
        $select = $this->db->select();
        $selectedfields = array('IsFromAPI');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"), $selectedfields);
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedAccomSysId($tpintID, $catID) {
        $select = $this->db->select();
        $selectedfields = array('InvnItemSysId');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"), $selectedfields);
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedPkgAccomSysId($tpintID, $catID) {
        $select = $this->db->select();
        $selectedfields = array('InvnItemSysId');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelValidity($invitemsysID) {
        $select = $this->db->select();
        $selectedfields = array('FromDate', 'ToDate');
        $select->from(array("TB_MP_Inventory_Accom"), $selectedfields);
        $select->where('TB_MP_Inventory_Accom.InvnItemSysId = ?', $invitemsysID);
        $select->where('TB_MP_Inventory_Accom.IsMarkForDelete = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPkgCityDesc($cityID) {
        $select = $this->db->select();
        $selectedfields = array('LongDesc');
        $select->from(array("TB_Master_Geo_City"), $selectedfields);
        $select->where('TB_Master_Geo_City.CityId = ?', $cityID);
        $select->where('TB_Master_Geo_City.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetActivityIcon($activtystr) {
        $sql = "SELECT Title, Icon FROM TB_Master_PackInclusion WHERE Title IN ($activtystr)";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function GetFlightFromInv($tpintsysId, $invitemsysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $transapi_stop = array('ArrivalTime', 'DepartureTime');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
// $select->joinLeft(array("TB_IC_Trans_API_Air_Stop"), "TB_IC_Trans_API_Air_Stop.TBQAirInvenSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId" , $transapi_stop);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysId);
        $select->where('TACTA.IsSelectedOnPkg = ?', 0);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFlightFromAPI($tpintsysId, $invitemsysID, $sourceplacesysID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $transapi_stop = array('ArrivalTime', 'DepartureTime');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
//$select->joinLeft(array("TB_IC_Trans_API_Air_Stop"), "TB_IC_Trans_API_Air_Stop.TBQAirInvenSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId" , $transapi_stop);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysId);
//$select->where('TB_IC_Trans_API_Air_Stop.SourcePlaceSysId = ?', $sourceplacesysID);
        $select->where('TACTA.IsSelectedOnPkg = ?', 0);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllAPIHotel($tpintsysId) {
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.TPIntSysId = ?', $tpintsysId);
        $select->where('TACTA.IsFromAPI = ?', 1);
        $select->where('TACTA.IsMarkForDel = ?', 0);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedFlight($invitemsysID, $tpintsysId, $versionID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $transapi_stop = array('ArrivalTime', 'DepartureTime');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->joinLeft(array("TB_IC_Trans_API_Air"), "TACTA.InvnItemSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId", $travel_airline);
//$select->joinLeft(array("TB_IC_Trans_API_Air_Stop"), "TB_IC_Trans_API_Air_Stop.TBQAirInvenSysId = TB_IC_Trans_API_Air.TBQAirInvenSysId" , $transapi_stop);
        $select->joinLeft(array("TB_Master_Airline"), "TACTA.AirlineSysId = TB_Master_Airline.AirlineSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintsysId);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);

        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function InsertSelectedHotelByo($tpintID, $catID, $MealTypeId = null) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTIA.SupplierSysId");
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        if (!empty($MealTypeId)) {
            $select->where('TTIA.MealPlanType = ?', $MealTypeId);
        } else {
//$select->where('TTIA.IsSelectedOnPkg = ?', 1);
        }


        $select->order("TTIA.TotalCost ASC");
        $selecteallresult = $this->db->fetchRow($select);
//$selecteallresult = $this->db->fetchAll($select);
//echo "<pre>";print_R($selecteallresult);//exit;
//echo $select;exit;
        if (empty($selecteallresult)) {
            $selectedresult = $this->GetAllHotelWithoutCostBYO($tpintID, $catID);
            $tpintsysID = $selectedresult['TPIntSysId'];
            $accomsysID = $selectedresult['AccoSysId'];
            $VersionId = $selectedresult['VersionId'];

            $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID);
            $updateData1 = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData1, $where); // Make all Zero Firest

            if (!empty($MealTypeId)) {
                $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId, 'MealPlanType = ? ' => $MealTypeId);
            } else {
                $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId);
            }

            $updateData = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData, $where);
        } else {
            $tpintsysID = $selecteallresult['TPIntSysId'];
            $accomsysID = $selecteallresult['AccoSysId'];
            $VersionId = $selecteallresult['VersionId'];

            $where = array('TPIntSysId = ? ' => $tpintsysID, 'BYOPackType = ? ' => $catID);
//$where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID);
            $updateData1 = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData1, $where); // Make all Zero Firest

            if (!empty($MealTypeId)) {
                $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId, 'MealPlanType = ? ' => $MealTypeId);
            } else {
                $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId);
            }
//echo "<pre>";print_r($where);exit;
            $updateData = array('IsSelectedOnPkg' => 1);
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData, $where);
        }
    }

    public function updateIsSelectedOnPkgHotelByoReverse($TPIntSysIdArr) {
        $TPIntSysIdArr = array_unique($TPIntSysIdArr);
        if (!empty($TPIntSysIdArr)) {
            $updateData = array('IsSelectedOnPkg' => '0');
            $where = array('TPIntSysId IN (?) ' => $TPIntSysIdArr, 'IsSelectedOnPkg =? ' => 1, 'IsActive =? ' => 1, 'IsMarkForDel =? ' => 0);
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData, $where);
        }
    }

    public function updateIsSelectedOnPkgHotelByo($tpintID, $catID, $totalnight = NULL, $MealTypeId = null) {
        $cond = $order = '';
        if (!empty($MealTypeId)) {
            $cond = " AND b.MealPlanType = $MealTypeId ";
            $order = " b.MealPlanType ASC, ";
        }
        $select = " select a.Sequence,b.SupplierSysId,b.VersionId,b.AccoSysId,b.RoomType,b.TPIntSysId,b.InvnItemSysId,b.Title,b.MealPlanType,b.TotalCost,b.BYOPackType,b.MasterIntSysId, b.XRefCityId 
from TB_TravelPlan_Itenary a
left Join TB_TravelPlan_Itenary_Accom b on a.TPIntSysId = b.TPIntSysId
where a.TPSysId = $tpintID AND a.IsActive = 1 AND a.IsMarkForDel = 0
AND b.IsActive = 1 AND b.IsMarkForDel = 0 AND b.BYOPackType = $catID  $cond order by b.TPIntSysId ASC, $order b.TotalCost ASC";
//     select VersionId,TPIntSysId,AccoSysId,RoomType,InvnItemSysId,Title,MealPlanType,TotalCost,BYOPackType,XRefCityId from TB_TravelPlan_Itenary_Accom 
//where TPIntSysId IN (select TPIntSysId From TB_TravelPlan_Itenary where TPSysId = $tpintID  AND IsActive = 1 AND IsMarkForDel = 0 ) AND IsActive = 1 AND IsMarkForDel = 0 AND BYOPackType = $catID  $cond
//order by TPIntSysId ASC,$order TotalCost ASC
        $selecteallresult = $this->db->query($select)->fetchAll();
//        echo '<pre>'; print_r($selecteallresult);echo '</pre>';
        $arrByItenId = array();
        foreach ($selecteallresult as $key => $selecteall) { //echo '<pre>'.$key; print_r($selecteall);echo '</pre>';
            $arrByItenId[$selecteall['TPIntSysId']] = $selecteall['MasterIntSysId'];
        }
        $arrByItenIdSingle = array();
        $incre = 0;
        foreach ($selecteallresult as $key => $selecteall) { //echo '<pre>'.$key; print_r($selecteall);echo '</pre>';
            $increCustom = $incre - 1;
            if ($incre == 0 || (($selecteallresult[$increCustom]['XRefCityId'] != $selecteall['XRefCityId']) || ($incre > 1 && empty($selecteall['MasterIntSysId'])))) { //echo '<pre>'.$selecteall['XRefCityId'].'--'; print_r($selecteallresult[$incre-1]['XRefCityId']);echo '</pre>';
                $arrByItenIdSingle[$selecteall['TPIntSysId']][] = array($selecteall['AccoSysId'], $selecteall['RoomType'], $selecteall['XRefCityId'], $selecteall['MealPlanType'], $selecteall['MasterIntSysId'], $selecteall['SupplierSysId']);
            }
            $incre++;
        }
//echo '<pre>'; print_r($arrByItenIdSingle); print_r($arrByItenId);echo '</pre>';  
        $increV = 1;
        $versionIdArr = array();
        foreach ($arrByItenId as $key => $selecteall) { //echo $increV; print_r($totalnight);echo '</br>';
//            if ($increV <= $totalnight) {
            $key1 = empty($arrByItenIdSingle[$key][0]) ? $key1 : $key;
//                $res =  empty($arrByItenIdSingle[$key1]) ? $arrByItenIdSingle[$key-1] : $arrByItenIdSingle[$key];
            $versionIdArr[$key] = $arrByItenIdSingle[$key1];
//            }
            $increV++;
        }




//        echo '<pre>'; print_r($versionIdArr);echo '</pre>';
        if (!empty($versionIdArr) && count($versionIdArr) > 0) {
            foreach ($versionIdArr as $itenId => $value) {
                $value = $value[0];
                $updateDataIsSel1 = array('IsSelectedOnPkg' => '1');
                $whereIsSel1 = array('TPIntSysId = ? ' => $itenId, 'AccoSysId = ? ' => $value[0], 'RoomType = ? ' => $value[1], 'BYOPackType =? ' => $catID, 'XRefCityId=?' => $value[2], 'MealPlanType = ?' => $value[3], 'SupplierSysId =?' => $value[5]);
//            echo '<pre>'; print_r($whereIsSel1);echo '</pre>';
                $this->db->update('TB_TravelPlan_Itenary_Accom', $updateDataIsSel1, $whereIsSel1);
            }
//       }
        }
    }

    public function updateIsSelectedOnPkgHotelByo_old($tpintID, $catID, $totalnight = NULL, $MealTypeId = null) {
        $cond = $order = '';
        if (!empty($MealTypeId)) {
            $cond = " AND MealPlanType = $MealTypeId ";
            $order = " MealPlanType ASC, ";
        }
        $select = "select VersionId,TPIntSysId,InvnItemSysId,Title,MealPlanType,TotalCost,BYOPackType from TB_TravelPlan_Itenary_Accom 
where TPIntSysId IN (select TPIntSysId From TB_TravelPlan_Itenary where TPSysId = $tpintID) AND IsActive = 1 AND IsMarkForDel = 0 AND BYOPackType = $catID  $cond
order by BYOPackType ASC,$order TotalCost ASC";
        $selecteallresult = $this->db->query($select)->fetchAll();

        $arrByItenId = array();
        foreach ($selecteallresult as $selecteall) {
            $arrByItenId[$selecteall['TPIntSysId']][] = $selecteall['VersionId'];
        }

        $i = 1;
        $versionIdArr = array();
        foreach ($arrByItenId as $key => $selecteall) { //print_r($selecteall);
            if ($i <= $totalnight) {
                $versionIdArr[$key] = $selecteall[0];
            }
            $i++;
        }

//echo '<pre>==$catID=='.$catID.'==$MealTypeId = '.$MealTypeId.'===';print_r(count($versionIdArr));echo '</pre>';
        if (!empty($versionIdArr) && count($versionIdArr) > 0) {
//           $TPIntSysIdArr = array_unique(array_column($selecteallresult, 'TPIntSysId'));
//           $updateData = array('IsSelectedOnPkg' => '0');
//            $where = array('TPIntSysId IN (?) ' => $TPIntSysIdArr, 'BYOPackType = ? ' => $catID, 'MealPlanType = ? ' => $MealTypeId, 'IsActive =? ' => 1, 'IsMarkForDel =? ' => 0 );
//            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateData, $where);

            $updateDataIsSel1 = array('IsSelectedOnPkg' => '1');
            $whereIsSel1 = array('VersionId IN (?)  ' => $versionIdArr);
            $this->db->update('TB_TravelPlan_Itenary_Accom', $updateDataIsSel1, $whereIsSel1);
        }
    }

    public function updateIsSelectedOnPkgHotelByo_Lowest($tpintID, $catID, $totalnight = NULL, $MealTypeId = null) {

        $select = " select a.Sequence,b.SupplierSysId,b.VersionId,b.AccoSysId,b.RoomType,b.TPIntSysId,b.InvnItemSysId,b.Title,b.MealPlanType,b.TotalCost,b.BYOPackType,b.MasterIntSysId, b.XRefCityId 
from TB_TravelPlan_Itenary a
left Join TB_TravelPlan_Itenary_Accom b on a.TPIntSysId = b.TPIntSysId
where a.TPSysId = $tpintID AND a.IsActive = 1 AND a.IsMarkForDel = 0
AND b.IsActive = 1 AND b.IsMarkForDel = 0 AND b.BYOPackType = $catID  order by b.TPIntSysId ASC,  b.TotalCost ASC";
//     select VersionId,TPIntSysId,AccoSysId,RoomType,InvnItemSysId,Title,MealPlanType,TotalCost,BYOPackType,XRefCityId from TB_TravelPlan_Itenary_Accom 
//where TPIntSysId IN (select TPIntSysId From TB_TravelPlan_Itenary where TPSysId = $tpintID  AND IsActive = 1 AND IsMarkForDel = 0 ) AND IsActive = 1 AND IsMarkForDel = 0 AND BYOPackType = $catID  $cond
//order by TPIntSysId ASC,$order TotalCost ASC
        $selecteallresult = $this->db->query($select)->fetchAll();
//        echo '<pre>'; print_r($selecteallresult);echo '</pre>';
        $arrByItenId = array();
        foreach ($selecteallresult as $key => $selecteall) { //echo '<pre>'.$key; print_r($selecteall);echo '</pre>';
            $arrByItenId[$selecteall['TPIntSysId']] = $selecteall['MasterIntSysId'];
        }
        $arrByItenIdSingle = array();
        $incre = 0;
        foreach ($selecteallresult as $key => $selecteall) { //echo '<pre>'.$key; print_r($selecteall);echo '</pre>';
            $increCustom = $incre - 1;
            if ($incre == 0 || (($selecteallresult[$increCustom]['XRefCityId'] != $selecteall['XRefCityId']) || ($incre > 1 && empty($selecteall['MasterIntSysId'])))) { //echo '<pre>'.$selecteall['XRefCityId'].'--'; print_r($selecteallresult[$incre-1]['XRefCityId']);echo '</pre>';
                $arrByItenIdSingle[$selecteall['TPIntSysId']][] = array($selecteall['AccoSysId'], $selecteall['RoomType'], $selecteall['XRefCityId'], $selecteall['MealPlanType'], $selecteall['MasterIntSysId'], $selecteall['SupplierSysId']);
            }
            $incre++;
        }
        $increV = 1;
        $versionIdArr = array();
        foreach ($arrByItenId as $key => $selecteall) { //echo $increV; print_r($totalnight);echo '</br>';
//            if ($increV <= $totalnight) {
            $key1 = empty($arrByItenIdSingle[$key][0]) ? $key1 : $key;
//                $res =  empty($arrByItenIdSingle[$key1]) ? $arrByItenIdSingle[$key-1] : $arrByItenIdSingle[$key];
            $versionIdArr[$key] = $arrByItenIdSingle[$key1];
//            }
            $increV++;
        }
        if (!empty($versionIdArr) && count($versionIdArr) > 0) {
            foreach ($versionIdArr as $itenId => $value) {
                $updateDataIsSel1 = array('IsSelectedOnPkg' => '1');
                $whereIsSel1 = array('TPIntSysId = ? ' => $itenId, 'AccoSysId = ? ' => $value[0][0], 'RoomType = ? ' => $value[0][1], 'BYOPackType =? ' => $catID, 'XRefCityId=?' => $value[0][2], 'MealPlanType = ?' => $value[0][3], 'SupplierSysId= ?' => $value[0][5]);
//            echo '<pre>'; print_r($whereIsSel1);echo '</pre>';
                $this->db->update('TB_TravelPlan_Itenary_Accom', $updateDataIsSel1, $whereIsSel1);
            }
        }
    }

    public function InsertSelectedHotel($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTA.SupplierSysId");
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $selecteallresult = $this->db->fetchAll($select);
        if (empty($selecteallresult)) {
            $selectedresult = $this->GetAllHotelWithoutCost($tpintID);
            $tpintsysID = $selectedresult['TPIntSysId'];
            $accomsysID = $selectedresult['AccoSysId'];
            $VersionId = $selectedresult['VersionId'];
            $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId);
            $updateData = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateData, $where);
        }
//}
    }

    public function InsertSelectedFlight($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $selecteallresult = $this->db->fetchAll($select);
        if (empty($selecteallresult)) {
            $selectedresult = $this->GetAllFlightWithoutCost($tpintID);
            $tpintsysID = $selectedresult['TPIntSysId'];
            $invnitemsysID = $selectedresult['InvnItemSysId'];
            $VersionId = $selectedresult['VersionId'];
            $where = array('TPIntSysId = ? ' => $tpintsysID, 'InvnItemSysId = ? ' => $invnitemsysID, 'VersionId = ? ' => $VersionId);
            $updateData = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Air', $updateData, $where);
        }
    }

    public function InsertSelectedFlightBYO($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"));
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $selecteallresult = $this->db->fetchAll($select);
        if (empty($selecteallresult)) {
            $selectedresult = $this->GetAllFlightWithoutCostBYO($tpintID);
            $tpintsysID = $selectedresult['TPIntSysId'];
            $invnitemsysID = $selectedresult['InvnItemSysId'];
            $VersionId = $selectedresult['VersionId'];
            $where = array('TPIntSysId = ? ' => $tpintsysID, 'InvnItemSysId = ? ' => $invnitemsysID, 'VersionId = ? ' => $VersionId);
            $updateData = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_TravelPlan_Itenary_Air', $updateData, $where);
        }
    }

    public function GetAllFlightWithoutCost($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->order("TACTA.Cost ASC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllFlightWithoutCostBYO($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Air"));
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->order("TTIA.Cost ASC");
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllHotelWithoutCost($tpintID) {
        $select = $this->db->select();
        $travel_airline = array('*');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->order("TACTA.TotalCost ASC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllHotelWithoutCostBYO($tpintID, $catID) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->order("TTIA.TotalCost ASC");

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function updatemarketplace($updateData, $updatewhere, $tpsysID) {
        $updatewhere = array('TPIntSysId = ? ' => $tpsysID);
        $updateData = array('IsMarkForDel' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $updateData, $updatewhere);
    }

    public function UpdateFlightSelection($InvsystemID, $VersionId, $tpintsysID, $tpsysID) {
######## UPDATE FLIGHT DATA ##########
        $updatewhere = array('TPIntSysId = ? ' => $tpintsysID);
        $updateData = array('IsSelectedOnPkg' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan_Air', $updateData, $updatewhere);
        $where = array('TPIntSysId = ? ' => $tpintsysID, 'VersionId = ? ' => $VersionId);
        $data = array('IsSelectedOnPkg' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_Air', $data, $where);
######## UPDATE FLIGHT DATA END ##########
        $itenaryid = $this->GetItenaryIdOnly($tpsysID);
######## CALCULATE NEW COST FOR FLIGHT ###########
        $soprice = 0;
        $doprice = 0;
        $toprice = 0;
        $flightprice = 0;
        $activityprice = 0;
        $sightseeingprice = 0;
        $costextrabed = 0;
        $costwithoutbed = 0;
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $flightcost = $this->GetFlightByItenary($itenaryid[$i]['TPIntSysId']);
            $flightprice = $flightprice + $flightcost['Cost'];
        }
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $select = $this->db->select();
            $travel_airline = array('*');
            $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
            $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTA.SupplierSysId");
            $select->where('TACTA.TPIntSysId = ?', $itenaryid[$i]['TPIntSysId']);
            $select->where('TACTA.IsMarkForDel = ?', 0);
            $select->where('TACTA.IsSelectedOnPkg = ?', 1);
            $result = $this->db->fetchRow($select);
            if ($result['IsFromAPI'] == 1) {
                $soprice = $soprice + $result['TotalCost'];
                $doprice = $doprice + $result['TotalCost'];
                $toprice = $toprice + $result['TotalCost'];
                $costextrabed = $costextrabed + $result['TotalCost'];
                $costwithoutbed = $costwithoutbed + $result['TotalCost'];
            } else {
                $soprice = $soprice + $result['TotalCostSO'];
                $doprice = $doprice + $result['TotalCostDO'];
                $toprice = $toprice + $result['TotalCostTO'];
                $costextrabed = $costextrabed + $result['TotalCostExtraBed'];
                $costwithoutbed = $costwithoutbed + $result['TotalCostWithoutBed'];
            }
        }
        $activitycost = $this->GetOnlyCustPackageActivityList($tpsysID);

        for (
                $j = 0;
                $j < count($activitycost);
                $j++
        ) {
            $activityprice = $activityprice + $activitycost[$j]['Cost'];
        }
        $sighseeingcost = $this->getCustPackageSightseenList($tpsysID);
        for (
                $k = 0;
                $k < count($sighseeingcost);
                $k++
        ) {
            if ($sighseeingcost[$k]['Type'] == 'Included') {
                $sightseeingprice = $sightseeingprice + $sighseeingcost[$k]['Cost'];
            }
        }

        $singleocuupencycost = $soprice + $flightprice + $activityprice + $sightseeingprice;
        $doubleocuupencycost = $doprice + $flightprice + $activityprice + $sightseeingprice;
        $costwithbed = $costextrabed + $flightprice + $activityprice + $sightseeingprice;
        $costwobedprice = $costwithoutbed + $flightprice + $activityprice + $sightseeingprice;
######## CALCULATE NEW COST FOR FLIGHT END ###########
        $getmarketwiserate = $this->GetMarketWiseRate($tpsysID);

        for (
                $i = 0;
                $i < count($getmarketwiserate);
                $i++
        ) {
            if ($getmarketwiserate[$i]['MarkType'] == 'FixedAmount') {
                $getmarkupprice = $getmarketwiserate[$i]['MarkPercent'];
                $CostPPSO = $singleocuupencycost + $getmarkupprice;
                $CostPPDO = $doubleocuupencycost + $getmarkupprice;
                $CostExtraBed = $costwithbed + $getmarkupprice;
                $CostChildWithoutBed = $costwobedprice + $getmarkupprice;
            }
            $createdDate = date('Y-m-d');
            $marketwiserate = array(
                'TPIntSysId' => $tpsysID,
                'AgencySysId' => $getmarketwiserate[$i]['AgencySysId'],
                'FromDate' => $getmarketwiserate[$i]['FromDate'],
                'ToDate' => $getmarketwiserate[$i]['ToDate'],
                'CurrencyType' => $getmarketwiserate[$i]['CurrencyType'],
                'MarkType' => $getmarketwiserate[$i]['MarkType'],
                'MarketPlaceId' => $getmarketwiserate[$i]['MarketPlaceId'],
                'MarketPlace' => $getmarketwiserate[$i]['MarketPlace'],
                'Permission' => $getmarketwiserate[$i]['Permission'],
                'MarkPercent' => $getmarketwiserate[$i]['MarkPercent'],
                'CostPPSO' => $CostPPSO,
                'CostPPDO' => $CostPPDO,
                'CostPPTO' => $getmarketwiserate[$i]['CostPPTO'],
                'CostExtraBed' => $CostExtraBed,
                'CostChildWithoutBed' => $CostChildWithoutBed,
                'Tax' => $getmarketwiserate[$i]['Tax'],
                'TDS' => $getmarketwiserate[$i]['TDS'],
                'ExcludedPercent' => $getmarketwiserate[$i]['ExcludedPercent'],
                'CreateDate' => $createdDate,
                'UpdateDate' => $createdDate,
                'IsMarkForDel' => 0,
                'IsActive' => 1
            );
            $ratewhere = array('TPIntSysId = ? ' => $tpsysID);
            $ratedata = array('IsMarkForDel' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $ratedata, $ratewhere);

            $this->db->insert('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $marketwiserate);
            $response = array('success' => true, 'msg' => 'Success');
            echo json_encode($response);
        }
    }

    public function ChangeHotelPrice($tpintsysID, $tpsysID, $finalcost) {
        $roominfoarr = $this->getroominfo($tpsysID);
        $roominfoarray = json_decode($roominfoarr[0]['RoomInfoJson'], 1);
        $maketwiserate = $this->GetMarketWiseRate($tpsysID);
        $getitenraywsiedata = $this->GetHotelByItenary($tpintsysID);
        $totalcost = $getitenraywsiedata['TotalCost'];
        $markuppricetotalcost = $maketwiserate[0]['TotalCost'];
        $grandtotal = $totalcost + $markuppricetotalcost;
        echo $grandtotal;
    }

    public function getroominfo($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('RoomInfoJson');
        $select->from(array('TACT' => "TB_Agency_Customer_TravelPlan"), $selectedfields);
        $select->where('TACT.TPSysId = ?', $tpsysID);
        $select->where('TACT.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMasterMPType() {
        $select = $this->db->select();
        $selectedfields = array('MPType', 'Title');
        $select->from(array("TB_Master_MPType"), $selectedfields);
        $result = $this->db->fetchAll($select);
//echo $select;
        return $result;
    }

    public function addCustomerTravelPlanByoAir(array $data) {
        $this->_custtravelAirObj->insert($data);
        $lastID = $this->_dbObj->lastInsertId();
        return $lastID;
    }

    public function ChkTPRateSysId($tpsysID, $mpsysID, $IsMarkForDel = 1) {
        $select = $this->db->select();
        $selectedfields = array('TPRateSheetSysId');
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"), $selectedfields);
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.MarketPlaceId = ?', $mpsysID);
        if ($IsMarkForDel == 1) {
            $select->where('TTMR.IsMarkForDel = ?', 0);
        }

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllPkgCategoryPrice($tpsysID, $catID, $numberoftraveler, $adultPax, $childPax, $totaltraveler, $MealTypeId = null, $ItenArray = NULL) {
        $pkgcatID = $catID;
        $travelerinfo = $numberoftraveler;
        $adultcount = $adultPax;
        $childcount = $childPax;
        $totnumtraveler = $totaltraveler;
        $totaloptionalsscost = 0;
        $totaloptionalactcost = 0;
        if (empty($ItenArray)) {
            $ItenArray = $this->GetTravelPlanBYOItenaryID($tpsysID);
        }
####### Price Per Person Cost Calculated For Hotels Based on Category ############
        $hotelprice = array();
        $hotelcatprice = array();
//      echo '<pre>'; print_r($ItenArray);die;
//      for($i=0;$i<count($ItenArray);$i++){
        foreach ($itnarray as $intsysId => $itenArray) {
            $hotelprice[] = $this->GetHotelCostBYOPP($intsysId, $travelerinfo, $adultcount, $childcount, $totnumtraveler, $pkgcatID, $MealTypeId);
            $hotelcatprice[$pkgcatID] = array_sum($hotelprice);
        }

        return $hotelcatprice;
    }

    public function GetMarketPlaceNameByID($id) {
        $select = $this->db->select();
        $selectedfields = array('*');
        $select->from(array("TB_Master_MPType"), $selectedfields);
        $select->where('TB_Master_MPType.MPType = ?', $id);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMarketWisePvtRateBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('MarketPlaceId', 'TourType', 'PackCategoryId', 'MealPlanType', 'CostPerPerson', 'MarkPercent', 'PricePerPerson', 'MarkType', 'FixedDepartureInventory', 'FixedInvnSysId', 'FromDate');
        $select->from(array("TB_TravelPlan_MarketWise_Rate"), $selectedfields);
        $select->where('TPIntSysId = ?', $tpsysID);
        $select->where('IsActive = ?', '1');
        $select->where('IsMarkForDel = ?', 0);
        $select->order("FromDate ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWisePvtGroupBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('*');
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"), $selectedfields);
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.TourType = ?', 2);
        $select->where('TTMR.IsActive = ?', '1');
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function CheckMarketWisePvtGroupBYO($tpsysID, $MarkType) {
        $select = $this->db->select();
        $selectedfields = array('TPRateSheetSysId', 'TPIntSysId');
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"), $selectedfields);
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.MarketPlaceId = ?', $MarkType);
        $select->where('TTMR.IsActive = ?', '1');
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetOtherPrice($tpsysID, $adultPax, $childPax, $groupsize) {
        $activitylist = $this->GetOnlyCustPackageActivityListBYO($tpsysID);
        $totalactivitycost = 0;
        $totalsscost = 0;
        $totaltraveler = $adultPax + $childPax;
        for (
                $i = 0;
                $i < count($activitylist);
                $i++
        ) {
            $totalactivitycost = $totalactivitycost + $activitylist[$i]['TotalCost'];
        }
        $totalactivitycostpp = $totalactivitycost / $totaltraveler;
// echo $totalactivitycost;
        $sslist = $this->getIncludedPackageSightseenList($tpsysID);

        for (
                $i = 0;
                $i < count($sslist);
                $i++
        ) {
            $totalsscost = $totalsscost + $sslist[$i]['TotalCost'];
        }
        $totalsscostpp = $totalsscost / $totaltraveler;
        $getalltransport = $this->GetAllTransportTypeBYO($tpsysID);
        $totalprivatecost = 0;
        for (
                $m = 0;
                $m < count($getalltransport);
                $m++
        ) {
            if ($getalltransport[$m]['TransType'] != 'car') {
                $totalprivatecost = $totalprivatecost + $getalltransport[$m]['CostPerson'];
            }
            if ($getalltransport[$m]['TransType'] == 'car') {
                $totalprivatecost = $totalprivatecost + ($getalltransport[$m]['CostPerson']);
            }
        }

        $totalothercost = 0;
        $getallgrouptransport = $this->GetAllTransportTypeBYOWithoutCar($tpsysID);

        for (
                $p = 0;
                $p < count($getallgrouptransport);
                $p++
        ) {
            $totalothercost = $totalothercost + $getallgrouptransport[$p]['CostPerson'];
        }
// echo $totalothercost;
        $getgroupwisecost = $this->GetGroupTransport($tpsysID);
//echo $groupsize.'dddddddd';
        $totalgrpcost = round($totalgrpcost + ($getgroupwisecost['TotalPrice'] / $groupsize));
        $othercost = array();
        $othercost['pvt'] = $totalactivitycostpp + $totalsscostpp + $totalprivatecost;
        $othercost['grp'] = $totalactivitycostpp + $totalsscostpp + $totalothercost + $totalgrpcost;
        $othercost['totalactcost'] = $totalactivitycost;
        $othercost['totalsscost'] = $totalsscost;
        return $othercost;
    }

    public function GetGroupTransport($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('TotalPrice', 'Capacity');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsGroup = ?', '1');
        $select->where('TTTF.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetGroupTransportReadyMade($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('TotalPrice', 'Capacity');
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'car');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsGroup = ?', '1');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllGroupTransport($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('TotalPrice', 'Capacity', 'TransTypeCat');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsGroup = ?', '1');
        $select->where('TTTF.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getroominforeadymade($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array('RoomInfoJson');
        $select->from(array("TB_TravelPlan"), $selectedfields);
        $select->where('TB_TravelPlan.TPSysId = ?', $tpsysID);
        $select->where('TB_TravelPlan.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function UpdateOptionalActivity($versionID, $tpintsysID, $tpsysID, $adult, $child, $totaltraveler, $roominfojson, $txt, $catID) {

        $updatewhere = array('VersionId = ? ' => $versionID);
        if ($txt == "Include") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Exclude") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_Itenary_Events', $updateData, $updatewhere);
        if ($updatequery) {
//echo "Activity Updated";
            $this->UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
        }
    }

    public function UpdateOptionalBYOActivity($TPIntSysId, $tpsysID, $actID, $adult, $child, $totaltraveler, $roominfojson, $txt, $catID) {


        $updatewhere = array('TPIntSysId = ? ' => $TPIntSysId, 'TPActivitySysId = ? ' => $actID);
        if ($txt == "Include") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Exclude") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_Itenary_Events', $updateData, $updatewhere);
//if($updatequery){
//echo "Activity Updated";
        $this->UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
//}
    }

    public function UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID) {

//       print_r($roominfojson);
        $getmarketwiseratebycatID = $this->GetAllMarketWiseRateReadyMade($tpsysID, $catID);
        if ($getmarketwiseratebycatID[0]['Tax'] == "Included") {
            $taxvlaue = 0;
        } else {
            $taxvlaue = $getmarketwiseratebycatID[0]['ExcludedPercent'];
        }
        if ($getmarketwiseratebycatID[0]['MarkType'] == "2") {
            $markupvalue = $getmarketwiseratebycatID[0]['MarkPercent'];
            $markuptype = "percentage";
        } else {
            $markupvalue = $getmarketwiseratebycatID[0]['MarkPercent'];
            $markuptype = "fixed";
        }

        $totalprivatecost = 0;
        $numberoftraveler = $totaltraveler;
        $adultPax = $adult;
        $childPax = $child;
        $tpID = $this->GetTravelPlanItenaryID($tpsysID);
####### Price Per Person Cost Calculated For Hotels Based on Category ############
        $hotelprice = array();
        $hotelcatprice = array();

        for (
                $i = 0;
                $i < count($tpID);
                $i++
        ) {
            $intsysId = $tpID[$i]['TPIntSysId'];
            $hotelprice[] = $this->GetHotelPriceReadyMade($intsysId, $roominfojson, $catID);
//$hotelcatprice[$catID] = array_sum($hotelprice);
        }
        $totalhotelprice = array_sum($hotelprice);

        $hotelpriceperson = $totalhotelprice / $totaltraveler;

################# Calculation of Activity Cost #######################
        $activitylist = $this->GetActivityListReadyMade($tpsysID);
        $totalactivitycost = 0;
        $totalsscost = 0;
        $totaltraveler = $adultPax + $childPax;

        $totactcost = 0;
        $totoptactcost = 0;
        for (
                $i = 0;
                $i < count($activitylist);
                $i++
        ) {
            if ($activitylist[$i]['IsOptionalActivity'] == "1") {
                $adultcost = $activitylist[$i]['Cost'];
                $kidscost = $activitylist[$i]['KidsCost'];
                $totoptactcost = $totoptactcost + ($adult * $adultcost) + ($child * $kidscost);
            }
//if($activitylist[$i]['Type'] == "Included"){
            $adultcost = $activitylist[$i]['Cost'];
            $kidscost = $activitylist[$i]['KidsCost'];
            $totactcost = $totactcost + ($adult * $adultcost) + ($child * $kidscost);
// $totalactivitycost = $totalactivitycost+$totactcost;
//}
        }
        $totalactivitycostpp = $totactcost / $totaltraveler;
        $totalactcost = $totactcost;

################# Calculation End For Activity Cost #######################
################# Calculation of Sight Seeing Cost #######################

        $sslist = $this->getCustPackageSightseenList($tpsysID);

        for (
                $i = 0;
                $i < count($sslist);
                $i++
        ) {
            if ($sslist[$i]['Type'] == 'Included') {
                $adultsscost = $sslist[$i]['Cost'];
                $kidssscost = $sslist[$i]['KidsCost'];
                $totalcost = ($adult * $adultsscost) + ($child * $kidssscost);
                $totalsscost = $totalsscost + $totalcost;
            }
        }
        $totalsscostpp = $totalsscost / $totaltraveler;
        $totalsightseeingcost = $totalsscost;

        $totalparticularprice = $totalhotelprice + $totalactcost + $totalsightseeingcost;

        $totalparticularpriceperperson = $hotelpriceperson + $totalactivitycostpp + $totalsscostpp;

//      echo $totalparticularprice.'$totalhotelprice ='.$totalhotelprice.'$totalactcost ='.$totalactcost.'$totalsightseeingcost='.$totalsightseeingcost.'</br>';
//       echo $totalparticularpriceperperson.'$hotelpriceperson ='.$hotelpriceperson.'$totalactivitycostpp ='.$totalactivitycostpp.'$totalsscostpp='.$totalsscostpp.'</br>'; die;
//       

        $getalltransport = $this->GetAllTransportTypeReadyMade($tpsysID);
        $totalprivatecostperperson = 0;
        $totalprivatecost = 0;
        for (
                $m = 0;
                $m < count($getalltransport);
                $m++
        ) {
            $totalprivatecostperperson = $totalprivatecostperperson + $getalltransport[$m]['CostPerson'];
            $totalprivatecost = $totalprivatecost + $getalltransport[$m]['TotalPrice'];
        }


        $totalgrpcostpp = 0;
        $totalgrpcost = 0;
        $getallgrouptransport = $this->GetAllGroupCostWithoutCar($tpsysID);
//        for ($m = 0; $m<count($getallgrouptransport); $m++) {
//          //if($getalltransport[$m]['TransType'] != 'car'){
//            $totalgrpcostpp = $totalgrpcostpp+$getallgrouptransport[$m]['CostPerson']; 
//            $totalgrpcost = $totalgrpcost+$getallgrouptransport[$m]['TotalPrice']; 
//       // }
//      }
        $totalprivatecostperpersonwoc = 0;
        $totalCarCost = 0;
        for (
                $m = 0;
                $m < count($getalltransport);
                $m++
        ) {
//          $totalprivatecostperperson = $totalprivatecostperperson+$getalltransport[$m]['CostPerson'];
            if ($getalltransport[$m]['TransType'] == 'car') {
                $totalCarCost = $totalCarCost + $getalltransport[$m]['TotalPrice'];
            } else {
                $totalprivatecostperpersonwoc = $totalprivatecostperpersonwoc + $getalltransport[$m]['CostPerson'];
            }
// $totalprivatecost = $totalprivatecost+$getalltransport[$m]['TotalPrice'];
        }
        $totalprivatecost = ($totalprivatecostperpersonwoc * $totaltraveler) + ($totalCarCost);
        $totalprivatecostperperson = $totalprivatecost / $totaltraveler;
//           echo $totalhotelprice.'</br>'.$totalactcost.'</br>'.$totalsightseeingcost.'</br>'.$totalprivatecost;


        $getgroupwisecost = $this->GetGroupTransportReadyMade($tpsysID);
        $getgroupsize = $this->Getpkggroupsize($tpsysID);

        $totalgrpcostpp = round($totalgrpcostpp + (($getgroupsize['GroupSize'] > 0) ? $getgroupwisecost['TotalPrice'] / $getgroupsize['GroupSize'] : 0));
        $totalgrpcost = $totalgrpcost + $getgroupwisecost['TotalPrice'];
        $getotherservices = $this->GetPackageOtherServices($tpsysID);

        $othertotalcost = 0;
        for (
                $j = 0;
                $j < count($getotherservices);
                $j++
        ) {
            $othertotalcost = $othertotalcost + $getotherservices[$j]['Cost'];
        }



        $pvtcostpp = $totalprivatecostperperson + $totalparticularpriceperperson + $othertotalcost;
        $grpcostpp = $totalgrpcostpp + $totalparticularpriceperperson + $othertotalcost;

//echo $pvtcostpp;

        $pvtcosttotal = $totalparticularprice + $totalprivatecost + $othertotalcost;
        $grpcosttoal = $totalparticularprice + $totalgrpcost + $othertotalcost;

        $created_date = date('Y-m-d');
        $updatewhere = array('TPIntSysId = ? ' => $tpsysID, 'PackCategoryId = ? ' => $catID);
        $updateData = array("IsMarkForDel" => 1);
        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $updateData, $updatewhere);

        for (
                $j = 0;
                $j < count($getmarketwiseratebycatID);
                $j++
        ) {
            if ($getmarketwiseratebycatID[$j]["TourType"] == "1") {
                $costperperson = $pvtcostpp;
                if ($markuptype == "fixed") {
                    $totalcostpp = $pvtcostpp + $markupvalue;
                    $totalpkgprice = $pvtcosttotal;
                    $totalpkgstandardprice = $pvtcosttotal + $markupvalue - $totaloptactper;
                    $priceperperson = $pvtcostpp + $getmarketwiseratebycatID[$j]['MarkPercent'];
                }
                if ($markuptype == "percentage") {
                    $costwithmarkup = ($pvtcostpp * $getmarketwiseratebycatID[$j]['MarkPercent']) / 100;
                    $totalcostpp = $pvtcostpp + $costwithmarkup;
                    $totalpkgprice = $pvtcosttotal;
//echo $totalpkgprice;
//echo '<br/>';
                    $priceperpersonmarkup = ($pvtcostpp * $getmarketwiseratebycatID[$j]['MarkPercent']) / 100;
                    $priceperperson = $pvtcostpp + $priceperpersonmarkup;
                    $totalcostwithmarkup = ($totalpkgprice * $getmarketwiseratebycatID[$j]['MarkPercent']) / 100;
//echo $totalcostwithmarkup;
//echo '<br/>';
                    $totalpkgstandardprice = $pvtcosttotal + $totalcostwithmarkup;
                }
                $pkgpriceperson = $pvtcostpp;
                $totalpkgprice = $pvtcosttotal;
            }

            if ($getmarketwiseratebycatID[$j]["TourType"] == "2") {
                $costperperson = $grpcostpp;
                if ($markuptype == "fixed") {
                    $totalcostgrppp = $grpcostpp + $getmarketwiseratebycatID[$j]['MarkPercent'];
                    $totalpkgprice = $grpcosttoal;
                    $priceperperson = $grpcostpp + $getmarketwiseratebycatID[$j]['MarkPercent'];
                }
                if ($markuptype == "percentage") {
                    $costwithmarkup = ($grpcostpp * $getmarketwiseratebycatID[$j]['MarkPercent']) / 100;
                    $totalcostpp = $grpcostpp + $costwithmarkup;
                    $totalpkgprice = $grpcosttoal;
                    $priceperpersonmarkup = ($grpcostpp * $getmarketwiseratebycatID[$j]['MarkPercent']) / 100;
                    $priceperperson = $grpcostpp + $priceperpersonmarkup;
                }

                $pkgpriceperson = $grpcostpp;
                $totalpkgprice = $grpcosttoal;
            }

            $marketprice = array(
                "TPIntSysId" => $tpsysID,
                "AgencySysId" => $getmarketwiseratebycatID[$j]["AgencySysId"],
                "FromDate" => $getmarketwiseratebycatID[$j]["FromDate"]->format('Y-m-d'),
                "ToDate" => $getmarketwiseratebycatID[$j]["ToDate"]->format('Y-m-d'),
                "CurrencyType" => $getmarketwiseratebycatID[$j]["CurrencyType"],
                "TourType" => $getmarketwiseratebycatID[$j]["TourType"],
                "PackCategoryId" => $getmarketwiseratebycatID[$j]["PackCategoryId"],
                "MarkType" => $getmarketwiseratebycatID[$j]["MarkType"],
                "MarketPlaceId" => $getmarketwiseratebycatID[$j]["MarketPlaceId"],
                "MarketPlace" => $getmarketwiseratebycatID[$j]["MarketPlace"],
                "Permission" => $getmarketwiseratebycatID[$j]["Permission"],
                "MarkPercent" => $getmarketwiseratebycatID[$j]["MarkPercent"],
                "TotalCost" => $totalpkgprice,
                "CostPerPerson" => $pkgpriceperson,
                "CostPPSO" => $getmarketwiseratebycatID[$j]["CostPPSO"],
                "CostPPDO" => $getmarketwiseratebycatID[$j]["CostPPDO"],
                //                "CostPPTO" => $getmarketwiseratebycatID[$j]["CostPPTO"],
                "PricePerPerson" => $priceperperson,
                "CostExtraBed" => $getmarketwiseratebycatID[$j]["CostExtraBed"],
                "CostChildWithoutBed" => $getmarketwiseratebycatID[$j]["CostChildWithoutBed"],
                "Tax" => $getmarketwiseratebycatID[$j]["Tax"],
                "ExcludedPercent" => $getmarketwiseratebycatID[$j]["ExcludedPercent"],
                "CreateDate" => $created_date,
                "UpdateDate" => $created_date,
                "IsMarkForDel" => $getmarketwiseratebycatID[$j]["IsMarkForDel"],
                "IsActive" => $getmarketwiseratebycatID[$j]["IsActive"]
            );

            $this->db->insert('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $marketprice);
        }

        $response = array('success' => true, 'msg' => 'Success', 'totalpkgprice' => $totalpkgstandardprice, 'roomjson' => base64_encode($roominfojson));
        echo json_encode($response);
    }

    /*
     * This is used to display cost after changing travelers. on pkgVIew (only calculation)
     */

    public function GetBYOPackagePrice($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID, $discount = 0, $tourID = 0, $mealID = null, $IsB2BCustomer = NULL) {

        $tpID = $this->GetTravelPlanBYOItenaryID($tpsysID);
####### Price Per Person Cost Calculated For Hotels Based on Category ############
        $hotelprice = array();
        for (
                $i = 0;
                $i < count($tpID);
                $i++
        ) {
            $intsysId = $tpID[$i]['TPIntSysId'];
            $hotelprice[] = $this->GetHotelPriceBYO($intsysId, $roominfojson, $catID, $mealID);
        }
//echo "<pre>";print_r($tpID);print_r($hotelprice);
//print_r($hotelprice);
        $totalhotelprice = array_sum($hotelprice);
        $hotelpriceperson = $totalhotelprice / $totaltraveler;

################# Calculation of Activity Cost #######################
        $activitylist = $this->GetOnlyCustPackageActivityListBYO($tpsysID);
        $activityCostArray = Zend_Controller_Action_HelperBroker::getStaticHelper('DynamicPackage')->getTotalCostOfIncludedEvent($activitylist, $adult, $child, $totaltraveler);
        $totalactcost = $activityCostArray['TotalCost'];
        $totalactivitycostpp = $activityCostArray['PerPersonCost'];

################# Calculation of Sight Seeing Cost #######################
        $sslist = $this->getIncludedPackageSightseenList($tpsysID);
        $sightSeeingCostArray = Zend_Controller_Action_HelperBroker::getStaticHelper('DynamicPackage')->getTotalCostOfIncludedSightseeing($sslist, $adult, $child, $totaltraveler);
        $totalsightseeingcost = $sightSeeingCostArray['TotalCost'];
        $totalsscostpp = $sightSeeingCostArray['PerPersonCost'];
//echo $totalhotelprice ."<br/>". $totalactcost ."<br/>".  $totalsightseeingcost;
        $totalparticularprice = $totalhotelprice + $totalactcost + $totalsightseeingcost;
        $totalparticularpriceperperson = $hotelpriceperson + $totalactivitycostpp + $totalsscostpp;
################# Calculation of services Cost #######################
        $getotherservices = $this->GetIncludedOtherServices($tpsysID);

        $servicesCostArray = Zend_Controller_Action_HelperBroker::getStaticHelper('DynamicPackage')->getTotalCostOfIncludedServices($getotherservices, $totaltraveler);
        $totalServicesCost = $servicesCostArray['TotalCost'];
        $totalServicesCostpp = $servicesCostArray['PerPersonCost'];

################# Calculation of Transport Cost (Private) #######################
        $getalltransport = $this->GetAllTransportTypeBYO($tpsysID);
        $totalCarCost = 0;
        for (
                $m = 0;
                $m < count($getalltransport);
                $m++
        ) {
            if ($getalltransport[$m]['TransType'] == 'car') {
                $totalCarCost = $totalCarCost + $getalltransport[$m]['TotalPrice'];
            } else {
                $totalprivatecostperpersonwoc = $totalprivatecostperpersonwoc + $getalltransport[$m]['CostPerson'];
            }
        }
        $totalprivatecost = ($totalprivatecostperpersonwoc * $totaltraveler) + ($totalCarCost);
        $totalprivatecostperperson = $totalprivatecost / $totaltraveler;

################# Calculation of Transport Cost (Group) #######################
        $busnTraingrpcost = 0;
        $getallgrouptransport = $this->GetGroupCostWithoutCarBYO($tpsysID);
        for (
                $m = 0;
                $m < count($getallgrouptransport);
                $m++
        ) {
            $busnTraingrpcost = $busnTraingrpcost + $getallgrouptransport[$m]['TotalPrice'];
        }
        $busnTraingrpcostpp = $busnTraingrpcost / $totaltraveler;

        $getgroupwisecost = $this->GetGroupTransport($tpsysID); // car 
        $getgroupsize = $this->Getgroupsize($tpsysID);

        $transportgrpcostpp = round($busnTraingrpcostpp + ($getgroupwisecost['TotalPrice'] / $getgroupsize['GroupSize']));
        $transportgrpcost = $busnTraingrpcost + $getgroupwisecost['TotalPrice'];
        if ($IsB2BCustomer == 1) {
            $getmarketwiseratebycatID = $this->GetMarketWiseRateOnlyPrivate($tpsysID, $catID, $tourID, $mealID, 2); // 2 for b2b price
        } else {
            $getmarketwiseratebycatID = $this->GetMarketWiseRateOnlyPrivate($tpsysID, $catID, $tourID, $mealID, 1);
        }

//echo $totalparticularprice.'</br>'.$totalprivatecost.'</br>'.$totalServicesCost.'</br>'.$totalsightseeingcost.'</br>'.$totalprivatecost.'</br>';
//        echo $totalprivatecostperperson.'===='.$totalprivatecost.'</br>';
        if ($getmarketwiseratebycatID[0]["TourType"] == "1") {
            $totalCost = $totalparticularprice + $totalprivatecost + $totalServicesCost;
            $costperperson = $totalprivatecostperperson + $totalparticularpriceperperson + $totalServicesCostpp;
        }
        if ($getmarketwiseratebycatID[0]["TourType"] == "2") { //echo 'Group';
            $totalCost = $totalparticularprice + $transportgrpcost + $totalServicesCost;
            $costperperson = $transportgrpcostpp + $totalparticularpriceperperson + $totalServicesCostpp;
        }
//echo '<pre>'.$costperperson.'</br>'; print_r($totalCost); echo '</pre>';
        $markupvalue = $getmarketwiseratebycatID[0]['MarkPercent'];

        if ($getmarketwiseratebycatID[0]['MarkType'] == 1) {
            $totalcostppWithMarkup = $costperperson + $markupvalue;
            $totalCostWithMarkup = $totalCost + $markupvalue;
            $markupOnTotalCost = $markupvalue;
        } else {
            $markupOnPerPersonCost = ($costperperson * $markupvalue) / 100;
            $totalcostppWithMarkup = $costperperson + $markupOnPerPersonCost;

            $markupOnTotalCost = ($totalCost * $markupvalue) / 100;
            $totalCostWithMarkup = $totalCost + $markupOnTotalCost;
        }
        if ($getmarketwiseratebycatID[0]['Tax'] == "Included") {
            $taxvlaue = 0;
            $totalpkgpriceWithTaxnMarkup = $totalCostWithMarkup;
        } else {
            $taxvlaue = $getmarketwiseratebycatID[0]['ExcludedPercent'];
            $totalpkgpricewithdiscount = $totalCostWithMarkup - $discount;
            $totalpkgpriceWithTaxnMarkup = ($totalpkgpricewithdiscount * $taxvlaue) / 100 + $totalpkgpricewithdiscount;
        }

        $response = array('success' => true, 'msg' => 'Success', 'cwom' => round($totalCost), 'm' => round($markupOnTotalCost), 'cwm' => round($totalCostWithMarkup), 'd' => $discount, 'cwmt' => round($totalpkgpriceWithTaxnMarkup), 'roomjson' => base64_encode($roominfojson));
        return $response;
    }

    public function GetReadyMadePkgInfo($tpsysID) {
        $selectedcolumn = array("RoomInfoJson");
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan"), $selectedcolumn);
        $select->where('TB_TravelPlan.TPSysId = ?', $tpsysID);
        $select->where('TB_TravelPlan.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPkgInfo($tpsysID) {
        $selectedcolumn = array("RoomInfoJson");
        $select = $this->db->select();
        $select->from(array('TACT' => "TB_Agency_Customer_TravelPlan"), $selectedcolumn);
        $select->where('TACT.TPSysId = ?', $tpsysID);
        $select->where('TACT.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetIncludedOtherServices($tpsysID) {
        $selectedcolumn = array("*");
        $select = $this->db->select();
        $select->from(array('TTO' => "TB_TravelPlan_OtherServices"), $selectedcolumn);
        $select->where('TTO.TPIntSysId = ?', $tpsysID);
        $select->where('TTO.IsCostInclInTP = ?', 1);
        $select->where('TTO.IsMarkForDelete = ?', 0);
//       echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPackageOtherServices($tpsysID) {
        $selectedcolumn = array("*");
        $select = $this->db->select();
        $select->from(array('TACTO' => "TB_Agency_Customer_TravelPlan_OtherServices"), $selectedcolumn);
        $select->where('TACTO.TPIntSysId = ?', $tpsysID);
        $select->where('TACTO.IsCostInclInTP = ?', 1);
        $select->where('TACTO.IsMarkForDelete = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateById($tpsysID, $catID) {
        $selectedcolumn = array("*");
        $select = $this->db->select();
        $select->from(array("TBMWR" => "TB_TravelPlan_MarketWise_Rate"), $selectedcolumn);
        $select->joinLeft(array("TBMC" => "TB_Master_Currency"), "TBMC.CurrencyType = TBMWR.CurrencyType", array('Symbol'));
        $select->where('TBMWR.TPIntSysId = ?', $tpsysID);
        $select->where('TBMWR.PackCategoryId = ?', $catID);
        $select->where('TBMWR.IsMarkForDel = ?', 0);
        $select->where('TBMWR.CostPPDO is not null');
//echo $select; exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateOnlyPrivate($tpsysID, $catID, $tourID = NULL, $MealTypeId = NULL, $MarketPlaceId = NULL) {
        $selectedcolumn = array("*");
        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"), $selectedcolumn);
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.PackCategoryId = ?', $catID);
        $select->where('TTMR.TourType = ?', $tourID);
        if (!empty($MealTypeId)) {
            $select->where('TTMR.MealPlanType = ?', $MealTypeId);
        }
        if (!empty($MarketPlaceId)) {
            $select->where('TTMR.MarketPlaceId = ?', $MarketPlaceId);
        }
        $select->where('TTMR.IsMarkForDel = ?', 0);

//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function Getgroupsize($tpsysID) {
        $selectedcolumn = array("GroupSize");
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan"), $selectedcolumn);
        $select->where('TB_TravelPlan.TPSysId = ?', $tpsysID);

        $select->where('TB_TravelPlan.IsMarkForDel = ?', 0);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function Getpkggroupsize($tpsysID) {
        $selectedcolumn = array("GroupSize");
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_TravelPlan"), $selectedcolumn);
        $select->where('TB_Agency_Customer_TravelPlan.TPSysId = ?', $tpsysID);

        $select->where('TB_Agency_Customer_TravelPlan.IsMarkForDel = ?', 0);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function UpdateOptionalSS($versionID, $tpintsysID, $tpsysID, $adult, $child, $totaltraveler, $roominfojson, $txt) {
        $updatewhere = array('VersionId = ? ' => $versionID);
        if ($txt == "Include") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Exclude") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_SightSeeing', $updateData, $updatewhere);
        if ($updatequery) {
//echo "Activity Updated";
            $this->UpdateHotelSelection('0', $tpintsysID, $versionID, $tpsysID, 'PKG', $roominfojson, $adult, $child, $totaltraveler, '');
        }
    }

    public function UpdateOptionalSSBYOReadyMade($versionID, $tpintsysID, $tpsysID, $adult, $child, $totaltraveler, $roominfojson, $txt, $catID) {
        $updatewhere = array('VersionId = ? ' => $versionID);
        if ($txt == "Include") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Exclude") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_SightSeeing', $updateData, $updatewhere);
        if ($updatequery) {
//echo "Activity Updated";
            $this->UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
        }
    }

    public function UpdateOptionalSSBYO($tpintsysID, $tpsysID, $sightseeingID, $adult, $child, $totaltraveler, $roominfojson, $txt, $catID) {

        $updatewhere = array('InvnItemSysId = ? ' => $tpintsysID, 'SSSysId = ? ' => $sightseeingID);
        if ($txt == "Included") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Optional") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_SightSeeing', $updateData, $updatewhere);

        if ($updatequery) {
            $this->UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
        }
    }

    public function GetBYOFlightPrice($tpsysID) {
        $itenaryid = $this->GetItenaryIdOnlyBYO($tpsysID);
        $flightprice = 0;
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $flightcost = $this->GetFlightByItenaryBYO($itenaryid[$i]['TPIntSysId']);
            $flightprice = $flightprice + $flightcost['Cost'];
        }
        return $flightprice;
    }

    public function IsChildExist($tpintsysID, $catID) {
        $selectedfields = array('TPIntSysId');
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"), $selectedfields);
        $select->where('TTIA.MasterIntSysId = ?', $tpintsysID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function IsChildExistPkg($tpintsysID, $catID) {
        $selectedfields = array('TPIntSysId');
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TACTA.MasterIntSysId = ?', $tpintsysID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTotalChild($tpintsysID, $catID, $MealTypeId = NULL) {
//$selectedfields = array('MasterIntSysId');
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_Itenary_Accom"));
        $select->where('MasterIntSysId = ?', $tpintsysID);
        $select->where('BYOPackType = ?', $catID);
        $select->where('IsSelectedOnPkg = ?', 1);
        if (!empty($MealTypeId)) {
            $select->where('MealPlanType = ?', $MealTypeId);
        }
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTotalChildInPkg($tpintsysID, $catID) {
//$selectedfields = array('MasterIntSysId');
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.MasterIntSysId = ?', $tpintsysID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function UpdateTransportType($tpsysID, $adult, $child, $totaltraveler, $roominfojson, $fixtransID, $catID, $transtype, $tpintsysID) {
        if (empty($tpintsysID)) {
            $updatewhere = array('TPSysId = ? ' => $tpsysID, 'TransType = ? ' => $transtype);
        } else {
            $updatewhere = array('TPIntSysId = ? ' => $tpintsysID, 'TransType = ? ' => $transtype);
        }
        $updateData = array('IsIncluded' => '0');
        $this->db->update('TB_TravelPlan_Trans_Fixed', $updateData, $updatewhere);
        $whereclause = array('FixTransSysId = ? ' => $fixtransID);
        $whereData = array('IsIncluded' => '1');
        $this->db->update('TB_TravelPlan_Trans_Fixed', $whereData, $whereclause);
        $this->UpdateBYOPackagePrice($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
    }

    public function UpdateTransportTypeReadyMade($tpsysID, $adult, $child, $totaltraveler, $roominfojson, $fixtransID, $catID, $transtype, $tpintsysID, $carsequence) {
//if(empty($tpintsysID)){
        $updatewhere = array('TPSysId = ? ' => $tpsysID, 'TransType = ? ' => $transtype);
//}

        $updateData = array('IsIncluded' => '0');
        $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $updatewhere);
//echo $carsequence;
//die;
        $whereclause = array('Sequence = ? ' => $carsequence);
        $whereData = array('IsIncluded' => '1');
        $this->db->update('TB_Agency_Customer_Trans_Fixed', $whereData, $whereclause);
        $this->UpdatePkgDetail($tpsysID, $roominfojson, $adult, $child, $totaltraveler, $catID);
    }

    public function getserviceID($id) {
        $select = $this->db->select();
        $selectedvalues = array('VersionId');
        $select->from(array('TTO' => "TB_TravelPlan_OtherServices"));
        $select->where('TTO.OtherSrvSysId = ?', $id);
        $select->where('TTO.IsMarkForDelete = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function UpdateHotelSelectionPkg($accomsysID, $tpintsysID, $tpsysID, $src, $roominfojson, $adultpax, $childpax, $totaltraveler, $tproomnumber, $catID) {
        $updatewhere = array('TPIntSysId = ? ' => $tpintsysID, 'BYOPackType = ? ' => $catID);
        $updateData = array('IsSelectedOnPkg' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateData, $updatewhere);

######## Check If Master is exist for the package or not ############
        $ischildexist = $this->IsChildExistPkg($tpintsysID, $catID);

        if (count($ischildexist) > 0) {
######### First Make All the IsSelected Value 0 to all the Child ################
            $updatemasterID = array('MasterIntSysId = ? ' => $tpintsysID);
            $updatemasterdata = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updatemasterdata, $updatemasterID);
######### First Make All the IsSelected Value 0 to all the Child End ################
######### Make the Iselected = '1' based on MasterIntSysId and selected AccomSysId(HotelID) #########

            $whereclause = array('MasterIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'BYOPackType = ? ' => $catID);
            $updateaccomdata = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateaccomdata, $whereclause);

######### Make the Iselected = '1' based on MasterIntSysId and selected AccomSysId(HotelID) End #########
        }


        $updatemasterID = array('AccoSysId = ? ' => $accomsysID, 'BYOPackType = ? ' => $catID, 'TPIntSysId = ? ' => $tpintsysID);
        $updatemasterdata = array('IsSelectedOnPkg' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updatemasterdata, $updatemasterID);

        $this->UpdatePkgDetail($tpsysID, $roominfojson, $adultpax, $childpax, $totaltraveler, $catID);
    }

    public function UpdateHotelSelectionBYO($accomsysID, $tpintsysID, $VersionId, $tpsysID, $src, $roominfojson, $adultpax, $childpax, $totaltraveler, $tproomnumber, $catID) {
        $updatewhere = array('TPIntSysId = ? ' => $tpintsysID);
        $updateData = array('IsSelectedOnPkg' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateData, $updatewhere);

######## Check If Master is exist for the package or not ############
        $ischildexist = $this->IsChildExistPkg($tpintsysID, $catID);

        if (count($ischildexist) > 0) {
######### First Make All the IsSelected Value 0 to all the Child ################
            $updatemasterID = array('MasterIntSysId = ? ' => $tpintsysID);
            $updatemasterdata = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updatemasterdata, $updatemasterID);
######### First Make All the IsSelected Value 0 to all the Child End ################
######### Make the Iselected = '1' based on MasterIntSysId and selected AccomSysId(HotelID) #########

            $whereclause = array('MasterIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'BYOPackType = ? ' => $catID);
            $updateaccomdata = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateaccomdata, $whereclause);

######### Make the Iselected = '1' based on MasterIntSysId and selected AccomSysId(HotelID) End #########
        }


        $updatemasterID = array('VersionId = ? ' => $VersionId);
        $updatemasterdata = array('IsSelectedOnPkg' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updatemasterdata, $updatemasterID);

        $this->UpdatePkgDetail($tpsysID, $roominfojson, $adultpax, $childpax, $totaltraveler, $catID);
    }

    public function UpdateHotelSelection($accomsysID, $tpintsysID, $VersionId, $tpsysID, $src, $roominfojson, $adultpax, $childpax, $totaltraveler, $tproomnumber) {

######## UPDATE HOTEL DATA ##########

        if (!empty($accomsysID)) {
            $updatewhere = array('TPIntSysId = ? ' => $tpintsysID);
            $updateData = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateData, $updatewhere);

######## UPDATE CHILD ID #################

            $updatemasterID = array('MasterIntSysId = ? ' => $tpintsysID);
            $updatemasterdata = array('IsSelectedOnPkg' => '0');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updatemasterdata, $updatemasterID);

######## UPDATE CHILD ID END #################
            $where = array('TPIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'VersionId = ? ' => $VersionId);
            $data = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $data, $where);
            if ($tproomnumber != '') {
//  $roomnum = trim($tproomnumber);
                $updatedwheremaster = array('MasterIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'RoomNumber = ? ' => $tproomnumber);
// $updatedwheremaster = array('MasterIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID, 'RoomNumber = ? ' => trim($tproomnumber));
            } else {
                $updatedwheremaster = array('MasterIntSysId = ? ' => $tpintsysID, 'AccoSysId = ? ' => $accomsysID);
            }
            $updateddatamaster = array('IsSelectedOnPkg' => '1');
            $this->db->update('TB_Agency_Customer_TravelPlan_Accom', $updateddatamaster, $updatedwheremaster);
        }





######## UPDATE HOTEL DATA END ##########
        $itenaryid = $this->GetItenaryIdOnly($tpsysID);
######## CALCULATE NEW COST FOR HOTEL ###########
// $hoteldetails = array();
        $flightprice = 0;
        $totelhotelprice = 0;
        $totalhotelpriceperperson = 0;
        $totalactivitycost = 0;
        $totalactivitycostperperson = 0;
        $totalsscost = 0;
        $totalsscostpp = 0;
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $flightcost = $this->GetFlightByItenary($itenaryid[$i]['TPIntSysId']);

            $flightprice = $flightprice + $flightcost['Cost'];
        }

// echo 'Flight Price'.$flightprice;
// die;
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $intsysId = $itenaryid[$i]['TPIntSysId'];
            $hoteldetails[] = $this->GetHotelCost($intsysId, $roominfojson, $adultpax, $childpax, $totaltraveler);
            $totelhotelprice = round($totelhotelprice + $hoteldetails[$i]['totalprice']);
            $totalhotelpriceperperson = round($totalhotelpriceperperson + $hoteldetails[$i]['perperson']);
        }


//echo 'Total Hotel Price'.$totelhotelprice;

        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $intsysId = $itenaryid[$i]['TPIntSysId'];
            $getactivitycost[] = $this->GetActivityCostByIten($intsysId, $roominfojson, $adultpax, $childpax, $totaltraveler);
            $totalactivitycost = $totalactivitycost + $getactivitycost[$i]['totalcost'];
            $totalactivitycostperperson = $totalactivitycostperperson + $getactivitycost[$i]['costperperson'];
        }


        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $intsysId = $itenaryid[$i]['TPIntSysId'];
            $sscost[] = $this->GetSightSeeingCostByIten(@$intsysId, $roominfojson, $adultpax, $childpax, $totaltraveler);
            $totalsscost = $totalsscost + $sscost[$i]['totalcost'];
            $totalsscostpp = $totalsscostpp + $sscost[$i]['costperperson'];
        }
        $totalinsurancecost = 0;
########### Calculate Cost For Travel Insurance #########  
        for (
                $i = 0;
                $i < count($itenaryid);
                $i++
        ) {
            $intsysId = $itenaryid[$i]['TPIntSysId'];
            $insurancecost = $this->GetInsuranceCost($intsysId);
            $totalinsurancecost = $totalinsurancecost + $insurancecost['NetPaid'];
        }



########### Get Fixed Costing Data #####################

        $gettransportcost = $this->GetFixedTrnsportCost($tpsysID);

        $totaltransportperpersoncost = 0;
        $totaltransportcost = 0;
        for (
                $i = 0;
                $i < count($gettransportcost);
                $i++
        ) {

            $totaltransportcost = $totaltransportcost + $gettransportcost[$i]['TotalPrice'];
            $totaltransportperpersoncost = $totaltransportperpersoncost + $gettransportcost[$i]['CostPerson'];
        }


######## CALCULATE NEW COST FOR HOTEL END ###########

        $getmarketwiserate = $this->GetMarketWiseRate($tpsysID);

        /*
          echo 'Hotel' .  $totelhotelprice;
          echo '<br/>';
          echo 'Flight' .  $flightprice;
          echo '<br/>';
          echo 'Activity' . $totalactivitycost;
          echo '<br/>';
          echo 'SightSeeing' . $totalsscost;
          echo '<br/>';
          echo 'Transport' . $totaltransportcost;
          echo '<br/>';
          echo 'Insurance' . $totalinsurancecost;
          echo '<br/>';
          echo $getmarketwiserate[$i]['MarkPercent'];
          echo '<br/>';
          echo $getmarketwiserate[$i]['MarkType'];
          echo '<br/>';
         * 
         */
//   echo $totalcost = $totelhotelprice+$flightprice+$totalactivitycost+$totalsscost+$totaltransportcost+$totalinsurancecost;
//die;
        if ($getmarketwiserate[0]['MarkType'] == 'FixedAmount') {
            $totalcost = $totelhotelprice + $flightprice + $totalactivitycost + $totalsscost + $totaltransportcost + $totalinsurancecost + $getmarketwiserate[0]['MarkPercent'];
            $flightppprice = $flightprice / $totaltraveler;
            $totalcostperperson = $totalhotelpriceperperson + $flightppprice + $totalactivitycostperperson + $totalsscostpp + $totaltransportperpersoncost + $getmarketwiserate[0]['MarkPercent'];
        }
        if ($getmarketwiserate[0]['MarkType'] == 'FixedPercnt') {
//     echo 'Test123';
            $nettotalcostwithmarkuppercent = $totelhotelprice + $flightprice + $totalactivitycost + $totalsscost + $totaltransportcost + $totalinsurancecost + $getmarketwiserate[0]['MarkPercent'];
            $nettotalcostwithmarkup = ($nettotalcostwithmarkuppercent * $getmarketwiserate[0]['ExcludedPercent']) / 100;
            $totalcost = $nettotalcostwithmarkuppercent;

            $flightppprice = $flightprice / $totaltraveler;
            $nettotalcostwithmarkuppercentperperson = $totalhotelpriceperperson + $flightppprice + $totalactivitycostperperson + $totalsscostpp + $totaltransportperpersoncost + $getmarketwiserate[0]['MarkPercent'];
            $nettotalcostwithmarkupperperson = ($nettotalcostwithmarkuppercentperperson * $getmarketwiserate[0]['ExcludedPercent']) / 100;
            $totalcostperperson = $nettotalcostwithmarkuppercentperperson;
        }

// echo $totalcost;
//die;
        $createdDate = date('Y-m-d');
        $marketwiserate = array(
            'TPIntSysId' => $tpsysID,
            'AgencySysId' => $getmarketwiserate[0]['AgencySysId'],
            'FromDate' => $getmarketwiserate[0]['FromDate'],
            'ToDate' => $getmarketwiserate[0]['ToDate'],
            'CurrencyType' => $getmarketwiserate[0]['CurrencyType'],
            'MarkType' => $getmarketwiserate[0]['MarkType'],
            'MarketPlaceId' => $getmarketwiserate[0]['MarketPlaceId'],
            'MarketPlace' => $getmarketwiserate[0]['MarketPlace'],
            'Permission' => $getmarketwiserate[0]['Permission'],
            'MarkPercent' => $getmarketwiserate[0]['MarkPercent'],
            'CostPPSO' => 0,
            'CostPPDO' => 0,
            'CostPPTO' => 0,
            'CostExtraBed' => 0,
            'CostChildWithoutBed' => 0,
            'TotalCost' => $totalcost,
            'CostPerPerson' => $totalcostperperson,
            'Tax' => $getmarketwiserate[0]['Tax'],
            'TDS' => $getmarketwiserate[0]['TDS'],
            'ExcludedPercent' => $getmarketwiserate[0]['ExcludedPercent'],
            'CreateDate' => $createdDate,
            'UpdateDate' => $createdDate,
            'IsMarkForDel' => 0,
            'IsActive' => 1
        );
        $ratewhere = array('TPIntSysId = ? ' => $tpsysID);
        $ratedata = array('IsMarkForDel' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $ratedata, $ratewhere);

        $this->db->insert('TB_Agency_Customer_TravelPlan_MarketWise_Rate', $marketwiserate);
        if ($src != 'API') {
            $response = array('success' => true, 'msg' => 'Success');
            echo json_encode($response);
        }
    }

    public function CountMasterId($AccoSysId, $TPIntSysId, $roomnumber) {
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.AccoSysId = ?', $AccoSysId);
        $select->where('TACTA.MasterIntSysId = ?', $TPIntSysId);
        if ($roomnumber != '') {
            $select->where('TACTA.RoomNumber = ?', $roomnumber);
        }

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetInsuranceCost($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('TPIntSysId', 'IsSelected', 'NetPaid');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"));
        $select->where('TACTI.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTI.IsSelected = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetItnBySeq($seqence, $tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('TPIntSysId');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $travel_airline);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.Sequence = ?', $seqence);
        $select->where('TACTI.IsMarkForDel = ?', 0);
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTransportRoute($routesysID) {
        $select = $this->db->select();
        $destination_name = array('Title as DestinationTitle');
        $trans_route_vhicle = array('Capacity as routecapacity', 'VehicleSysId', 'VehicleTypeSysId', 'SupplierSysId', 'Cost', 'RouteVechSysId', 'RouteSysId', 'CurrencyType');
        $select->from(array('tb2' => "TB_Agency_Transport_Route_Vehicle"), $trans_route_vhicle);
        $select->join(array('tb3' => "TB_Master_Vehicle"), "tb3.VehSysId = tb2.VehicleSysId");
        $select->joinLeft(array('tb6' => "TB_Master_Currency"), "tb6.CurrencyType = tb2.CurrencyType", array('Symbol'));
        $select->join(array('tb4' => "TB_Master_VehicleType"), "tb4.VehicleTypeSysId = tb3.VehTypeSysId");
        $select->join(array('tb5' => "TB_IC_Supplier"), "tb5.SupplierSysId = tb2.SupplierSysId");
        $select->where('tb2.RouteSysId = ?', $routesysID);
        $select->order('tb2.Cost ASC');
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTrainDetailsByDay($tpsysID) {
        $select = $this->db->select();
        $sequence = array('Sequence', 'Cities');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->join(array('tb3' => "TB_TravelPlan_Itenary"), "tb3.TPIntSysId = tb2.TPIntSysId", $sequence);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'train');
        $select->where('tb2.IsMarkForDel = ?', 0);
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPkgTrainDetailsByDay($tpsysID) {
        $select = $this->db->select();
        $sequence = array('Sequence', 'Cities');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"));
        $select->join(array('tb3' => "TB_Agency_Customer_TravelPlan_Itenary"), "tb3.TPIntSysId = tb2.TPIntSysId", $sequence);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'train');
        $select->where('tb2.IsMarkForDel = ?', 0);
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetBusDetailsByDay($tpsysID, $transtpye) {
        $select = $this->db->select();
        $sequence = array('Sequence', 'Cities');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->join(array('tb3' => "TB_TravelPlan_Itenary"), "tb3.TPIntSysId = tb2.TPIntSysId", $sequence);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'bus');
        $select->where('tb2.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPkgBusDetailsByDay($tpsysID, $transtpye) {
        $select = $this->db->select();
        $sequence = array('Sequence', 'Cities');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"));
        $select->join(array('tb3' => "TB_Agency_Customer_TravelPlan_Itenary"), "tb3.TPIntSysId = tb2.TPIntSysId", $sequence);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'bus');
        $select->where('tb2.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllCarOption($tpsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('tbl.TPSysId = ?', $tpsysID);
        $select->where('tbl.TransType = ?', 'Car');
        $select->where('tbl.IsMarkForDel = ?', 0);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetRootInfo($routesysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Transport_Route"));
        $select->where('tbl.RouteSysId = ?', $routesysID);
        $select->where('tbl.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetRootName($sourcecityID, $agencysysID, $EndcityID = NULL, $noofDays = NULL) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Transport_Route"));
        $select->where('tbl.StartCitySysId = ?', $sourcecityID);
        $select->where('tbl.AgencySysId = ?', $agencysysID);
        if (!empty($EndcityID)) {
            $select->where('tbl.EndCitySysId = ?', $EndcityID);
        }
        if (!empty($noofDays)) {
            $select->where('tbl.Noofnights = ?', $noofDays);
        }
        $select->where('tbl.IsMarkForDel = ?', 0);

//       echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetActivityType($invnsysID, $tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('Type');
        $select->from(array('TTS' => "TB_TravelPlan_SightSeeing"));
        $select->where('TTS.XrefInvnItemSysId = ?', $invnsysID);
        $select->where('TTS.InvnItemSysId = ?', $tpintsysID);
        $select->where('TTS.IsMarkForDelete = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetActivityDuration($actID) {
        $select = $this->db->select();
        $travel_airline = array('DurationStr');
        $select->from(array("TB_IC_Activity"));
        $select->where('TB_IC_Activity.ActivitySysId = ?', $actID);
        $select->where('TB_IC_Activity.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSightSeenDuration($ssID) {
        $select = $this->db->select();
        $travel_airline = array('DurationStr');
        $select->from(array("TB_IC_SightSeeing"));
        $select->where('TB_IC_SightSeeing.SSSysId = ?', $ssID);
        $select->where('TB_IC_SightSeeing.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetFixedTrnsportCost($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('CostPerson', 'Capacity', 'IsIncluded', 'Type', 'TPSysId', 'IsMarkForDel', 'TotalPrice');
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetItnStartDate($cityID, $packageId, $startseq) {
        $select = $this->db->select();
        $travel_airline = array('StartDate');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPSysId = ?', $packageId);
        $select->where('TTI.CitySysId = ?', $cityID);
        $select->where('TTI.Sequence = ?', $startseq);
        $select->where('TTI.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetItnEndDate($cityID, $packageId, $endseq) {
        $select = $this->db->select();
        $travel_airline = array('EndDate');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPSysId = ?', $packageId);
        $select->where('TTI.CitySysId = ?', $cityID);
        $select->where('TTI.Sequence = ?', $endseq);
        $select->where('TTI.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllSelectedHotelCount($tpintID) {
        $sqlquery = "SELECT COUNT(*) as total  FROM TB_Agency_Customer_TravelPlan_Accom as TACTA WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0' AND TACTA.IsSelectedOnPkg = '1' AND TACTA.TPIntSysId IN ($tpintID) ";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllSelectedHotelReadyMadeCount($implodeitenary, $catID) {
        $whereCondition = "TPIntSysId IN ($implodeitenary) AND IsMarkForDel = '0' AND BYOPackType = $catID AND IsSelectedOnPkg = '1' AND MasterIntSysId = '0'";
        $select = $this->db->select()
                ->from(array("TB_Agency_Customer_TravelPlan_Accom"))
                ->where($whereCondition);
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetAllSelectedHotelCountBYO($implodeitenary, $catID, $mID = NULL) {
        $condmId = !empty($mId) ? " AND MealPlanType = $mId " : " ";
        $whereCondition = "TPIntSysId IN ($implodeitenary) AND IsMarkForDel = '0' AND BYOPackType = $catID AND IsSelectedOnPkg = '1' AND MasterIntSysId = '0' $condmId";
        $select = $this->db->select()
                ->from(array("TB_TravelPlan_Itenary_Accom"))
                ->where($whereCondition);
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetAllTotalHotelCount($tpintID) {
        $sqlquery = "SELECT TACTA.AccoSysId  FROM TB_Agency_Customer_TravelPlan_Accom as TACTA WHERE TACTA.IsActive = '1' AND  TACTA.IsMarkForDel = '0' AND TACTA.IsSelectedOnPkg = '1' AND TACTA.TPIntSysId IN ($tpintID) GROUP BY TACTA.AccoSysId";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllTotalHotelCountBYO($tpintID) {
        $sqlquery = "SELECT TTIA.AccoSysId  FROM TB_TravelPlan_Itenary_Accom as TTIA WHERE TTIA.IsActive = '1' AND  TTIA.IsMarkForDel = '0' AND TTIA.IsSelectedOnPkg = '1' AND TTIA.TPIntSysId IN ($tpintID) GROUP BY TTIA.AccoSysId";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSelectedHotelCount($tpintID) {
        $sqlquery = "SELECT *  FROM TB_Agency_Customer_TravelPlan_Accom as TACTA WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0'  AND TACTA.TPIntSysId = '" . $tpintID . "'";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSelectedHotelBYOReadyMadeCount($tpintID) {
        $sqlquery = "SELECT *  FROM TB_TravelPlan_Itenary_Accom as TTIA WHERE TTIA.IsActive = '1' AND TTIA.TPIntSysId = '" . $tpintID . "'";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllItemsCount($tpitenaryID) {
// $objPackage = new Travel_Model_TblPackage();
        $getselectedHotel = $this->GetSelectedHotelCount($tpitenaryID);
        $getactivitycount = $this->GetActivityCount($tpitenaryID);
        $getsightseeincount = $this->GetTotalIncludedSightSeeingByItenary($tpitenaryID);

        $hotextxt = count($getselectedHotel) > 0 ? count($getselectedHotel) . ' Hotel' : 'No Hotel';
        $acttxt = count($getactivitycount) > 0 ? count($getactivitycount) . ' Activity' : 'No Activity';
        $sstxt = count($getsightseeincount) > 0 ? count($getsightseeincount) . ' SightSeeing' : 'No SightSeeing';
        $displaytxt = $tpitenaryID . '|' . $hotextxt . ',' . $acttxt . ',' . $sstxt . ' Added';
        return $displaytxt;
    }

    public function GetAllItemsCountBYO($tpitenaryID) {
        $getselectedHotel = $this->GetSelectedHotelBYOReadyMadeCount($tpitenaryID);
        $getactivitycount = $this->GetActivityCountBYO($tpitenaryID);
        $getsightseeincount = $this->GetTotalIncludedSightSeeingByItenaryBYO($tpitenaryID);

        $hotextxt = count($getselectedHotel) > 0 ? count($getselectedHotel) . ' Hotel' : 'No Hotel';
        $acttxt = count($getactivitycount) > 0 ? count($getactivitycount) . ' Activity' : 'No Activity';
        $sstxt = count($getsightseeincount) > 0 ? count($getsightseeincount) . ' SightSeeing' : 'No SightSeeing';
        $displaytxt = $tpitenaryID . '|' . $hotextxt . ',' . $acttxt . ',' . $sstxt . ' Added';
        return $displaytxt;
    }

    public function GetActivityCount($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.Type = 'Included' AND TACTIE.TPIntSysId IN ($tpintsysID)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetIncludedActivityCountBYO($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0'  AND TTIE.Type = 'Included' AND TTIE.TPIntSysId IN ($tpintsysID)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityCountBYO($tpintsysID) {
        $sqlPackageActivity = "SELECT TTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_TravelPlan_Itenary_Events as TTIE
						LEFT JOIN TB_IC_Activity ON TTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TTIE.IsActive = '1' AND TTIE.IsMarkForDel = '0'  AND TTIE.TPIntSysId IN ($tpintsysID)";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetAllActivityCount($tpintsysID) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						WHERE TACTIE.IsActive = '1' AND TACTIE.IsMarkForDel = '0' AND TACTIE.Type = 'Included' AND TACTIE.TPIntSysId = '" . $tpintsysID . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetFlightCount($tpintID) {
        $sqlquery = "SELECT COUNT(*) as total  FROM TB_Agency_Customer_TravelPlan_Air as TACTA WHERE TACTA.IsActive = '1' AND TACTA.IsMarkForDel = '0' AND TACTA.IsSelectedOnPkg = '1' AND TACTA.TPIntSysId IN ($tpintID) ";
        $resultPackageActivity = $this->db->query($sqlquery)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetFlightCountBYO($tpintID) {
        $whereCondition = "TPIntSysId IN ($tpintID) AND IsMarkForDel = '0' AND IsSelectedOnPkg = '1'";
        $select = $this->db->select()
                ->from(array("TB_TravelPlan_Itenary_Air"))
                ->where($whereCondition);
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetFlightReadyMade($tpintID) {
        $whereCondition = "TPIntSysId IN ($tpintID) AND IsMarkForDel = '0' AND IsSelectedOnPkg = '1'";
        $select = $this->db->select()
                ->from(array("TB_Agency_Customer_TravelPlan_Air"))
                ->where($whereCondition);
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetHotelFromAPI($tpintID, $accomsysID, $versionID) {
        $select = $this->db->select();
        $travel_airline = array('Address', 'Stars');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->joinLeft(array("TB_IC_Accomdation_API"), "TB_IC_Accomdation_API.AccomSysId = TACTA.AccoSysId", $travel_airline);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.VersionId != ?', $versionID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsFromAPI = ?', 1);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelFromAPIBYO($tpintID, $accomsysID, $versionID, $catID) {
        $select = $this->db->select();
        $travel_airline = array('Address', 'Stars');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array("TB_IC_Accomdation_API"), "TB_IC_Accomdation_API.AccomSysId = TTIA.AccoSysId", $travel_airline);
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.VersionId != ?', $versionID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsFromAPI = ?', 1);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRate($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTMR' => "TB_Agency_Customer_TravelPlan_MarketWise_Rate"));
        $select->where('TACTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TACTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateBYO($tpsysID) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateBYOReadyMade($tpID, $catID, $tourID = NULL, $MealTypeId = NULL, $MarketPlaceId = NULL) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $tpID);
        $select->where('TTMR.PackCategoryId = ?', $catID);
        $select->where('TTMR.TourType = ?', $tourID);
        if (!empty($MealTypeId)) {
            $select->where('TTMR.MealPlanType = ?', $MealTypeId);
        }
        if (!empty($MarketPlaceId)) {
            $select->where('TTMR.MarketPlaceId = ?', $MarketPlaceId);
        } else {
            $select->where('TTMR.MarketPlaceId = ?', 1);
        }
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllMarketWiseRateReadyMade($tpID, $catID) {

        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_TravelPlan_MarketWise_Rate"));
        $select->where('TPIntSysId = ?', $tpID);
        $select->where('PackCategoryId = ?', $catID);
        $select->where('MarketPlaceId = ?', 1);
        $select->where('IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateReadyMade($tpID, $catID) {

        $select = $this->db->select();
        $select->from(array('TACTMR' => "TB_Agency_Customer_TravelPlan_MarketWise_Rate"));
        $select->where('TACTMR.TPIntSysId = ?', $tpID);
        $select->where('TACTMR.PackCategoryId = ?', $catID);
        $select->where('TACTMR.TourType = ?', 1);
        $select->where('TACTMR.MarketPlaceId = ?', 1);
        $select->where('TACTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetICAccom($accomsysID) {
        $select = $this->db->select();
//$travel_airline = array('Address','Stars');
        $select->from(array("TB_IC_Accomdation"));
        $select->where('TB_IC_Accomdation.AccomSysId = ?', $accomsysID);
        $select->where('TB_IC_Accomdation.IsMarkForDel = ?', 0);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetActivityTotalCost($versionID) {
        $sqlPackageActivity = "SELECT Cost,KidsCost,TotalCost FROM TB_Agency_Customer_TravelPlan_Itenary_Events WHERE VersionId = '" . $versionID . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetActivityTotalCostBYO($versionID) {
        $sqlPackageActivity = "SELECT TotalCost FROM TB_TravelPlan_Itenary_Events WHERE VersionId = '" . $versionID . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSSTotalCost($versionID) {
        $sqlPackageActivity = "SELECT TotalCost,Cost,KidsCost FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE VersionId = '" . $versionID . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSSTotalCostBYO($versionID) {
        $sqlPackageActivity = "SELECT TotalCost FROM TB_TravelPlan_SightSeeing WHERE VersionId = '" . $versionID . "'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenary($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "'  AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryBYO($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_TravelPlan_SightSeeing WHERE InvnItemSysId IN ('" . $packageId . "')  AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryBYOPKG($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_TravelPlan_SightSeeing WHERE InvnItemSysId IN ($packageId)  AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryBYOPKGView($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId IN ($packageId)  AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryOverView($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "' AND IsMarkForDelete = '0' AND Type = 'Included' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryCount($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId IN ($packageId) AND IsMarkForDelete = '0' AND IsActive = '1' AND Type = 'Included'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingByItenaryCountBYO($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_TravelPlan_SightSeeing WHERE InvnItemSysId IN ($packageId) AND IsMarkForDelete = '0' AND IsActive = '1' AND Type = 'Included'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetTotalSightSeeingByItenary($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "' AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetTotalIncludedSightSeeingByItenary($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "' AND IsMarkForDelete = '0' AND IsActive = '1'  AND IsOptionalSightSeeing = '0'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetTotalIncludedSightSeeingByItenaryBYO($packageId) {
        $sqlPackageActivity = "SELECT * FROM TB_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "' AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetMasterTravelPlanID($tpintsyshotelID) {
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.MasterIntSysId = ?', $tpintsyshotelID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMasterTravelPlanIDBYO($tpintsyshotelID) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.MasterIntSysId = ?', $tpintsyshotelID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedHotelById($tpintsyshotelID) {
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.TPIntSysId = ?', $tpintsyshotelID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedHotelByIdBYO($tpintsyshotelID) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.TPIntSysId = ?', $tpintsyshotelID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMasterTPID($tpintsyshotelID) {
        $select = $this->db->select();
        $selectedfields = array('MasterIntSysId');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TACTA.TPIntSysId = ?', $tpintsyshotelID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
// echo $select;

        $result = $this->db->fetchAll($select);
        return $result;
//echo $select;
    }

    public function GetHotelCostByItenary($tpintID) {
        $select = $this->db->select();
        $selected_fields = array('TPIntSysId', 'TotalCostSO', 'TotalCostDO', 'TotalCost', 'TotalCostExtraBed', 'TotalCostWithoutBed', 'IsFromAPI', 'FromDate', 'ToDate', 'InvnItemSysId');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selected_fields);
        $select->where('TACTA.TPIntSysId = ?', $tpintID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelCostByItenaryBYO($tpintID, $catID, $MealTypeId = 0) {
        $select = $this->db->select();
        $selected_fields = array('TPIntSysId', 'TotalCostSO', 'TotalCostDO', 'TotalCost', 'TotalCostExtraBed', 'TotalCostWithoutBed', 'IsFromAPI', 'FromDate', 'ToDate', 'InvnItemSysId', 'IsSelectedOnPkg');
        $select->from(array("TB_TravelPlan_Itenary_Accom"), $selected_fields);
        $select->where('TPIntSysId = ?', $tpintID);
        $select->where('BYOPackType = ?', $catID);
        if (!empty($MealTypeId)) {
            $select->where('MealPlanType = ?', $MealTypeId);
        }
        $select->where('IsSelectedOnPkg = ?', 1);
        $select->where('IsMarkForDel = ?', 0);
        $select->order('TotalCostDO ASC');
//echo $select;
        $result = $this->db->fetchRow($select);
//echo "<pre>";print_r($result);
        return $result;
    }

    public function GetHotelCostByCatItenaryBYO($tpintID, $catID) {
        $select = $this->db->select();
        $selected_fields = array('TPIntSysId', 'TotalCostSO', 'TotalCostDO', 'TotalCost', 'TotalCostExtraBed', 'TotalCostWithoutBed', 'IsFromAPI', 'FromDate', 'ToDate', 'InvnItemSysId');
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"), $selected_fields);
        $select->where('TTIA.TPIntSysId = ?', $tpintID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMasterPackageList() {
        $select = $this->db->select();
        $selected_fields = array('PackCategory', 'Title');
        $select->from(array("TB_Master_PackCategory"), $selected_fields);
        $select->where('TB_Master_PackCategory.IsMarkForDel = ?', 0);
        $select->where('TB_Master_PackCategory.IsActive = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMasterPackageListByID($catID) {
        $select = $this->db->select();
        $selected_fields = array('PackCategory', 'Title');
        $select->from(array("TB_Master_PackCategory"), $selected_fields);
        $select->where('TB_Master_PackCategory.PackCategory = ?', $catID);
        $select->where('TB_Master_PackCategory.IsMarkForDel = ?', 0);
        $select->where('TB_Master_PackCategory.IsActive = ?', 1);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetHotelCostVersionID($versionID) {
        $select = $this->db->select();
        $selected_fields = array('TPIntSysId', 'TotalCostSO', 'TotalCostDO', 'TotalCost', 'TotalCostExtraBed', 'TotalCostWithoutBed', 'IsFromAPI', 'FromDate', 'ToDate');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"), $selected_fields);
        $select->where('TACTA.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetFlightByItenaryCost($tpintsysID) {
        $select = $this->db->select();
        $travel_airline = array('Cost');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->where('TACTA.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->order("TACTA.Cost ASC");
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetFlightByVersion($versionID) {
        $select = $this->db->select();
        $travel_airline = array('Cost');
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->where('TACTA.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTotalDays($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('Sequence');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"));
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->order("TACTI.Sequence DESC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTotalDaysBYO($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('Sequence');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->order("TTI.Sequence DESC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetPkgAllService($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTO' => "TB_Agency_Customer_TravelPlan_OtherServices"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TACTO.SupplierSysId");
        $select->where('TACTO.TPIntSysId = ?', $tpsysID);
        $select->where('TACTO.IsMarkForDelete = ?', 0);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllService($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TTO' => "TB_TravelPlan_OtherServices"));
        $select->joinLeft(array("TB_IC_Supplier"), "TB_IC_Supplier.SupplierSysId = TTO.SupplierSysId", array('SupplierSysId', 'SupplierName', 'EmailId'));
        $select->joinLeft(array("TB_Master_Currency"), "TTO.CurrencyType = TB_Master_Currency.CurrencyType", array('Symbol'));
        $select->where('TTO.TPIntSysId = ?', $tpsysID);
        $select->where('TTO.IsMarkForDelete = ?', 0);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllServiceType($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTO' => "TB_Agency_Customer_TravelPlan_OtherServices"));
        $select->joinLeft(array("TB_Master_Currency"), "TACTO.CurrencyType = TB_Master_Currency.CurrencyType");
        $select->where('TACTO.TPIntSysId = ?', $tpsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllServiceTypeBYO($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('Sequence');
        $select->from(array('TTO' => "TB_TravelPlan_OtherServices"));
        $select->joinLeft(array("TB_Master_Currency"), "TTO.CurrencyType = TB_Master_Currency.CurrencyType");
        $select->where('TTO.TPIntSysId = ?', $tpsysID);
        $select->where('TTO.IsMarkForDelete = ?', 0);

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetActivityCost($tpintsysID) {
        $sqlPackageActivity = "SELECT Cost,KidsCost,TPIntSysId,TotalCost					 
        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
        WHERE TACTIE.IsActive = '1' AND TACTIE.Type = 'Included' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN ('" . @$tpintsysID . "')";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetSightSeeingCost($packageId) {
        $sqlPackageActivity = "SELECT Cost,InvnItemSysId,KidsCost,TotalCost FROM TB_Agency_Customer_TravelPlan_SightSeeing WHERE InvnItemSysId = '" . $packageId . "' AND Type = 'Included' AND IsMarkForDelete = '0' AND IsActive = '1'";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetHotelCost($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler) {
        $hotelInfo = $this->GetHotelCostByItenary($intsysId);
        $totalhotelprice = 0;
        $roominfoarr = json_decode($numberoftraveler, 1);
        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'];
        $hotelprice['perperson'] = $hotelInfo['TotalCost'] / $totaltraveler;
        $hotelprice['InvnItemSysId'] = $hotelInfo['InvnItemSysId'];
        return $hotelprice;
    }

    public function GetHotelPriceByCat($itnID, $catID, $MealTypeId) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.TPIntSysId = ?', $itnID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        if (!empty($MealTypeId)) {
            $select->where('TTIA.MealPlanType = ?', $MealTypeId);
        }
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function FindDeleteOption($invID, $itnID, $packcat) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->where('TTIA.TPIntSysId = ?', $itnID);
        $select->where('TTIA.BYOPackType = ?', $packcat);
        $select->where('TTIA.AccoSysId = ?', $invID);
        $select->where('TTIA.IsMarkForDel = ?', 0);
        $select->where('TTIA.IsSelectedOnPkg = ?', 1);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelPkgPriceByCat($itnID, $catID) {
        $select = $this->db->select();
        $select->from(array('TACTA' => "TB_Agency_Customer_TravelPlan_Accom"));
        $select->where('TACTA.TPIntSysId = ?', $itnID);
        $select->where('TACTA.BYOPackType = ?', $catID);
        $select->where('TACTA.IsMarkForDel = ?', 0);
        $select->where('TACTA.IsSelectedOnPkg = ?', 1);
//         echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetRouteName($routesysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Transport_Route"));
        $select->where('TB_Agency_Transport_Route.RouteSysId = ?', $routesysID);
        $select->where('TB_Agency_Transport_Route.IsMarkForDel = ?', 0);
        $select->where('TB_Agency_Transport_Route.IsActive = ?', 1);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelPriceReadyMade($itnID, $roominfojson, $catID) {
        $hotelInfo = $this->GetHotelPkgPriceByCat($itnID, $catID);
        $roominfoarr = json_decode($roominfojson, 1);
        $totalhotelprice = 0;
        if (!empty($hotelInfo)) {
//added by pooja on 16 aug 2017
            $totalhotelprice = Zend_Controller_Action_HelperBroker::getStaticHelper('DynamicPackage')->getTotlaCostOfHotelByTravelers($hotelInfo, $roominfoarr);
        }
        return $totalhotelprice;
    }

    public function GetHotelPriceBYO($itnID, $roominfojson, $catID, $mealID) {
        $hotelInfo = $this->GetHotelPriceByCat($itnID, $catID, $mealID);
        $roominfoarr = json_decode($roominfojson, 1);
        $totalhotelprice = 0;

        if (!empty($hotelInfo)) {
            $totalhotelprice = Zend_Controller_Action_HelperBroker::getStaticHelper('DynamicPackage')->getTotlaCostOfHotelByTravelers($hotelInfo, $roominfoarr);
        }
        return $totalhotelprice;
    }

    public function GetHotelCostBYOPP($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler, $catID, $MealTypeId = null, $hotelInfo = NULL) {
        $totalpriceperperson = 0;
        if (empty($hotelInfo)) {
            $hotelInfo = $this->GetHotelCostByItenaryBYO($intsysId, $catID, $MealTypeId);
        }
        $totalpriceperperson = $totalpriceperperson + $hotelInfo['TotalCost'] / $totaltraveler;
        return $totalpriceperperson;
    }

    public function GetHotelCostBYO($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler, $catID, $MealTypeId = 0, $hotelInfo = NULL) {
        if (empty($hotelInfo)) {
            $hotelInfo = $this->GetHotelCostByItenaryBYO($intsysId, $catID, $MealTypeId);
        }
        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'];
        $hotelprice['perperson'] = $hotelInfo['TotalCost'] / $totaltraveler;
        $hotelprice['totalbaseCost'] = $hotelInfo['TotalBaseCost'];
        $hotelprice['perpersonbaseCost'] = $hotelInfo['TotalBaseCost'] / $totaltraveler;
        $hotelprice['InvnItemSysId'] = $hotelInfo['InvnItemSysId'];
        $hotelprice['CurrencyType'] = $hotelInfo['CurrencyType'];
        $hotelprice['CatID'] = $catID;
        return $hotelprice;
    }

    public function GetHotelCostCatBYO($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler, $catID) {
        $hotelInfo = $this->GetHotelCostByCatItenaryBYO($intsysId, $catID);

        $totalhotelprice = 0;

        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'];
        $hotelprice['perperson'] = $hotelInfo['TotalCost'] / $totaltraveler;
        $hotelprice['InvnItemSysId'] = $hotelInfo['InvnItemSysId'];
        return $hotelprice;
    }

    public function GetHotelCostByVersion($versionID, $totaltraveler, $tpintsysID) {
        $hotelInfo = $this->GetHotelCostVersionID($versionID);
        $totalhotelprice = 0;
        $ismasterexist = $this->IsMasterExist($versionID);
        if ($ismasterexist['MasterIntSysId']) {
            $sql = "SELECT TotalCost,TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $ismasterexist['MasterIntSysId'] . "' OR MasterIntSysId = '" . $ismasterexist['MasterIntSysId'] . "') AND IsSelectedOnPkg = 1";
        } else {
            $sql = "SELECT TotalCost,TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        }
        $result = $this->db->query($sql)->fetchAll();
        $totalcount = count($result);

        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'] * $totalcount;
        $hotelprice['perperson'] = ($hotelInfo['TotalCost'] * $totalcount) / $totaltraveler;
        return $hotelprice;
    }

    public function GetHotelCostByVersionBYO($versionID, $totaltraveler, $tpintsysID) {
        $hotelInfo = $this->GetHotelCostVersionID($versionID);
        $totalhotelprice = 0;
        $ismasterexist = $this->IsMasterExistBYO($versionID);
        if ($ismasterexist['MasterIntSysId']) {
            $sql = "SELECT TotalCost,TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $ismasterexist['MasterIntSysId'] . "' OR MasterIntSysId = '" . $ismasterexist['MasterIntSysId'] . "') AND IsSelectedOnPkg = 1";
        } else {
            $sql = "SELECT TotalCost,TPIntSysId FROM TB_TravelPlan_Itenary_Accom WHERE (TPIntSysId = '" . $tpintsysID . "' OR MasterIntSysId = '" . $tpintsysID . "') AND IsSelectedOnPkg = 1";
        }
        $result = $this->db->query($sql)->fetchAll();
        $totalcount = count($result);

        $hotelprice = array();
        $hotelprice['totalprice'] = $hotelInfo['TotalCost'] * $totalcount;
        $hotelprice['perperson'] = ($hotelInfo['TotalCost'] * $totalcount) / $totaltraveler;
        return $hotelprice;
    }

    public function IsMasterExist($versionID) {
        $selectedfields = array('MasterIntSysId');
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_TravelPlan_Accom"), $selectedfields);
        $select->where('TB_Agency_Customer_TravelPlan_Accom.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsMasterExistBYO($versionID) {
        $selectedfields = array('MasterIntSysId');
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"), $selectedfields);
        $select->where('TTIA.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetFlightCost($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler) {
        $flightinfo = $this->GetFlightByItenaryCost($intsysId);
        if (count($flightinfo) > 0) {
            $flightprice = $flightinfo['Cost'];
        }
    }

    public function GetActivityCostByIten($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler) {
        $getactivityDetails = $this->GetActivityCost($intsysId);

        $roominfoarr = json_decode($numberoftraveler, 1);
        $adultcount = 0;
        $childcount = 0;
        for (
                $k = 1;
                $k <= count($roominfoarr);
                $k++
        ) {
            $adultcount = $adultcount + $roominfoarr[$k]['Adult'];
            $childcount = $childcount + $roominfoarr[$k]['Child'];
        }
        $totaltraveler = $adultcount + $childcount;
        $adultactivitycost = 0;
        $childactivitycost = 0;
        $totalcost = 0;
        $totalcostpp = 0;
        if (count($getactivityDetails) > 0) {
            for (
                    $i = 0;
                    $i < count($getactivityDetails);
                    $i++
            ) {
                $totalcost = $totalcost + $getactivityDetails[$i]['TotalCost'];
                $totalcostpp = $totalcostpp + ($totalcost / $totaltraveler);
            }
        }
//$totalactivitycost = $adultactivitycost+$childactivitycost;
        $activitycost = array();
        $activitycost['totalcost'] = $totalcost;
        $activitycost['costperperson'] = $totalcostpp;
        return $activitycost;
    }

    public function GetSightSeeingCostByIten($intsysId, $numberoftraveler, $adultPax, $childPax, $totaltraveler) {
        $sightseeingcost = $this->GetSightSeeingCost($intsysId);
        $roominfoarr = json_decode($numberoftraveler, 1);
        $adultcount = 0;
        $childcount = 0;
        for (
                $k = 1;
                $k <= count($roominfoarr);
                $k++
        ) {
            $adultcount = $adultcount + $roominfoarr[$k]['Adult'];
            $childcount = $childcount + $roominfoarr[$k]['Child'];
        }
        $totaltraveler = $adultcount + $childcount;
        $adultssycost = 0;
        $childsscost = 0;
        $costpp = 0;
        if (count($sightseeingcost) > 0) {
            for (
                    $i = 0;
                    $i < count($sightseeingcost);
                    $i++
            ) {
                $adultssycost = $adultssycost + $sightseeingcost[$i]['TotalCost'];
                $childsscost = $costpp + ($adultssycost / $totaltraveler);
            }
        }
        $totalsscost = $adultssycost + $childsscost;
        $sscost = array();
        $sscost['totalcost'] = $adultssycost;
        $sscost['costperperson'] = $childsscost;
        return $sscost;
    }

    public function GetCustomerDetailByPackage($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACT' => "TB_Agency_Customer_TravelPlan"));
//$select->joinLeft(array("TB_CRM_CustomerAccount"), "TB_CRM_CustomerAccount.CRMCustSysId = TACT.CustomerSysId");
        $select->joinLeft(array("TB_Agency_Customer"), "TB_Agency_Customer.CustomerSysId = TACT.CustomerSysId");
        $select->joinLeft(array('TACTMR' => "TB_Agency_Customer_TravelPlan_MarketWise_Rate"), "TACTMR.TPIntSysId = TACT.TPSysId");
        $select->where('TACT.TPSysId = ?', $tpsysID);
        $select->where('TACTMR.IsMarkForDel = ?', 0);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTransPortOption($tpsysID) {
        $transtype = "SELECT  COUNT(*) as total,TransType from TB_Agency_Customer_Trans_Fixed WHERE TPSysId = '" . $tpsysID . "' AND IsDisplay = '1' GROUP BY  TransType";
        $resultPackageActivity = $this->db->query($transtype)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetTransPortOptionBYO($tpsysID) {
        $transtype = "SELECT  COUNT(*) as total,TransType from TB_TravelPlan_Trans_Fixed WHERE TPSysId = '" . $tpsysID . "' AND IsMarkForDel = '0' GROUP BY  TransType";
        $resultPackageActivity = $this->db->query($transtype)->fetchAll();
        return $resultPackageActivity;
    }

    public function GetlowestFixedFlightPrice($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'flight');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
        $select->order("TB_Agency_Customer_Trans_Fixed.TPIntSysId ASC");
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetVehiclePrice($vehsysID, $tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.VehSysId = ?', $vehsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
        $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice != 0');
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetVehiclePriceByo($vehsysID, $tpsysID) {
        $select = $this->db->select();
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.VehSysId = ?', $vehsysID);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.IsMarkForDel = ?', '0');
        $select->where('TTTF.TotalPrice != 0');
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTransPortOptionInB2B($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), array("TransTypeCat", "FromDate", "FromPlace", "ToDate", "ToPlace", "TotalPrice", "Type", "TransType"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetPlacesOptionInB2B($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTIP' => "TB_Agency_Customer_TravelPlan_Itenary_Places"), array("Sequence", "PlaceSysId"));
        $select->where('TACTIP.TPSysId = ?', $tpsysID);
        $select->where('TACTIP.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetDaySequence($tpsysID) {
        $selectedfields = array('Sequence', 'CreateDate');
        $select = $this->db->select();
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedfields);
        $select->where('TACTI.TPIntSysId = ?', $tpsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetlowestFixedTrainPrice($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'train');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
        $select->order("TB_Agency_Customer_Trans_Fixed.CostPerson ASC");
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetlowestFixedBusPrice($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'bus');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
        $select->order("TB_Agency_Customer_Trans_Fixed.CostPerson ASC");
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetlowestFixedCarPrice($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'car');
        $select->where('TB_Agency_Customer_Trans_Fixed.CostPerson > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice > ?', 0);
        $select->order("TB_Agency_Customer_Trans_Fixed.CostPerson ASC");
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function SaveDraft($tpsysID, $tabname) {
        $where = array('TPSysId = ? ' => $tpsysID);
        $updateData = array('IsDraft' => '1', 'DraftActiveTab' => $tabname, 'IsActive' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function SaveDraftReadymade($tpsysID, $tabname) {
        $where = array('TPSysId = ? ' => $tpsysID);
        $updateData = array('IsDraft' => '1', 'DraftActiveTab' => $tabname, 'IsActive' => '0');
        $this->db->update('TB_TravelPlan', $updateData, $where);
    }

    function IsTermsnCondAvailableByAgent($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_Terms_Conditions"));
        $select->where('TB_TravelPlan_Terms_Conditions.TPIntSysId = ?', $tpsysID);
        $select->where('TB_TravelPlan_Terms_Conditions.IsMarkForDel = ?', '0');
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    function IsTermsnCondAvailableByAgentBYO($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTTC' => "TB_Agency_Customer_TravelPlan_Terms_Conditions"));
        $select->where('TACTTC.TPIntSysId = ?', $tpsysID);
        $select->where('TACTTC.IsMarkForDel = ?', '0');
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function UnDraft($tpsysID) {
        $where = array('TPSysId = ? ' => $tpsysID);
        $updateData = array('IsDraft' => '0', 'DraftActiveTab' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function ActivatePackage($tpsysID) {
        $where = array('TPSysId = ? ' => $tpsysID);
        $updateData = array('IsDraft' => '0', 'IsActive' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function DeActivatePackage($tpsysID) {
        $where = array('TPSysId = ? ' => $tpsysID);
        $updateData = array('IsDraft' => '0', 'IsActive' => '0');
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function GetSupplierInfo($suppID) {
        $select = $this->db->select();
        $select->from(array("TB_IC_Supplier"));
        $select->joinLeft(array("TB_Master_Geo_City"), "TB_Master_Geo_City.CityId = TB_IC_Supplier.CitySysId");
        $select->where('TB_IC_Supplier.SupplierSysId = ?', $suppID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetEconomyTypeName($economyID) {
        $select = $this->db->select();
        $select->from(array("TB_Master_RoomType"));
        $select->where('TB_Master_RoomType.RoomType = ?', $economyID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAirportNameByCity($cityID) {
        $select = $this->db->select();
        $select->from(array("TB_Master_Airport"));
        $select->where('TB_Master_Airport.CityId = ?', $cityID);
        $result = $this->db->fetchRow($select);

        return $result;
    }

    public function UpdateTransPort($tpsysID, $tpintsysID, $FixTransSysId, $adult, $child, $roominfojson) {

        $getotheroption = $this->GetTransportAttribute($FixTransSysId);
        $sourceID = $getotheroption['SourceCityId'];
        $destID = $getotheroption['DestCityId'];
        $transtype = $getotheroption['TransType'];

        $updatewherequery = array(
            'SourceCityId = ?' => $sourceID,
            'DestCityId = ?' => $destID,
            'TransType = ?' => $transtype,
            'TPIntSysId = ?' => $tpintsysID
        );
        $updateDataquery = array('Type' => 'Optional', 'IsIncluded' => '0');
        $updatequery1 = $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateDataquery, $updatewherequery);
        $totaltraveler = $adult + $child;
        $updatewhere = array('FixTransSysId = ? ' => $FixTransSysId);
        $updateData = array('Type' => 'Included', 'IsIncluded' => '1');
        $updatequery = $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $updatewhere);
        if ($updatequery) {
//echo "Activity Updated";
            $this->UpdateHotelSelection('0', $tpintsysID, '', $tpsysID, 'PKG', $roominfojson, $adult, $child, $totaltraveler, '');
        }
    }

    public function GetSelectedTransportPrice($sourceID, $destinationID, $tpintsysID, $vtype) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', $vtype);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $destinationID);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);

//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedCarPrice($tpsysID, $vtype) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', $vtype);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetOtherTransportOption($tpintsysID, $vtype, $sourceID, $destID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', $vtype);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $destID);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCustomerTnCDetails($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_TravelPlan_Terms_Conditions"));
        $select->where('TB_Agency_Customer_TravelPlan_Terms_Conditions.TPIntSysId = ?', $tpsysID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getCustomerTnCDetailsBYO($tpsysID) {
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_Terms_Conditions"));
        $select->where('TB_TravelPlan_Terms_Conditions.TPIntSysId = ?', $tpsysID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTransportAttribute($fixtransID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.FixTransSysId = ?', $fixtransID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetTransportOptionalItem($getsourceID, $getdestID, $tpintsysID, $transtype) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_Trans_Fixed"));
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', $transtype);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $getsourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $getdestID);
        $select->order('TB_Agency_Customer_Trans_Fixed.TotalPrice DESC');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 0);
//  echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function RemoveTransPort($tpsysID, $tpintsysID, $FixTransSysId, $adult, $child, $roominfojson) {

        $getotheroption = $this->GetTransportAttribute($FixTransSysId);
        $getsourceID = $getotheroption['SourceCityId'];
        $getdestID = $getotheroption['DestCityId'];
        $transtype = $getotheroption['TransType'];
        $getotheroptionfixvalue = $this->GetTransportOptionalItem($getsourceID, $getdestID, $tpintsysID, $transtype);
        $totaltraveler = $adult + $child;
        $updatewhere = array('FixTransSysId = ? ' => $FixTransSysId);
        $updateData = array('Type' => 'Optional', 'IsIncluded' => '0');
        $updatequery = $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $updatewhere);
        $updatewherequery = array('FixTransSysId = ? ' => $getotheroptionfixvalue['FixTransSysId']);
        $updatewhereData = array('Type' => 'Included', 'IsIncluded' => '1');
        $updatequerydata = $this->db->update('TB_Agency_Customer_Trans_Fixed', $updatewhereData, $updatewherequery);
        if ($updatequery) {
//echo "Activity Updated";
            $this->UpdateHotelSelection('0', $tpintsysID, '', $tpsysID, 'PKG', $roominfojson, $adult, $child, $totaltraveler, '');
        }
    }

    public function onHoldPackage($updateData, $tpsysID, $masterTpsysID) {
        $where = array('TPSysId != ?' => $tpsysID, 'MasterTPSysId = ? ' => $masterTpsysID);
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function GetSupplerNameById($id) {
        $select = $this->db->select();
        $select->from(array("TB_IC_Supplier"));
        $select->where('TB_IC_Supplier.SupplierSysId = ?', $id);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelDistributedCost($accomsysID) {
        $select = $this->db->select();
        $select->from(array("TB_MP_Inventory_Accom"));
        $select->where('TB_MP_Inventory_Accom.XRefAccoSysId = ?', $accomsysID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetActivityDistributedCost($versionID) {
        $select = $this->db->select();
        $select->from(array('TACTIE' => "TB_Agency_Customer_TravelPlan_Itenary_Events"));
        $select->where('TACTIE.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSSDistributedCost($versionID) {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Customer_TravelPlan_SightSeeing"));
        $select->where('TB_Agency_Customer_TravelPlan_SightSeeing.VersionId = ?', $versionID);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetDraftBYOPkgList($pkgtitle, $crmcustID, $going_from_city_id, $going_to_city_id, $agencysysID) {
        $select = $this->db->select();
        $selectedvalues = array('TPSysId', 'Title as Packagename', 'AgencySysId', 'PlanType', 'StartDate', 'MinPax', 'DestinationPlaces', 'SourcePlaces', 'Readymade', 'IsMarkForDel', 'RoomInfoJson', 'IsDraft', 'DraftActiveTab', 'CustomerSysId', 'IsActive');
        $customerdetails = array('FirstName', 'LastName');
        $select->from(array("tb1" => "TB_Agency_Customer_TravelPlan_Query"), $selectedvalues);
        if (!empty($pkgtitle)) {
            $select->where('tb1.Title = ?', $pkgtitle);
        }
        if (!empty($crmcustID)) {
            $select->where('tb1.CustomerSysId = ?', $crmcustID);
        }
        if (!empty($going_from_city_id)) {
            $select->where('tb1.SourcePlaceSysId = ?', $going_from_city_id);
        }
        if (!empty($going_to_city_id)) {
            $select->where('tb1.DestinationPlacesSysId = ?', $going_to_city_id);
        }
        $select->where('tb1.PlanType = ?', 5);
        $select->joinInner(array("TB_Agency_Customer"), "TB_Agency_Customer.CustomerSysId = tb1.CustomerSysId", $customerdetails);
        $select->where('tb1.Readymade = ?', 0);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb1.MasterTPSysId = ?', 0);
        $select->where('tb1.IsDraft =  1');
//  $select->orWhere('tb1.IsActive = ?', 1);
        $select->where('tb1.AgencySysId = ?', $agencysysID);
        $select->order('tb1.TPSysId DESC');
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetBYOPkgList($pkgtitle, $crmcustID, $going_from_city_id, $going_to_city_id, $agencysysID) {
        $select = $this->db->select();
        $selectedvalues = array('TPSysId', 'Title as Packagename', 'AgencySysId', 'PlanType', 'StartDate', 'MinPax', 'DestinationPlaces', 'SourcePlaces', 'Readymade', 'IsMarkForDel', 'RoomInfoJson', 'IsDraft', 'DraftActiveTab', 'CustomerSysId', 'IsActive');
        $customerdetails = array('FirstName', 'LastName');
        $select->from(array("tb1" => "TB_Agency_Customer_TravelPlan_Query"), $selectedvalues);
        if (!empty($pkgtitle)) {
            $select->where('tb1.Title = ?', $pkgtitle);
        }
        if (!empty($crmcustID)) {
            $select->where('tb1.CustomerSysId = ?', $crmcustID);
        }
        if (!empty($going_from_city_id)) {
            $select->where('tb1.SourcePlaceSysId = ?', $going_from_city_id);
        }
        if (!empty($going_to_city_id)) {
            $select->where('tb1.DestinationPlacesSysId = ?', $going_to_city_id);
        }
        $select->where('tb1.PlanType = ?', 5);
        $select->joinInner(array("TB_Agency_Customer"), "TB_Agency_Customer.CustomerSysId = tb1.CustomerSysId", $customerdetails);
        $select->where('tb1.Readymade = ?', 0);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb1.MasterTPSysId = ?', 0);
        $select->where('tb1.IsActive = 1 OR tb1.IsDraft =  0');
//  $select->orWhere('tb1.IsActive = ?', 1);
        $select->where('tb1.AgencySysId = ?', $agencysysID);
        $select->order('tb1.TPSysId DESC');
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function deleteBYOPkg($tpsysId) {
        $where = array('TPSysId = ? ' => $tpsysId);
        $updateData = array('IsMarkForDel' => '1');
        $this->db->update('TB_Agency_Customer_TravelPlan', $updateData, $where);
    }

    public function GetCustomerIdByEmail($email, $agencysysID) {
        $select = $this->db->select();
        $selectedvalues = array('CustomerSysId');
        $select->from(array("TB_Agency_Customer"));
        $select->where('TB_Agency_Customer.EmailId = ?', $email);
        $select->where('TB_Agency_Customer.AgencySysId = ?', $agencysysID);
        $select->where('TB_Agency_Customer.IsActive = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result[0]['CustomerSysId'];
    }

    public function GetlAllSequenceByTPID($tpsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $selectedvalues);
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $select->where('TTI.IsActive = ?', 1);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
//    return $result[0]['CustomerSysId'];
    }

    public function GetlAllSequenceByTPIDBYO($tpsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedvalues);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $select->where('TACTI.IsActive = ?', 1);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
//    return $result[0]['CustomerSysId'];
    }

    public function GetAllPolicyDetails() {
        $select = $this->db->select();
        $select->from(array("TB_Insurance_Company"));
        $select->joinLeft(array('TB_Insurance_Policy_Master' => "TB_Insurance_Policy_Master"), "TB_Insurance_Company.InsuCompSysId = TB_Insurance_Policy_Master.InsuCompSysId");
        $select->where('TB_Insurance_Company.IsMarkForDelete = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetInsuranceItinerary($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("TPIntSysId", "TPSysId", "IsMarkForDel");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedfields);
        $select->where('TACTI.TPSysId = ?', $tpsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $select->order("TACTI.TPIntSysId ASC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetInsuranceItineraryBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("TPIntSysId", "TPSysId", "IsMarkForDel");
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $selectedfields);
        $select->where('TTI.TPSysId = ?', $tpsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $select->order("TTI.TPIntSysId ASC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMasterPolicySysID($companysysID) {
        $select = $this->db->select();
        $selectedfields = array("InsuCompSysId", "MasterPolicySysId", "IsMarkForDelete");
        $select->from(array("TB_Insurance_Policy_Master"), $selectedfields);
        $select->where('TB_Insurance_Policy_Master.InsuCompSysId = ?', $companysysID);
        $select->where('TB_Insurance_Policy_Master.IsMarkForDelete = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetCustomerPolicyId($masterpolicyID, $tpitnID) {
        $select = $this->db->select();
        $selectedfields = array("CustPolicySysId", "MasterPolicySysId");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->where('TACTI.MasterPolicySysId = ?', $masterpolicyID);
        $select->where('TACTI.TPIntSysId = ?', $tpitnID);
        $select->where('TACTI.IsMarkForDelete = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkVehicleType($vehsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.VehSysId = ?', $vehsysID);
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedGroupCost($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("VehSysId");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.IsGroup = ?', 1);
        $select->where('TTTF.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedInsuranceOption($tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("MasterPolicySysId");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->where('TACTI.TPIntSysId = ?', $tpintsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedInsuranceOptionBYO($tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("MasterPolicySysId");
        $select->from(array("TB_TravelPlan_Insurance"), $selectedfields);
        $select->where('TB_TravelPlan_Insurance.TPIntSysId = ?', $tpintsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedPolicyIdByCustomer($tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("MasterPolicySysId", 'Insurer');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->where('TACTI.TPIntSysId = ?', $tpintsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSequenceNum($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence', 'Cities', 'StartDate', 'EndDate');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"));
        $select->where('TACTI.TPIntSysId = ?', $tpintsysID);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSequenceNumByo($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence', 'Cities', 'StartDate', 'EndDate');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPIntSysId = ?', $tpintsysID);
        $select->where('TTI.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function IsBusAdded($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('TPSysId', 'TPIntSysId', 'Type', 'IsIncluded');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.TransType = ?', 'bus');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function IsTrainAdded($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('TPSysId', 'TPIntSysId', 'Type', 'IsIncluded');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.TransType = ?', 'train');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetLastSeq($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"));
        $select->where('TACTI.TPSysId = ?', $tpintsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetLastSeqBYO($tpintsysID) {
        $select = $this->db->select();
        $selectedvalues = array('Sequence');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"));
        $select->where('TTI.TPSysId = ?', $tpintsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarkupPriceDetailbyo($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMarkupPriceDetail($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TACTMR' => "TB_Agency_Customer_TravelPlan_MarketWise_Rate"));
        $select->where('TACTMR.TPIntSysId = ?', $tpsysID);
        $select->where('TACTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetLatestPolicyNum($mastepolicyID) {
        $select = $this->db->select();
        $select->from(array("TB_Insurance_Policy_Childs"));
        $select->where('TB_Insurance_Policy_Childs.MasterPolicyRef = ?', $mastepolicyID);
        $select->where('TB_Insurance_Policy_Childs.IsIssued = ?', 0);
        $select->where('TB_Insurance_Policy_Childs.IsMarkForDelete = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetLatestTrxGrpID() {
        $select = $this->db->select();
        $selectedfields = array("TrxGroupId");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->order("TACTI.CustPolicySysId DESC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedInsurer($copmsysID, $tpitineraryID) {
        $select = $this->db->select();
        $selectedfields = array("PolicyNo", "Insurer", "TPIntSysId", "IsSelected");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->where('TACTI.Insurer = ?', $copmsysID);
        $select->where('TACTI.TPIntSysId = ?', $tpitineraryID);
        $select->where('TACTI.IsSelected = ?', 1);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsInsuranceExist($tpitineraryID) {
        $select = $this->db->select();
        $selectedfields = array("PolicyNo", "Insurer", "TPIntSysId", "IsSelected", "NetPaid", "SumInsured");
        $insurerfields = array("DisplayName", "logo", "InsuCompSysId");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Insurance"), $selectedfields);
        $select->joinLeft(array("TB_Insurance_Company"), "TB_Insurance_Company.InsuCompSysId = TACTI.Insurer", $insurerfields);
        $select->where('TACTI.TPIntSysId = ?', $tpitineraryID);
        $select->where('TACTI.IsSelected = ?', 1);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function DeleteInsurance($where = NULL, $tablename = '') {
        if (!empty($tablename) && !empty($where)) {
            $this->db->delete($tablename, $where);
        }
    }

    public function UpdateTranstypeFlightCost($sourceID, $cityID, $tpsysID) {
        $tplanitinerarydetails = $this->GetTravelPlanItenaryID($tpsysID);
        for (
                $j = 0;
                $j < count($tplanitinerarydetails);
                $j++
        ) {
            $tpinternrayID = $tplanitinerarydetails[$j]['TPIntSysId'];
            $chkincludedflight = $this->ChkIsIncludedFlight($sourceID, $cityID, $tpinternrayID);
            if (empty($chkincludedflight)) {
                $select = $this->db->select();
                $travel_airline = array('FixTransSysId');
                $select->from(array("TB_Agency_Customer_Trans_Fixed"));
                $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
                $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $cityID);
                $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpinternrayID);
                $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
                $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'flight');
                $select->order("TB_Agency_Customer_Trans_Fixed.TotalPrice ASC");
                $result = $this->db->fetchRow($select);
                if (count($result) > 0) {
                    $fixedtransID = $result['FixTransSysId'];
                    $where = array('FixTransSysId = ? ' => $fixedtransID);
                    $updateData = array('IsIncluded' => '1');
                    $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $where);
                }
            }
        }
    }

    public function UpdateTranstypeBusCost($sourceID, $cityID, $tpsysID) {
        $tplanitineraryID = $this->GetTravelPlanItenaryID($tpsysID);
        for (
                $i = 0;
                $i < count($tplanitineraryID);
                $i++
        ) {
            $tpinternrayID = $tplanitineraryID[$i]['TPIntSysId'];
            $chkincludedbus = $this->ChkIsIncludedBus($sourceID, $cityID, $tpinternrayID);
            if (empty($chkincludedbus)) {
                $select = $this->db->select();
                $travel_airline = array('FixTransSysId');
                $select->from(array("TB_Agency_Customer_Trans_Fixed"));
                $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
                $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $cityID);
                $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpinternrayID);
                $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
                $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'bus');
                $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', '0');
                $select->order("TB_Agency_Customer_Trans_Fixed.TotalPrice ASC");
                $result = $this->db->fetchRow($select);

                if (count($result) > 0) {
                    $fixedtransID = $result['FixTransSysId'];
                    $where = array('FixTransSysId = ? ' => $fixedtransID);
                    $updateData = array('IsIncluded' => '1');
                    $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $where);
                }
            }
        }
    }

    public function UpdateTranstypeBusCostBYO($sourceID, $cityID, $tpsysID) {
        $tplanitineraryID = $this->GetTravelPlanBYOItenaryID($tpsysID);
        for (
                $i = 0;
                $i < count($tplanitineraryID);
                $i++
        ) {
            $tpinternrayID = $tplanitineraryID[$i]['TPIntSysId'];
            $chkincludedbus = $this->ChkIsIncludedBusBYO($sourceID, $cityID, $tpinternrayID);
            if (empty($chkincludedbus)) {
                $select = $this->db->select();
                $travel_airline = array('FixTransSysId');
                $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
                $select->where('TTTF.SourceCityId = ?', $sourceID);
                $select->where('TTTF.DestCityId = ?', $cityID);
                $select->where('TTTF.TPIntSysId = ?', $tpinternrayID);
                $select->where('TTTF.Type = ?', 'Included');
                $select->where('TTTF.TransType = ?', 'bus');
                $select->where('TTTF.IsMarkForDel = ?', '0');
                $select->order("TTTF.TotalPrice ASC");
                $result = $this->db->fetchRow($select);

                if (count($result) > 0) {
                    $fixedtransID = $result['FixTransSysId'];
                    $where = array('FixTransSysId = ? ' => $fixedtransID);
                    $updateData = array('IsIncluded' => '1');
                    $this->db->update('TB_TravelPlan_Trans_Fixed', $updateData, $where);
                }
            }
        }
    }

    public function UpdateTranstypeTrainCost($sourceID, $cityID, $tpsysID) {
        $tplanitineraryID = $this->GetTravelPlanItenaryID($tpsysID);
        for (
                $i = 0;
                $i < count($tplanitineraryID);
                $i++
        ) {
            $tpinternrayID = $tplanitineraryID[$i]['TPIntSysId'];
            $chkincludedtrain = $this->ChkIsIncludedTrain($sourceID, $cityID, $tpinternrayID);
            if (empty($chkincludedtrain)) {
                $select = $this->db->select();
                $travel_airline = array('FixTransSysId');
                $select->from(array("TB_Agency_Customer_Trans_Fixed"));
                $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
                $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $cityID);
                $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpinternrayID);
                $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
                $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'train');
                $select->order("TB_Agency_Customer_Trans_Fixed.TotalPrice ASC");
                $result = $this->db->fetchRow($select);
                if (count($result) > 0) {
                    $fixedtransID = $result['FixTransSysId'];
                    $where = array('FixTransSysId = ? ' => $fixedtransID);
                    $updateData = array('IsIncluded' => '1');
                    $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $where);
                }
            }
        }
    }

    public function UpdateTranstypeTrainCostBYO($sourceID, $cityID, $tpsysID) {
        $tplanitineraryID = $this->GetTravelPlanBYOItenaryID($tpsysID);
        for (
                $i = 0;
                $i < count($tplanitineraryID);
                $i++
        ) {
            $tpinternrayID = $tplanitineraryID[$i]['TPIntSysId'];
            $chkincludedtrain = $this->ChkIsIncludedTrain($sourceID, $cityID, $tpinternrayID);
            if (empty($chkincludedtrain)) {
                $select = $this->db->select();
                $travel_airline = array('FixTransSysId');
                $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));
                $select->where('TTTF.SourceCityId = ?', $sourceID);
                $select->where('TTTF.DestCityId = ?', $cityID);
                $select->where('TTTF.TPIntSysId = ?', $tpinternrayID);
                $select->where('TTTF.Type = ?', 'Included');
                $select->where('TTTF.TransType = ?', 'train');
                $select->order("TTTF.TotalPrice ASC");
                $result = $this->db->fetchRow($select);
                if (count($result) > 0) {
                    $fixedtransID = $result['FixTransSysId'];
                    $where = array('FixTransSysId = ? ' => $fixedtransID);
                    $updateData = array('IsIncluded' => '1');
                    $this->db->update('TB_TravelPlan_Trans_Fixed', $updateData, $where);
                }
            }
        }
    }

    public function UpdateTranstypeCarCost($tpsysID) {
        $chkincludedcar = $this->ChkIsIncludedCar($tpsysID);

        if (empty($chkincludedcar)) {
            $select = $this->db->select();
            $travel_airline = array('FixTransSysId');
            $select->from(array("TB_Agency_Customer_Trans_Fixed"));

            $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
            $select->where('TB_Agency_Customer_Trans_Fixed.CostPerson > ?', 0);
            $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice > ?', 0);
//$select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
            $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'car');
            $select->order("TB_Agency_Customer_Trans_Fixed.TotalPrice ASC");

            $result = $this->db->fetchRow($select);
            if (count($result) > 0) {
                $fixedtransID = $result['FixTransSysId'];
                $where = array('FixTransSysId = ? ' => $fixedtransID);
                $updateData = array('IsIncluded' => '1');
                $this->db->update('TB_Agency_Customer_Trans_Fixed', $updateData, $where);
            }
        }
    }

    public function UpdateTranstypeCarCostBYO($tpsysID) {
        $chkincludedcar = $this->ChkIsIncludedCarBYO($tpsysID);

        if (empty($chkincludedcar)) {
            $select = $this->db->select();
            $travel_airline = array('FixTransSysId');
            $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"));

            $select->where('TTTF.TPSysId = ?', $tpsysID);
            $select->where('TTTF.CostPerson > ?', 0);
            $select->where('TTTF.TotalPrice > ?', 0);
            $select->where('TTTF.IsGroup = ?', 0);
            $select->where('TTTF.TransType = ?', 'car');
            $select->where('TTTF.IsMarkForDel = ?', 0);
            $select->order("TTTF.TotalPrice ASC");

            $result = $this->db->fetchRow($select);
            if (!empty($result)) {
                $fixedtransID = $result['FixTransSysId'];
                $where = array('FixTransSysId = ? ' => $fixedtransID);
                $updateData = array('IsIncluded' => '1');
                $this->db->update('TB_TravelPlan_Trans_Fixed', $updateData, $where);
            }
        }
    }

    public function ChkIsIncludedCarBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.Type = ?', 'Included');
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsGroup = ?', 0);
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkIsIncludedCar($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'car');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkVehicleSysID($vehiclesysID, $tpsysID, $routesysID) {
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));

        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.VehSysId = ?', $vehiclesysID);
        $select->where('tb2.RouteSysId = ?', $routesysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsCarAvailable($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->join(array('tb3' => "TB_Agency_Transport_Route"), "tb3.RouteSysId = tb2.RouteSysId");
        $select->join(array('tb4' => "TB_Master_Geo_City"), "tb4.CityId = tb3.StartCitySysId", $selectedcity);
        $select->joinLeft(array('tb6' => "TB_Master_Geo_City"), "tb6.CityId = tb3.EndCitySysId", array('Title as EndCityName'));
        $select->join(array('tb5' => "TB_Master_Vehicle"), "tb5.VehSysId = tb2.VehicleTypeSysId");
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsMarkForDel = ?', 0);
//        echo $select; die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllCarDetails($tpsysID, $tourID = 1) {
        $isGroup = ($tourID == 1) ? 0 : 1;
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->join(array('tb3' => "TB_Agency_Transport_Route"), "tb3.RouteSysId = tb2.RouteSysId");
        $select->join(array('tb4' => "TB_Master_Geo_City"), "tb4.CityId = tb3.StartCitySysId", $selectedcity);
        $select->join(array('tb5' => "TB_Master_Vehicle"), "tb5.VehSysId = tb2.VehicleTypeSysId", array('VehName'));
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->where('tb2.IsGroup = ?', $isGroup);
        $select->order('tb2.TotalPrice ASC');
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllPkgCarDetails($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"));
        $select->join(array('tb3' => "TB_Agency_Transport_Route"), "tb3.RouteSysId = tb2.RouteSysId");
        $select->join(array('tb4' => "TB_Master_Geo_City"), "tb4.CityId = tb3.StartCitySysId", $selectedcity);
        $select->join(array('tb5' => "TB_Master_Vehicle"), "tb5.VehSysId = tb2.VehicleTypeSysId");
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->where('tb2.IsGroup = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetSelectedCarVehiclePrice($tpsysID, $tourID = 1) {
        $isGroup = ($tourID == 1) ? 0 : 1;
        $IsIncluded = ($tourID == 1) ? 1 : 0;
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice', 'Capacity');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsIncluded = ?', $IsIncluded);
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->where('tb2.IsGroup = ?', $isGroup);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetPkgSelectedCarVehiclePrice($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsIncluded = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->where('tb2.IsGroup = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedTrainPrice($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'train');
        $select->where('tb2.IsIncluded = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedTrainPkgPrice($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'train');
        $select->where('tb2.IsIncluded = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedBusPrice($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'bus');
        $select->where('tb2.IsIncluded = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedPkgBusPrice($tpsysID) {
        $select = $this->db->select();
        $selectedcity = array('CostPerson', 'TotalPrice');
        $select->from(array('tb2' => "TB_Agency_Customer_Trans_Fixed"), $selectedcity);
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'bus');
        $select->where('tb2.IsIncluded = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedOtherService($tpintsysID) {
        $select = $this->db->select();
// $selectedcity = array('CostPerson');
        $select->from(array('tb2' => "TB_TravelPlan_OtherServices"));
        $select->where('tb2.TPIntSysId = ?', $tpintsysID);
        $select->where('tb2.IsCostInclInTP = ?', 1);
        $select->where('tb2.IsMarkForDelete = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetSelectedPkgOtherService($tpintsysID) {
        $select = $this->db->select();
// $selectedcity = array('CostPerson');
        $select->from(array('tb2' => "TB_Agency_Customer_TravelPlan_OtherServices"));
        $select->where('tb2.TPIntSysId = ?', $tpintsysID);
        $select->where('tb2.IsCostInclInTP = ?', 1);
        $select->where('tb2.IsMarkForDelete = ?', 0);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsGroupCarAvailable($tpsysID, $vehicalsysID, $routesysID, $capacity, $totalprice) {
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.VehicleTypeSysId = ?', $vehicalsysID);
        $select->where('tb2.RouteSysId = ?', $routesysID);
        $select->where('tb2.Capacity = ?', $capacity);
        $select->where('tb2.TotalPrice = ?', $totalprice);
        $select->where('tb2.IsMarkForDel = ?', 0);

//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllTransportType($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.CostPerson > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
//  echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTransportTypeWithoutCar($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.CostPerson > ?', 0);
        $select->where('TTTF.TotalPrice > ?', 0);
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.TransType != ?', 'car');
        $select->where('TTTF.IsMarkForDel = ?', 0);

//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTransportTypeBYO($tpsysID, $IsIncluded = 1) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->joinLeft(array('tb2' => "TB_Master_Currency"), "TTTF.CurrencyType = tb2.CurrencyType", array('Symbol'));
        $select->joinLeft(array('tb3' => "TB_Agency_Area_Master"), "TTTF.FromPlace = tb3.AreaSysId", array('Area as FromPlaceArea'));
        $select->joinLeft(array('tb4' => "TB_Agency_Area_Master"), "TTTF.ToPlace = tb4.AreaSysId", array('Area as ToPlaceArea'));
        $select->joinLeft(array('tb5' => "TB_Agency_Transport_Route"), "TTTF.RouteSysId = tb5.RouteSysId", array('RouteName'));

        $select->where('TTTF.TPSysId = ?', $tpsysID);
//        $select->where('TTTF.CostPerson > ?', 0);
        $select->where('TTTF.TotalPrice > ?', 0);
        if ($IsIncluded == 1) {
            $select->where('TTTF.IsIncluded = ?', 1);
        }
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $select->where("TTTF.XrefSSInvnSysId = 0 OR TTTF.XrefSSInvnSysId IS NULL");
//                echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTransportTypeReadyMade($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.CostPerson > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
//$select->where('TB_TravelPlan_Trans_Fixed.IsGroup = ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllGroupCostWithoutCar($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.CostPerson > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.TotalPrice > ?', 0);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType != ?', 'car');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetGroupCostWithoutCarBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.CostPerson > ?', 0);
        $select->where('TTTF.TotalPrice > ?', 0);
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.TransType != ?', 'car');
        $select->where('TTTF.IsMarkForDel = ?', 0);
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTransportTypeBYOWithoutCar($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("*");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType != ?', 'car');
        $select->where('TTTF.CostPerson > ?', 0);
        $select->where('TTTF.TotalPrice > ?', 0);
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.IsMarkForDel = ?', 0);
//echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function ChkIsIncludedTrain($sourceID, $destcityID, $tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $destcityID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'train');
        $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkIsIncludedTrainBYO($sourceID, $destcityID, $tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.SourceCityId = ?', $sourceID);
        $select->where('TTTF.DestCityId = ?', $destcityID);
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.TransType = ?', 'train');
        $select->where('TTTF.Type = ?', 'Included');
        $select->where('TTTF.IsIncluded = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsCarExist($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPSysId = ?', $tpsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'car');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsCarExistBYO($tpsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function IsGroupAvailable($tpsysID, $vehicalsysID, $routesysID, $capacity, $totalprice) {
        $select = $this->db->select();
        $selectedcity = array('Title');
        $select->from(array('tb2' => "TB_TravelPlan_Trans_Fixed"));
        $select->where('tb2.TPSysId = ?', $tpsysID);
        $select->where('tb2.TransType = ?', 'car');
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->where('tb2.IsGroup = ?', 1);
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetQueryIDByMasterID($mastertpID) {
        $select = $this->db->select();
        $selectedfields = array("TPSysId", "MasterTPSysId");
        $select->from(array('TACT' => "TB_Agency_Customer_TravelPlan"), $selectedfields);
        $select->where('TACT.MasterTPSysId = ?', $mastertpID);
        $select->where('TACT.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        if ($result['MasterTPSysId'] > 0) {
            $getID = $this->GetMasterDetailByID($result['MasterTPSysId']);
            return $getID;
        } else {
            return $result;
        }
    }

    public function GetMasterDetailByID($masterID) {
        $select = $this->db->select();
        $selectedfields = array("TPSysId", "MasterTPSysId");
        $select->from(array('TACT' => "TB_Agency_Customer_TravelPlan"), $selectedfields);
        $select->where('TACT.TPSysId = ?', $masterID);
        $select->where('TACT.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        if ($result['MasterTPSysId'] > 0) {
            $this->GetMasterDetailByID($masterID);
        } else {
            return $result;
        }
    }

    public function ChkIsIncludedBus($sourceID, $destcityID, $tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $destcityID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'bus');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $select->where('TB_Agency_Customer_Trans_Fixed.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkIsIncludedBusBYO($sourceID, $destcityID, $tpintsysID) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $selectedfields);
        $select->where('TTTF.SourceCityId = ?', $sourceID);
        $select->where('TTTF.DestCityId = ?', $destcityID);
        $select->where('TTTF.TPIntSysId = ?', $tpintsysID);
        $select->where('TTTF.Type = ?', 'Included');
        $select->where('TTTF.TransType = ?', 'bus');
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.IsMarkForDel = ?', 0);
// echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ChkIsIncludedFlight($sourceID, $destcityID, $tpintsysID = NULL) {
        $select = $this->db->select();
        $selectedfields = array("FixTransSysId", "TPSysId", "TransType", "SourceCityId", "DestCityId", "IsIncluded");
        $select->from(array("TB_Agency_Customer_Trans_Fixed"), $selectedfields);
        $select->where('TB_Agency_Customer_Trans_Fixed.SourceCityId = ?', $sourceID);
        $select->where('TB_Agency_Customer_Trans_Fixed.DestCityId = ?', $destcityID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TPIntSysId = ?', $tpintsysID);
        $select->where('TB_Agency_Customer_Trans_Fixed.TransType = ?', 'flight');
        $select->where('TB_Agency_Customer_Trans_Fixed.Type = ?', 'Included');
        $select->where('TB_Agency_Customer_Trans_Fixed.IsIncluded = ?', 1);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetDayCountByCity($cityId, $packageId) {
        $select = $this->db->select();
        $selectedfields = array("Sequence", "TPIntSysId");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedfields);
        $select->where('TACTI.TPSysId = ?', $packageId);
        $select->where('TACTI.CitySysId = ?', $cityId);
        $select->order('TPIntSysId DESC');

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetDayCountByCityPkg($cityId, $packageId) {
        $select = $this->db->select();
        $selectedfields = array("Sequence", "TPIntSysId");
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $selectedfields);
        $select->where('TTI.TPSysId = ?', $packageId);
        $select->where('TTI.CitySysId = ?', $cityId);
        $select->order('TPIntSysId DESC');

        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getPackageCitiesList($arrPkgIds) {
        $whereCondition = " TPSysId IN ($arrPkgIds) AND TBTPIP.IsMArkForDel = '0' ";
        $select = $this->db->select()
                ->from(array("TBTPIP" => "TB_TravelPlan_Itenary_Places"), array('TPSysId'))
                ->joinLeft(array('TBMGC' => 'TB_Master_Geo_City'), 'TBMGC.CityId=TBTPIP.PlaceSysId', array('TBMGC.CityId', 'TBMGC.Title as CityName'))
                ->where($whereCondition)
                ->group(array("TPSysId", "TBMGC.Title", "TBMGC.CityId"));
//                ->order('TBTPMWR.CostPPDO ASC');
//echo $select; exit;
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function GetTravelEndDate($tpID) {
        $select = $this->db->select();
        $selectedfields = array("EndDate");
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedfields);
        $select->where('TACTI.TPSysId = ?', $tpID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFlexiPackageMPRate($id) {
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_MarketWise_Rate"))
                ->joinLeft(array("TBMWR" => 'TB_Master_Currency'), "TBTPMWR.CurrencyType=TBMWR.CurrencyType", array('Symbol'))
                ->where('TPRateSheetSysId =?', @$id);
//                ->order('TBTPMWR.CostPPDO ASC');
//       echo $select; 
        $result = $this->db->query($select)->fetchAll();

        return $result;
    }

    public function GetAllSupplierType() {
        $select = $this->db->select();
        $select->from(array("TB_Master_SupplierServices"));
        $select->where('TB_Master_SupplierServices.IsActive = ?', 1);
        if (isset($this->strCondition['SupplierSerSysId']) && !empty($this->strCondition['SupplierSerSysId'])) {
            $select->where('TB_Master_SupplierServices.SupplierSerSysId = ?', $this->strCondition['SupplierSerSysId']);
        }
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetCityDuration($cityId, $packageId) {
        $select = $this->db->select();
        $selectedfields = array("StartDate", "EndDate", "TPIntSysId", "Sequence", 'CitySysId');
        $select->from(array('TACTI' => "TB_Agency_Customer_TravelPlan_Itenary"), $selectedfields);
        $select->where('TACTI.TPSysId = ?', $packageId);
        $select->where('TACTI.CitySysId = ?', $cityId);
        $select->where('TACTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
//echo $select;
        return $result;
    }

    public function GetCityDurationPkg($cityId, $packageId) {
        $select = $this->db->select();
        $selectedfields = array("StartDate", "EndDate", "TPIntSysId", "Sequence", 'CitySysId');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $selectedfields);
        $select->where('TTI.TPSysId = ?', $packageId);
        $select->where('TTI.CitySysId = ?', $cityId);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
//echo $select;
        return $result;
    }

    public function GetPackageTypeName($catID) {
        $select = $this->db->select();
        $selectedfields = array("PackCategory", "Title");
        $select->from(array("TB_Master_PackCategory"), $selectedfields);
        $select->where('TB_Master_PackCategory.PackCategory = ?', $catID);
        $select->where('TB_Master_PackCategory.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetHotelsByCategory($catID, $itnID, $cityID) {
        $select = $this->db->select();
        $select->from(array('TTIA' => "TB_TravelPlan_Itenary_Accom"));
        $select->joinLeft(array('t4' => 'TB_Master_RoomType'), 't4.RoomType = TTIA.RoomType', array("Title as EconomyTypeTitle", "RoomType as RoomTypeId"));
        $select->joinLeft(array('t5' => 'TB_Master_Accom_MealType'), 't5.MealTypeId = TTIA.MealPlanType', array("Title as MealPlanTypeTitle", "MealTypeId"));
        $select->joinLeft(array('t7' => 'TB_Master_Currency'), 't7.CurrencyType = TTIA.CurrencyType', array('symbol'));
        $select->where('TTIA.TPIntSysId = ?', $itnID);
        $select->where('TTIA.BYOPackType = ?', $catID);
        $select->where('TTIA.IsMarkForDel = ?', 0);

        $select->where('t5.IsMarkForDel = ?', 0);
        $select->where('t5.IsActive = ?', 1);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFlexiCityDuration($cityId, $packageId) {
        $select = $this->db->select();
        $selectedfields = array("StartDate", "EndDate", "TPIntSysId", "Sequence", 'CitySysId');
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), $selectedfields);
        $select->where('TTI.TPSysId = ?', $packageId);
        $select->where('TTI.CitySysId = ?', $cityId);
        $select->where('TTI.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
//  echo $select;

        return $result;
    }

    public function GetAllTPPrice($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('TotalPrice');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $travel_airline);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.IsIncluded = ?', 1);
        $select->where('TTTF.TransType != ?', 'car');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetOnlyGrpPrice($tpsysID) {
        $select = $this->db->select();
        $travel_airline = array('TotalPrice');
        $select->from(array('TTTF' => "TB_TravelPlan_Trans_Fixed"), $travel_airline);
        $select->where('TTTF.TPSysId = ?', $tpsysID);
        $select->where('TTTF.IsGroup = ?', 1);
        $select->where('TTTF.TransType = ?', 'car');
        $select->where('TTTF.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getAutoSuggestHotel($keyword, $intLoggedinUserAgencySysId, $string = NULL, $classId = NULL) {
        $stringArr = explode('_', $string);
        $strcityId = $stringArr[1];
        $keyword = trim($keyword);
        $strCondition = " AND TBICA.Title like '%" . $keyword . "%' ";

        if (!empty($strcityId)) {
            $strCondition .= " AND TBICA.CitySysId = '" . $strcityId . "' ";
        }
        $sessionLogin_user = new Zend_Session_Namespace('sessionLogin_user');
        $manageNotifications = isset($sessionLogin_user->manageNotifications) ? $sessionLogin_user->manageNotifications : array();
        if ((int) $intLoggedinUserAgencySysId > 0 && (!empty($manageNotifications) && in_array('showonlymyhotels', $manageNotifications))) {
            $strCondition .= " AND TBICA.ICSourceSysId = '$intLoggedinUserAgencySysId' ";
        } else {
            $strCondition .= !empty($intLoggedinUserAgencySysId) ? " AND (TBICA.IsApproved = '1' OR ( TBICA.ICSourceSysId = '$intLoggedinUserAgencySysId' AND TBICA.IsAgentSpec = 1)  ) " : " AND (TBICA.IsApproved = '1') ";
        }
        $sql = " SELECT top 50 TBICA.AccomSysId,  TBICA.Title,TBICA.ShortName,IsAgentSpec,TBICA.ICSourceSysId
                FROM TB_IC_Accomdation as TBICA
                
                WHERE 1 = 1 $strCondition  AND TBICA.IsActive='1'  AND TBICA.IsMarkForDel='0'  ";
        $sql .= " ORDER BY TBICA.Title ASC";
        if (strlen(trim($keyword)) > 2) {
            $rowset = $this->db->query($sql)->fetchAll();
            $hotelUniqueArray = array();
            if (count($rowset) > 0) {
                foreach ($rowset as $Key => $row) {
                    if (!in_array($row['AccomSysId'], $hotelUniqueArray)) {
                        $hotelUniqueArray[] = $row['AccomSysId'];
                        $shortName = (trim($row['ShortName']) !== '') ? '(' . trim($row['ShortName']) . ')' : '';
                        $shortName = '';
                        $IsAgentSpec = (@$row['IsAgentSpec'] == 1 && $row['ICSourceSysId'] == $intLoggedinUserAgencySysId) ? " (Internal)" : '';
                        $title = trim(ucfirst($row['Title'])) . ucfirst($shortName) . $IsAgentSpec;
                        $accomId = str_replace("'", "\'", $row['AccomSysId']);
                        $hotel1 .= '<p style="cursor: pointer; border-bottom: 1px dashed;" onclick="set_item(\'' . str_replace("'", "\'", $title) . '\',\'' . $accomId . '\',\'' . $string . '\',\'' . $classId . '\')">' . $title . '</p>';
                    }
                }
            } else {
                $hotel1 .= (SHOW_GOOGLE_MAPS_API == 1) ? 'Add New' : '';
            }
        } else {
            $defaultHotelArr = unserialize(DEFAULTHOTEL);
            $hotel1 = '';
            for (
                    $d = 0;
                    $d < count($defaultHotelArr);
                    $d++
            ) {
                $title = trim($defaultHotelArr[$d]['label']);
                $accomId = trim($defaultHotelArr[$d]['AccomSysId']);
                $hotel1 .= '<p style="cursor: pointer; border-bottom: 1px dashed;" onclick="set_item(\'' . str_replace("'", "\'", $title) . '\',\'' . $accomId . '\',\'' . $string . '\',\'' . $classId . '\')">' . $title . '</p>';
            }
        }
        return $hotel1;
    }

    public function getPackageSelectedHotelList($packageId) {
        $sqlPackageHotel = "    select SeqId,TBTPIA.MealPlanType,TBTPIA.TPIntSysId,Sequence,TBTPIA.AgencySysId,AccoSysId as AccomSysId,TBTPIA.Title,TBTPIA.RoomType,XRefCityId,TBRT.Title as RoomName from TB_TravelPlan_Itenary a 
 LEFT JOIN TB_TravelPlan_Itenary_Accom TBTPIA on a.TPIntSysId = TBTPIA.TPIntSysId
 LEFT JOIN TB_Master_RoomType TBRT on TBTPIA.RoomType = TBRT.RoomType
 Left Join TB_IC_Accomdation TBICA on TBICA.AccomSysId = TBTPIA.AccoSysId where TBTPIA.TPIntSysId IN (select TPIntSysId from TB_TravelPlan_Itenary where TPSysId = '" . @$packageId . "') 
  AND TBTPIA.IsActive = 1 AND TBTPIA.IsMarkForDel = 0  AND TBICA.IsActive = 1 order by Sequence ASC,VersionId ASC";
        $resultPackageHotel = $this->db->query($sqlPackageHotel)->fetchAll();
        return $resultPackageHotel;
    }

    public function getAgencyDataByPackageId($TpsysId) {
        $sql = " select c.FirstName, c.LastName, c.countrycode,c.ContactNo1, a.AgencySysId,Logo,a.DisplayName, a.MasterAgencySysId from TB_Agency_Customer_TravelPlan b 
                join TB_Agency a on a.AgencySysId = b.AgencySysId
                join TB_Agency_User c on c.UserSysId = b.AgentSysId
                where b.TPSysId = '$TpsysId'";
        $result = $this->db->query($sql)->fetch();
        return $result;
    }

    public function getMasterAgencyDataByPackageId($AgencySysId) {
        $sql = " select a.AgencySysId,Logo,a.DisplayName from TB_Agency a 
                 where a.AgencySysId = '$AgencySysId'";
        $result = $this->db->query($sql)->fetch();
        return $result;
    }

    public function getPackageCancelPolicy($id) {
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_Rules"));
        $select->where('TPRulesSysId = ?', $id);
//        echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getContributorHistoryList($tpSysId) {
        $select = $this->db->select();
        $select->from(array('TBTPUH' => "TB_TravelPlan_UserHistory"));
        $select->joinLeft(array("TBAU" => 'TB_Agency_User'), "TBAU.UserSysId=TBTPUH.UserSysId", array('FirstName', 'LastName'));
        $select->where('TPSysId = ?', $tpSysId);
        $select->where('TBTPUH.IsActive = ?', 1);
        $select->where('TBTPUH.IsMarkForDel = ?', 0);
        $select->order("UsrHistorySysId DESC");
//        echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

//function get all information by itenary
    public function getCustPackageAllDetailsList($id) {
        $sqlFlexiPackageIten = "SELECT a.*,b.PlaceSysId,f.SupplierSysId,c.ServiceTitle,c.ServiceType,c.Comment as ServiceComment,c.Cost as ServiceCost,c.PaxCount as ServicePaxCount,
								d.TransType,d.FixTransSysId,d.IsIncluded,d.TransTypeCat,d.FromPlace as TransFromPlace,d.ToPlace as TransToPlace,d.CostPerson as TransCostPerson,
								d.TotalPrice as TransTotalPrice,d.Capacity as TransCapacity,d.RouteSysId as TransRouteSysId,d.VehSysId as TransVehSysId,d.VehicleQty,e.StatusSysId,
								TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,
								TB_IC_Supplier.LastName as SupplierLastName,f.RouteName,g.VehName,h.Title as StartCity,
								c.OtherSrvSysId,c.IsCostInclInTP,OSS.FirstName as OSSupplierFirstName,OSS.LastName as OSSupplierLastName,i.StatusSysId as OSStatusSysId
                        FROM TB_Agency_Customer_TravelPlan_Itenary as a
						LEFT JOIN TB_Agency_Customer_TravelPlan_Itenary_Places as b ON 	a.TPIntSysId = b.TPIntSysId AND a.Sequence = b.Sequence
						LEFT JOIN TB_Agency_Customer_TravelPlan_OtherServices as c ON 	a.TPSysId = c.TPIntSysId
						LEFT JOIN TB_Agency_Customer_Trans_Fixed as d ON a.TPIntSysId = d.TPIntSysId
						LEFT JOIN TB_Agency_Transport_Route as f ON d.RouteSysId = f.RouteSysId
						LEFT JOIN TB_Master_Geo_City as h ON f.StartCitySysId = h.CityId
						LEFT JOIN TB_Master_Vehicle as g ON d.VehicleTypeSysId = g.VehSysId
						LEFT JOIN TB_IC_Supplier ON f.SupplierSysId = TB_IC_Supplier.SupplierSysId
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall as e ON 	d.FixTransSysId = e.ItemSysId
						LEFT JOIN TB_IC_Supplier as OSS ON OSS.SupplierSysId = c.SupplierSysId
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall as i ON 	c.OtherSrvSysId = i.ItemSysId
						WHERE a.TPSysId = '" . @$id . "' AND a.IsMarkForDel = 0 ORDER BY a.Sequence ASC";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

//function to fetch activity details by activityid
    public function getCustPackageActivityListBySeqWithId($packageId, $seq, $ActivityId) {
        $sqlPackageActivity = "SELECT TACTIE.*,TB_IC_Activity.DurationStr as duration,TB_Master_Geo_City.Title as CityName, TB_IC_Activity.*,TB_Master_ActivityGroupType.Title as Category,TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,TB_IC_Supplier.LastName as SupplierLastName					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events as TACTIE
						LEFT JOIN TB_IC_Activity ON TACTIE.TPActivitySysId=TB_IC_Activity.ActivitySysId
						LEFT JOIN TB_Master_Geo_City ON TB_IC_Activity.CitySysId = TB_Master_Geo_City.CityId
						LEFT JOIN TB_IC_Supplier ON TACTIE.SupplierSysId = TB_IC_Supplier.SupplierSysId
						LEFT JOIN TB_Master_ActivityGroupType ON TB_IC_Activity.ActivityGrType=TB_Master_ActivityGroupType.ActivityGroupType
						WHERE TACTIE.IsActive = '1' AND TB_IC_Activity.ActivitySysId = '" . $ActivityId . "' AND TACTIE.IsMarkForDel = '0' AND TACTIE.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "'  AND Sequence = " . $seq . " )";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function to fetch sightseeing details by sightseeing id
    public function getCustPackageSightseenListBySeqWithId($packageId, $seq, $SightSeeingSysId) {
        $sqlPackageActivity = "SELECT TACTS.*,TB_IC_SightSeeing.DurationStr as duration,TB_Master_Geo_City.Title as CityName, TB_IC_SightSeeing.*,TB_Master_SightSeeingGroupType.Title as Category,TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,TB_IC_Supplier.LastName as SupplierLastName
                        FROM TB_Agency_Customer_TravelPlan_SightSeeing as TACTS
						LEFT JOIN TB_IC_SightSeeing ON TACTS.SSSysId=TB_IC_SightSeeing.SSSysId
						LEFT JOIN TB_Master_SightSeeingGroupType ON TB_IC_SightSeeing.SSGrType=TB_Master_SightSeeingGroupType.SSGroupType
						LEFT JOIN TB_Master_Geo_City ON TB_IC_SightSeeing.CitySysId = TB_Master_Geo_City.CityId 
						LEFT JOIN TB_IC_Supplier ON TACTS.SupplierSysId = TB_IC_Supplier.SupplierSysId
						WHERE TACTS.IsActive = '1' AND TB_IC_SightSeeing.SSSysId = '" . $SightSeeingSysId . "' AND TACTS.IsMarkForDelete = '0' AND TACTS.InvnItemSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = '" . @$packageId . "' AND Sequence = " . $seq . ")";

        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function to fetch activity details by id
    public function getCustomerTravelPlanEventsById($TPActivitySysId, $VersionId) {
        $sqlPackageActivity = "SELECT XrefVoucherNo FROM TB_Agency_Customer_TravelPlan_Itenary_Events WHERE TB_Agency_Customer_TravelPlan_Itenary_Events.IsActive = '1' AND TB_Agency_Customer_TravelPlan_Itenary_Events.IsMarkForDel = '0' AND TB_Agency_Customer_TravelPlan_Itenary_Events.TPActivitySysId=" . $TPActivitySysId . " AND VersionId=" . $VersionId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function to fetch sightseeing details by id
    public function getCustomerTravelPlanSSById($SSSysId, $VersionId) {
        $sqlPackageActivity = "SELECT XrefVoucherNo from TB_Agency_Customer_TravelPlan_SightSeeing WHERE TB_Agency_Customer_TravelPlan_SightSeeing.IsActive = '1' AND TB_Agency_Customer_TravelPlan_SightSeeing.IsMarkForDelete = '0' AND TB_Agency_Customer_TravelPlan_SightSeeing.SSSysId=" . $SSSysId . " AND VersionId=" . $VersionId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageActivityListBySeqForFullFill($packageId, $seq) {
        $sqlPackageActivity = "SELECT TACTIEF.*,TB_IC_Activity.DurationStr as duration, TB_IC_Activity.*,TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,TB_IC_Supplier.LastName as SupplierLastName					 
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Events_Fullfillment as TACTIEF
						LEFT JOIN TB_IC_Activity ON TACTIEF.TPActivitySysId=TB_IC_Activity.ActivitySysId
                        
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall ON TACTIEF.TPActivitySysId=TB_Agency_Customer_ReqSupplierOnCall.ItemSysId  AND TACTIEF.TPIntSysId = TB_Agency_Customer_ReqSupplierOnCall.TPIntSysId
						LEFT JOIN TB_IC_Supplier ON TACTIEF.SupplierSysId = TB_IC_Supplier.SupplierSysId
						WHERE TACTIEF.IsActive = '1' AND TACTIEF.IsOptionalActivity = '0' AND TACTIEF.IsMarkForDel = '0' 
						AND TACTIEF.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary_Fullfillment
						WHERE TPSysId = '" . @$packageId . "'  AND Sequence = " . $seq . " )";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustPackageSightseenListBySeqForFullFill($packageId, $seq) {
        $sqlPackageActivity = "SELECT TACTSF.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*,TB_Agency_Customer_ReqSupplierOnCall.ReqSupplierOnCall,TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,TB_IC_Supplier.LastName as SupplierLastName
                        FROM TB_Agency_Customer_TravelPlan_SightSeeing_Fullfillment as TACTSF
						LEFT JOIN TB_IC_SightSeeing ON TACTSF.SSSysId=TB_IC_SightSeeing.SSSysId
						 
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall ON TACTSF.SSSysId=TB_Agency_Customer_ReqSupplierOnCall.ItemSysId AND TACTSF.InvnItemSysId=TB_Agency_Customer_ReqSupplierOnCall.TPIntSysId
						LEFT JOIN TB_IC_Supplier ON TACTSF.SupplierSysId = TB_IC_Supplier.SupplierSysId
						WHERE TACTSF.IsActive = '1' AND TACTSF.IsOptionalSightSeeing = '0' AND TACTSF.IsMarkForDelete = '0' 
						AND TACTSF.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary_Fullfillment WHERE TPSysId = '" . @$packageId . "' AND Sequence = " . $seq . ")";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function get all information by public transport
    public function getPublicTransportDetailsById($TPSysId, $FixTransSysId) {
        $sqlFlexiPackageIten = "SELECT FixTransSysId,XrefVoucherNo  FROM TB_Agency_Customer_Trans_Fixed WHERE 
		TB_Agency_Customer_Trans_Fixed.TPSysId = '" . @$TPSysId . "' AND TB_Agency_Customer_Trans_Fixed.FixTransSysId = '" . @$FixTransSysId . "' AND TB_Agency_Customer_Trans_Fixed.IsMarkForDel = 0 AND TB_Agency_Customer_Trans_Fixed.IsActive = 1";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

    public function GetDynamicMarketwiserateDate($packageId = NULL, $tripdate = NULL, $catID = 1, $tourID = 1, $MarketPlaceId = NULL) { //if catId  & tour id is blank then default rate for standard private are fetch
        $whereCondition = " TPIntSysId = '" . @$packageId . "' AND PackCategoryId = '" . @$catID . "' AND TourType = '" . @$tourID . "'  AND IsMarkForDel = '0' AND IsActive = '1' AND  '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) ";
        if ($MarketPlaceId != '') {
            $whereCondition .= " AND MarketPlaceId=" . $MarketPlaceId . "";
        }
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_MarketWise_Rate"))
                ->where($whereCondition);
//       echo $select; 
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMarketWiseRateId($TPSysId, $TPRateSheetSysId) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $TPSysId);
        $select->where('TTMR.TPRateSheetSysId = ?', $TPRateSheetSysId);
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

// Added By Pardeep Panchal


    public function checkIfPackageCostSheetExists($TpSysId) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $TpSysId);
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return count($result);
    }

    public function GetLowestCostBYOPackType($tpintID) {
        $select = $this->db->select();
        $select->from(array("tb1" => "TB_TravelPlan_Itenary_Accom"), array('BYOPackType'));
        $select->where('tb1.TPIntSysId = ?', $tpintID);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb1.IsActive = ?', 1);
        $select->order("tb1.TotalCost ASC");
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function packageOtherServices($TPSysId) {
        $select = $this->db->select();
        $TB_TravelPlan_OtherServices = array('ServiceTitle', 'Cost', 'IsCostInclInTP', 'Comment');
        $TB_IC_Supplier = array('SupplierSysId', 'SupplierName', 'EmailId');
        $select->from(array("tb1" => "TB_TravelPlan_OtherServices"), $TB_TravelPlan_OtherServices);
        $select->joinLeft(array("tb2" => "TB_IC_Supplier"), "tb2.SupplierSysId = tb1.SupplierSysId", $TB_IC_Supplier);
        $select->where('tb1.TPIntSysId = ?', $TPSysId);
        $select->where('tb1.IsMarkForDelete = ?', 0);
        $select->where('tb1.IsCostInclInTP = ?', 1);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

// GETTING B2B RATES...............

    public function GetMarketWiseRateBYOReadyMadeB2B($tpID, $catID, $tourID = NULL, $MealTypeId = NULL) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"));
        $select->where('TTMR.TPIntSysId = ?', $tpID);
        $select->where('TTMR.PackCategoryId = ?', $catID);
        if ($tourID) {
            $select->where('TTMR.TourType = ?', $tourID);
        }

        $select->where('TTMR.MarketPlaceId = ?', 2); // 2 FOR B2B RATES....
        if (!empty($MealTypeId)) {
            $select->where('TTMR.MealPlanType = ?', $MealTypeId);
        }
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $select->order('TTMR.PricePerPerson ASC');
//echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function CheckIfMarketWiseRateBYOReadyMadeB2bExists($tpID) {

        $select = $this->db->select();
        $select->from(array('TTMR' => "TB_TravelPlan_MarketWise_Rate"), array('count(*) as n'));
        $select->where('TTMR.TPIntSysId = ?', $tpID);
        $select->where('TTMR.MarketPlaceId = ?', 2); // 2 FOR B2B RATES....
        $select->where('TTMR.IsMarkForDel = ?', 0);
        $select->where('TTMR.IsActive = ?', 1);
//echo $select;exit;
        $result = $this->db->fetchRow($select);
        return $result['n'];
    }

    public function GetMarketWiseRateBYONetworkB2B($packid) {
//$sqlPackage = "SELECT TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType WHERE TPIntSysId = '".@$packid."' AND  TBTPMWR.IsMarkForDel = '0' AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE)";
        $sqlPackage = "SELECT TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR "
                . "LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType "
                . "WHERE TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0'  AND TBTPMWR.IsActive = '1' "
                . "AND TBTPMWR.MarketPlaceId = '2'  ";

        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function checkDuplicateMarketWiseRate($packageId = NULL, $tripdate = NULL, $MarketPlaceId = NULL, $packCatagory = NULL) {
        $whereCondition = " TPIntSysId = '" . @$packageId . "' AND IsMarkForDel = '0' AND IsActive = '1' "
                . " AND MarketPlaceId = '$MarketPlaceId' "
                . " AND PackCategoryId = '$packCatagory' "
                . " AND  '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) AND CAST(TBTPMWR.ToDate AS DATE) ";
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_MarketWise_Rate"))
                ->where($whereCondition);
//echo $select; 
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMarketWiseRateBYOReadyMadeB2BCust($tpID, $catID, $tourID = NULL, $MealTypeId = NULL, $MarketPlaceId = NULL) {

        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_MarketWise_Rate"));
        $select->where('TB_TravelPlan_MarketWise_Rate.TPIntSysId = ?', $tpID);
        $select->where('TB_TravelPlan_MarketWise_Rate.PackCategoryId = ?', $catID);
        $select->where('TB_TravelPlan_MarketWise_Rate.TourType = ?', $tourID);
        if (!empty($MealTypeId)) {
            $select->where('TB_TravelPlan_MarketWise_Rate.MealPlanType = ?', $MealTypeId);
        }
        if (!empty($MarketPlaceId)) {
            $select->where('TB_TravelPlan_MarketWise_Rate.MarketPlaceId = ?', $MarketPlaceId);
        }
        $select->where('TB_TravelPlan_MarketWise_Rate.IsMarkForDel = ?', 0);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getB2BPackRate($packid, $tripdate, $marketPlaceId) {

        $sqlPackage = "SELECT * FROM TB_TravelPlan_Rate as TBTPMWR WHERE TPSysId = '" . @$packid . "' ";
        $sqlPackage .= " AND IsMarkForDel = '0' AND IsActive = '1' ";
        if (!empty($marketPlaceId)) {
            $sqlPackage .= " AND MarketPlaceId = '" . $marketPlaceId . "'";
        } else {
            $sqlPackage .= " AND MarketPlaceId = '1'";
        }

        $sqlPackage .= " AND '$tripdate' BETWEEN CAST(TBTPMWR.StartDate AS DATE) ";
        $sqlPackage .= " AND CAST(TBTPMWR.ValidTill AS DATE) ORDER BY TPRateSheetSysId DESC";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getB2BPackMPRate($packid, $travelers, $tripdate, $marketPlaceId) {
        $sqlPackage = " SELECT TBTPMWR.*, TBMC.Symbol FROM TB_TravelPlan_MarketWise_Rate as TBTPMWR ";
        $sqlPackage .= " LEFT JOIN TB_Master_Currency TBMC ON TBMC.CurrencyType = TBTPMWR.CurrencyType ";
        $sqlPackage .= " WHERE TPIntSysId = '" . @$packid . "' AND  TBTPMWR.IsMarkForDel = '0'";
        if (!empty($marketPlaceId)) {
            $sqlPackage .= " AND TBTPMWR.MarketPlaceId = '" . $marketPlaceId . "'";
        } else {
            $sqlPackage .= " AND TBTPMWR.MarketPlaceId = '1'";
        }
        $sqlPackage .= " AND TBTPMWR.IsActive = '1'  AND '$tripdate' BETWEEN CAST(TBTPMWR.FromDate AS DATE) ";
        $sqlPackage .= " AND CAST(TBTPMWR.ToDate AS DATE)";

        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getItentDays($tpID, $CitySysId) {

        $select = $this->db->select();
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), array('Sequence'));
        $select->where("TTI.TPIntSysId in($tpID)");
        $select->where('TTI.CitySysId = ?', $CitySysId); // 2 FOR B2B RATES....
        $select->where('TTI.IsMarkForDel = ?', 0);
        $select->where('TTI.IsActive = ?', 1);
//echo $select;exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getHotelInventoryDays($tpID, $CitySysId) {

        $select = $this->db->select();
        $select->from(array('TTI' => "TB_TravelPlan_Itenary"), array('Sequence', 'TPIntSysId'));
        $select->where("TTI.TPIntSysId in($tpID)");
        $select->where('TTI.CitySysId = ?', $CitySysId); // 2 FOR B2B RATES....
        $select->where('TTI.IsMarkForDel = ?', 0);
        $select->where('TTI.IsActive = ?', 1);
        $result = $this->db->fetchAll($select);
        $resultArray = array();
        if (!empty($result)) {
            foreach ($result as $key => $val) {
                $resultArray[$val['TPIntSysId']] = $val['Sequence'];
            }
        }
        return $resultArray;
    }

    public function getmarketplaceinventoryhotelForHotel($suppsysID, $XRefAccoSysId, $AgencySysId, $EconomyType, $MealPlanType, $fromData, $todate) {
        $select = $this->db->select();
        $select->from(array('t2' => "Tb_MP_Accomdation_Room_Inventory"));
        $select->joinLeft(array('t3' => "TB_MP_Inventory_Accom"), "t2.id = t3.RoomInventorySysId", array('*'));
        $select->where("t2.AccomSysId = ?", $XRefAccoSysId);
        $select->where("t2.AgencySysId = ?", $AgencySysId);
        $select->where("t2.RoomSysId = ?", $EconomyType);
        $select->where("t3.MealPlanType = ?", $MealPlanType);
        $select->where("t2.IsActive = ?", 1);
        $select->where("t2.SupplierSysId = ?", $suppsysID);
        $select->where("t2.IsMarkForDelete = ?", 0);
        $select->where("t3.IsMarkForDelete = ?", 0);
        $select->where("t2.FromDate >= '" . $fromData . "'");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getinventoryhotelForInsertHotel($invID) {
        $select = $this->db->select('top 1');
        $travel_itenary = array('Title as packtitle', 'AccomSysId', 'Icon', 'Stars', 'RoomCounts', 'CitySysId', 'ICSourceSysId', 'Address', 'Brief');
        $select->from(array("TB_IC_Accomdation"), $travel_itenary);
        $select->joinLeft(array("TB_MP_Inventory_Accom"), "TB_IC_Accomdation.AccomSysId = TB_MP_Inventory_Accom.XRefAccoSysId");
        $select->where("TB_IC_Accomdation.AccomSysId = ?", $invID);
        $select->limit(1);
//echo $select;exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetMarketWiseRateBYOReadyMadeB2C($tpID, $MarketPlaceId = '1') {

        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_MarketWise_Rate"));
        $select->where('TB_TravelPlan_MarketWise_Rate.TPIntSysId = ?', $tpID);
        if (!empty($MarketPlaceId)) {
            $select->where('TB_TravelPlan_MarketWise_Rate.MarketPlaceId = ?', $MarketPlaceId); // 2 FOR B2B RATES....
        }

        $select->where('TB_TravelPlan_MarketWise_Rate.Pax IN (?)', array(2, 0));
        $select->where('TB_TravelPlan_MarketWise_Rate.ToDate >=?', date('Y-m-d'));
        $select->where('TB_TravelPlan_MarketWise_Rate.IsMarkForDel = ?', 0);
        $select->order('TB_TravelPlan_MarketWise_Rate.PricePerPerson ASC');
//        echo $select;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetMarketWiseRateBYODynamicB2C($tpID, $catID, $MarketPlaceId = '1', $tourID = NULL, $MealTypeId = NULL) {

        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_MarketWise_Rate"));
        $select->where('TB_TravelPlan_MarketWise_Rate.TPIntSysId = ?', $tpID);
        $select->where('TB_TravelPlan_MarketWise_Rate.PackCategoryId = ?', $catID);
        $select->where('TB_TravelPlan_MarketWise_Rate.TourType = ?', $tourID);
        if (!empty($MarketPlaceId)) {
            $select->where('TB_TravelPlan_MarketWise_Rate.MarketPlaceId = ?', $MarketPlaceId); // 2 FOR B2B RATES....
        }
        if (!empty($MealTypeId)) {
            $select->where('TB_TravelPlan_MarketWise_Rate.MealPlanType = ?', $MealTypeId);
        }
        $select->where('TB_TravelPlan_MarketWise_Rate.IsMarkForDel = ?', 0);
        $select->order('TB_TravelPlan_MarketWise_Rate.PricePerPerson ASC');
//echo $select;//exit;
        $result = $this->db->fetchRow($select);
        return $result;
    }

// Md sabir
    public function AddEnquirySupplierPackage($data) {
        try {
            $this->db->insert('TB_Enqury_Supplier_Package', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function AddSupplierPackageGtxNetwoek($data) {
        try {
            $this->db->insert('TB_Enqury_Supplier_Package_GtxNetwork', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function AddGtxNetwoekReply($data) {
        try {
            $this->db->insert('TB_Enqury_Supplier_Package_GtxNetwork_Reply', $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

    public function EnqSupUpdateStatus($EnSupPackId, $statusType) {
        try {
            $where = array('EnSupPackId = ? ' => $EnSupPackId);
            $updateData = array('StatusType' => $statusType, 'ProposalStatus' => 1);
            return $this->db->update('TB_Enqury_Supplier_Package', $updateData, $where);
        } catch (Exception $ex) {
            die($ex->getMessage());
            return 0;
        }
    }

//function to fetch otherservice details by id
    public function getCustomerTravelPlanOSById($TPSysId, $OtherSrvSysId, $VersionId = NULL) {
        $sqlPackageActivity = "SELECT XrefVoucherNo from TB_Agency_Customer_TravelPlan_OtherServices WHERE IsActive = '1' AND IsMarkForDelete = '0' AND OtherSrvSysId=" . $OtherSrvSysId . " AND TPIntSysId=" . $TPSysId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getAutosuggestTitleProgram($startCity, $endCity, $agencySysId, $term = '') {
        $select = $this->db->select();
        $select->from(array("TB_Agency_Itinerary_Description_Masters"), array('ItineraryId', 'Title', 'Description'));
        $select->where('StartCity = ?', $startCity);
        $select->where('DestinationCity = ?', $endCity);
        $select->where('AgencySysId = ?', $agencySysId);
        if (trim($term) != '') {
            $select->where('Title LIKE ?', '%' . trim($term) . '%');
        }
        $select->where('IsActive = ?', 1);
        $select->where('IsMarkForDel = ?', 0);
        $select->order('Title ASC');
//         echo $select;//exit;
        $result = $this->db->fetchAll($select);
//                 echo "<pre>";print_r($result);
        $response = array();
//         $response = '';
//         if(count($result) > 0){
//                $response = '<ul id="country-list">';
//                 foreach($result as $row) {
//                $response .= '<li onClick="selectCountry('.$row['Description'].');">'.$row['Title'].'</li>';
//        }
//        $response .= '</ul>';
//        }
        if (count($result) > 0) {
            foreach ($result as $row) {
                $response[] = array('Id' => $row['ItineraryId'], 'value' => $row['Title'], 'label' => $row['Title'], 'Description' => $row['Description']);
            }
        }

        return $response;
    }

    public function getAllActivitiesListForItinerary($intLoggedinUserAgencySysId) {
        $sql = "SELECT InvnItemSysId, IsSaleStart, XRef, TotalCostNativeAdult,symbol,CostCurrency, TotalCostNativeChild, TotalCostForeignerChild, TotalCostForeignerAdult, TrxCurrency, TB_IC_Supplier.SupplierName AS SupplierType, TB_Master_Geo_Country.Title AS CountryName, TB_Master_Geo_City.Title AS CityName, tmia.SupplierSysId, TB_IC_Activity.Title AS ActivityName, TB_IC_Activity.DurationStr,TB_IC_Activity.ICSourceSysId,  "
                . "TB_Master_BookingType.Title AS BookingName, tmia.IsActive "
                . "FROM TB_MP_Inventory_Activity [tmia] "
                . "JOIN TB_IC_Activity ON tmia.XRef=TB_IC_Activity.ActivitySysId "
                . "JOIN TB_IC_Supplier ON tmia.SupplierSysId=TB_IC_Supplier.SupplierSysId "
                . "JOIN TB_Master_Geo_Country ON TB_IC_Activity.ContSysId=TB_Master_Geo_Country.ContId "
                . "JOIN TB_Master_Geo_City ON TB_IC_Activity.CitySysId=TB_Master_Geo_City.CityId "
                . "JOIN TB_Master_BookingType ON tmia.BookingType=TB_Master_BookingType.BookingType "
                . "LEFT JOIN TB_Master_Currency as tbmc ON tbmc.CurrencyType=tmia.CostCurrency "
//                . "LEFT JOIN TB_Master_ActivityType ON TB_IC_Activity.ActivityType=TB_Master_ActivityType.ActivityType "
//. "JOIN TB_Master_ActivityGroupType ON TB_IC_Activity.ActivityGrType=TB_Master_ActivityGroupType.ActivityGroupType "
                . " WHERE 1=1 AND IsMarkForDelete='0' AND IsSaleStart = '1' AND TB_IC_Activity.IsActive = '1' ";
        if (!empty($intLoggedinUserAgencySysId)) {
            $sql .= " AND AgencySysId = '" . $intLoggedinUserAgencySysId . "' ";
        }

        if (!empty($this->strCondition)) {
            $sql .= $this->strCondition;
        }
        $sql .= " ORDER BY  tbmc.symbol ASC,tmia.TotalCostNativeAdult ASC ";
//        echo $sql;exit;
        return $this->db->query($sql)->fetchAll();
    }

    public function GetTravelPlanQueryDetails($tpsysID, $IDType = '') {
        $select = $this->db->select();
        if ($IDType == 'Proposal') {
            $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan"));
            $customerarray = array('CustomerSysId', 'EmailId', 'Contacts', 'FirstName', 'Title as Salutation', 'LastName', 'IsB2BAgent', 'AgencySysId as CustomerAgencySysId');
            $select->joinLeft(array('tb4' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb4.CustomerSysId", $customerarray);
            $select->joinLeft(array('tb3' => "TB_Enqury_Supplier_Package"), "tbl.TPSysId = tb3.TPSysId", array('SupplierSysId', 'EnSupPackId'));
            $select->joinLeft(array('tb2' => 'TB_IC_Supplier'), "tb3.SupplierSysId = tb2.SupplierSysId", array('SupplierName'));
            $select->joinLeft(array('tb5' => 'TB_Master_Geo_City'), 'tbl.DestinationPlacesSysId = tb5.CityId', array('ContSysId'));
            $select->where('tbl.TPSysId = ?', $tpsysID);
        } else {
            $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Query"));
            $customerarray = array('CustomerSysId', 'EmailId', 'Contacts', 'FirstName', 'Title as Salutation', 'LastName', 'IsB2BAgent', 'AgencySysId as CustomerAgencySysId');
            $select->joinLeft(array('tb4' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb4.CustomerSysId", $customerarray);
            $select->joinLeft(array('tb3' => "TB_Enqury_Supplier_Package"), "tbl.TPSysId = tb3.TPSysId", array('SupplierSysId', 'EnSupPackId'));
            $select->joinLeft(array('tb2' => 'TB_IC_Supplier'), "tb3.SupplierSysId = tb2.SupplierSysId", array('SupplierName'));
            $select->joinLeft(array('tb5' => 'TB_Master_Geo_City'), 'tbl.DestinationPlacesSysId = tb5.CityId', array('ContSysId'));
            $select->where('tbl.TPSysId = ?', $tpsysID);
        }

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTravelPlanQueryDetailsPkgString($tpsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Query"));
        $customerarray = array('CustomerSysId', 'EmailId', 'Contacts', 'FirstName', 'Title as Salutation', 'LastName', 'IsB2BAgent');
        $select->joinLeft(array('tb4' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb4.CustomerSysId", $customerarray);
        $select->joinLeft(array('tb3' => "TB_Enqury_Supplier_Package"), "tbl.TPSysId = tb3.TPSysId", array('SupplierSysId', 'EnSupPackId'));
        $select->joinLeft(array('tb2' => 'TB_IC_Supplier'), "tb3.SupplierSysId = tb2.SupplierSysId", array('SupplierName'));
// $select->joinLeft(array('tb5' => 'TB_MASTER_VIEW_PKGSEARCH_STRING'), 'tbl.DestinationPlacesSysId = tb5.Id', array('CountryId as ContSysId'));
        $select->where('tbl.TPSysId = ?', $tpsysID);
        $select->where('tbl.MasterTPSysId = ?', 0);
// echo $select; exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTravelPlanQueryDetailsPackage($tpsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan"));
        $customerarray = array('CustomerSysId', 'EmailId', 'Contacts', 'FirstName', 'Title as Salutation', 'LastName', 'IsB2BAgent');
        $select->joinLeft(array('tb4' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb4.CustomerSysId", $customerarray);
        $select->joinLeft(array('tb3' => "TB_Enqury_Supplier_Package"), "tbl.TPSysId = tb3.TPSysId", array('SupplierSysId', 'EnSupPackId'));
        $select->joinLeft(array('tb2' => 'TB_IC_Supplier'), "tb3.SupplierSysId = tb2.SupplierSysId", array('SupplierName'));
        $select->joinLeft(array('tb5' => 'TB_MASTER_VIEW_PKGSEARCH_STRING'), 'tbl.DestinationPlacesSysId = tb5.TypeId', array('CountryId as ContSysId'));
        $select->where('tbl.TPSysId = ?', $tpsysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getdayWiseItnaryData($tpsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_BYO_Customer_TravelPlan_Itinerary"), array("Title as ayTitle", "*"));
        $select->joinLeft(array('tb2' => "TB_Agency_BYO_Customer_TravelPlan_Itenary_Events"), "tbl.BYOTPIntSysId = tb2.TPIntSysId AND tbl.DaySequence = tb2.Sequence");
        $select->where('tbl.BYOTPSysId = ?', $tpsysID);
        $select->where('tb2.IsMarkForDelete = ?', 0);
        $select->where('tb2.VersionId IS NOT NULL');
        $select->order('tbl.DaySequence ASC');
//echo $select; die;
        $result = $this->db->fetchAll($select);
//        echo"<pre>";print_r($result);die('here');
        return $result;
    }

    public function getuniqueItnaryData($versionId) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_BYO_Customer_TravelPlan_Itinerary"));
        $select->joinLeft(array('tb2' => "TB_Agency_BYO_Customer_TravelPlan_Itenary_Events"), "tbl.BYOTPIntSysId = tb2.TPIntSysId AND tbl.DaySequence = tb2.Sequence");
// $select->where('tbl.BYOTPSysId = ?', $tpsysID);
        $select->where('tb2.VersionId = ?', $versionId);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getItnaryDataForMultipleVersionId($versionIds) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_BYO_Customer_TravelPlan_Itinerary"));
        $select->joinLeft(array('tb2' => "TB_Agency_BYO_Customer_TravelPlan_Itenary_Events"), "tbl.BYOTPIntSysId = tb2.TPIntSysId AND tbl.DaySequence = tb2.Sequence");
// $select->where('tbl.BYOTPSysId = ?', $tpsysID);
        $select->where('tb2.VersionId IN(?)', $versionIds);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetTravelPlanQueryDetailsRoomInfo($tpsysID, $IDType = '') {
        $select = $this->db->select();
        if ($IDType == 'Proposal') {
            $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan"), array("RoomInfoJson", "PKqueryType", "CustomerSysId", "PlanType"));
            $select->where('tbl.TPSysId = ?', $tpsysID);
        } else {
            $select->from(array('tbl' => "TB_Agency_Customer_TravelPlan_Query"), array("RoomInfoJson", "PKqueryType", "CustomerSysId", "PlanType"));
            $select->joinLeft(array('tb2' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb2.CustomerSysId", array('IsB2BAgent'));
            $select->where('tbl.TPSysId = ?', $tpsysID);
        }
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetDestinatonDetails($tpsysID) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_Agency_BYO_Customer_TravelPlan_Itinerary"));
        $select->where('tbl.BYOTPSysId = ?', $tpsysID);
        $select->order('tbl.DaySequence ASC');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function actSightUpdateStatus($table, $updateData, $where) {
        try {
            return $this->db->update($table, $updateData, $where);
        } catch (Exception $ex) {
            die($ex->getMessage());
            return 0;
        }
    }

    public function actSightRateUpdateStatus($table, $newActivityId, $oldActivityId) { // dynamic package        
        try {
            $sql = " select * from $table WHERE XRef = $oldActivityId AND IsMarkForDelete = 0 and IsActive = 1";
            $resultArr = $this->db->query($sql)->fetchAll();
            $date = date('Y-m-d H:i:s');
            if (count($resultArr) > 0) {
                foreach ($resultArr as $resultData) {
                    unset($resultData['InvnItemSysId']);

                    $insertData = $resultData;
                    $insertData['XRef'] = $newActivityId;
                    $insertData['CreateDate'] = $date;
                    $insertData['UpdateDate'] = $date;
                    $this->db->insert($table, $insertData);
                }
            }
        } catch (Exception $ex) {
            die($ex->getMessage());
            return 0;
        }
    }

//function get all information by itenary
    public function getCustPackageAllDetailsListFullFill($id) {
        $sqlFlexiPackageIten = "SELECT a.*,b.PlaceSysId,f.SupplierSysId,c.ServiceTitle,c.ServiceType,c.Comment as ServiceComment,c.Cost as ServiceCost,c.PaxCount as ServicePaxCount,
								d.TransType,d.FixTransSysId,d.Sequence as TransportSequence,d.IsIncluded,d.TransTypeCat,d.FromPlace as TransFromPlace,d.ToPlace as TransToPlace,d.CostPerson as TransCostPerson,
								d.TotalPrice as TransTotalPrice,d.Capacity as TransCapacity,d.RouteSysId as TransRouteSysId,d.VehSysId as TransVehSysId,d.VehicleQty,d.VehicleName
								,d.PickUpRemarks,d.DropRemarks,d.PickUpCity,d.DropCity
								,e.StatusSysId,
								TB_IC_Supplier.SupplierName,TB_IC_Supplier.Salution as SupplierSalution,TB_IC_Supplier.FirstName as SupplierFirstName,
								TB_IC_Supplier.LastName as SupplierLastName,f.RouteName,g.VehName,h.Title as StartCity,
								c.OtherSrvSysId,c.IsCostInclInTP,c.VersionId as OSVersionId,OSS.FirstName as OSSupplierFirstName,OSS.LastName as OSSupplierLastName,i.StatusSysId as OSStatusSysId
                        FROM TB_Agency_Customer_TravelPlan_Itenary_Fullfillment as a
						LEFT JOIN TB_Agency_Customer_TravelPlan_Itenary_Places_Fullfillment as b ON 	a.TPIntSysId = b.TPIntSysId AND a.Sequence = b.Sequence
						LEFT JOIN TB_Agency_Customer_TravelPlan_OtherServices_Fullfillment as c ON 	a.TPSysId = c.TPIntSysId
						LEFT JOIN TB_Agency_Customer_Trans_Fixed_Fullfillment as d ON a.TPIntSysId = d.TPIntSysId
						LEFT JOIN TB_Agency_Transport_Route as f ON d.RouteSysId = f.RouteSysId
						LEFT JOIN TB_Master_Geo_City as h ON f.StartCitySysId = h.CityId
						LEFT JOIN TB_Master_Vehicle as g ON d.VehicleTypeSysId = g.VehSysId
						LEFT JOIN TB_IC_Supplier ON f.SupplierSysId = TB_IC_Supplier.SupplierSysId
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall as e ON 	d.FixTransSysId = e.ItemSysId
						LEFT JOIN TB_IC_Supplier as OSS ON OSS.SupplierSysId = c.SupplierSysId
						LEFT JOIN TB_Agency_Customer_ReqSupplierOnCall as i ON 	c.OtherSrvSysId = i.ItemSysId
						WHERE a.TPSysId = '" . @$id . "' AND a.IsMarkForDel = 0 ORDER BY a.Sequence ASC";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

//ss for fullfillment
    public function getCustomerTravelPlanSSByIdFullfillment($SSSysId, $VersionId) {
        $sqlPackageActivity = "SELECT XrefVoucherNo from TB_Agency_Customer_TravelPlan_SightSeeing_Fullfillment WHERE TB_Agency_Customer_TravelPlan_SightSeeing_Fullfillment.IsActive = '1' AND TB_Agency_Customer_TravelPlan_SightSeeing_Fullfillment.IsMarkForDelete = '0' AND TB_Agency_Customer_TravelPlan_SightSeeing_Fullfillment.SSSysId=" . $SSSysId . " AND VersionId=" . $VersionId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function to fetch activity details by id for fullfillment
    public function getCustomerTravelPlanEventsByIdFullfillment($TPActivitySysId, $VersionId) {
        $sqlPackageActivity = "SELECT XrefVoucherNo FROM TB_Agency_Customer_TravelPlan_Itenary_Events_Fullfillment WHERE TB_Agency_Customer_TravelPlan_Itenary_Events_Fullfillment.IsActive = '1' AND TB_Agency_Customer_TravelPlan_Itenary_Events_Fullfillment.IsMarkForDel = '0' AND TB_Agency_Customer_TravelPlan_Itenary_Events_Fullfillment.TPActivitySysId=" . $TPActivitySysId . " AND VersionId=" . $VersionId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

//function get all information by public transport for fullfillment
    public function getPublicTransportDetailsByIdFullfillment($TPSysId, $FixTransSysId) {
        $sqlFlexiPackageIten = "SELECT FixTransSysId,XrefVoucherNo  FROM TB_Agency_Customer_Trans_Fixed_Fullfillment WHERE 
		TB_Agency_Customer_Trans_Fixed_Fullfillment.TPSysId = '" . @$TPSysId . "' AND TB_Agency_Customer_Trans_Fixed_Fullfillment.FixTransSysId = '" . @$FixTransSysId . "' AND TB_Agency_Customer_Trans_Fixed_Fullfillment.IsMarkForDel = 0 AND TB_Agency_Customer_Trans_Fixed_Fullfillment.IsActive = 1";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();

        return $resultFlexiPackageIten;
    }

//function to fetch otherservice details by id for fullfillment
    public function getCustomerTravelPlanOSByIdFullfillment($TPSysId, $OtherSrvSysId, $VersionId = NULL) {
        $sqlPackageActivity = "SELECT XrefVoucherNo from TB_Agency_Customer_TravelPlan_OtherServices_Fullfillment WHERE IsActive = '1' AND IsMarkForDelete = '0' AND OtherSrvSysId=" . $OtherSrvSysId . " AND TPIntSysId=" . $TPSysId . "";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getGtxNetworkSuppkier($agencySysId, $getData = null) {
//print_r($getData);die;
        $select = $this->db->select();
//$selectarray = array('T1.EnSupPackGNId','T1.TPSysId','T1.ToEmailId','T1.ToName','T1.PackageSysId','T1.AgencySysId','T1.CreateDate');
        $select->from(array('T1' => "TB_Enqury_Supplier_Package_GtxNetwork"));
        $select->joinLeft(array('T2' => 'TB_Master_Geo_City'), 'T2.CityId=T1.CitySysId', array('T2.Title as CityName'));
        $select->joinLeft(array('T3' => 'TB_Agency'), 'T3.AgencySysId=T1.AgencySysId', array('T3.Title as AgencyName', 'T3.PrimaryEmail', 'T3.PrimaryContactNo'));
        $select->joinLeft(array('T4' => 'TB_TravelPlan'), 'T4.TPSysId=T1.PackageSysId', array('T4.Title as PackageName'));
        if (isset($getData['customerName']) && !empty($getData['customerName'])) {
            $select->where('T3.Title LIKE ?', '%' . trim($getData['customerName']) . '%');
        }
        if (isset($getData['customerEmail']) && !empty($getData['customerEmail'])) {
            $select->where('T3.PrimaryEmail LIKE ?', '%' . trim($getData['customerEmail']) . '%');
        }
        if (isset($getData['customerMobile']) && !empty($getData['customerMobile'])) {
            $select->where('T3.PrimaryContactNo LIKE ?', '%' . trim($getData['customerMobile']) . '%');
        }
        if (isset($getData['Destination']) && !empty($getData['Destination'])) {
            $select->where('T1.CitySysId = ?', $getData['Destination']);
        }
        if (isset($getData['customerProposalId']) && !empty($getData['customerProposalId'])) {
            $select->where('T1.TPSysId = ?', trim($getData['customerProposalId']));
        }
        if (isset($getData['QueryStatus']) && $getData['QueryStatus'] >= 0 && $getData['QueryStatus'] != 'All') {
            $select->where('T1.EnquiryStatus = ?', trim($getData['QueryStatus']));
        }
        $select->where('T1.ToAgencySysId = ?', $agencySysId);
        $select->where('T1.IsActive = ?', 1);
        $select->where('T1.IsMarkForDelete = ?', 0);
        $select->order('T1.EnSupPackGNId DESC');
//echo $select;die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function MygetGtxNetworkSupplier($agencySysId) {
        $select = $this->db->select();
//$selectarray = array('T1.EnSupPackGNId','T1.TPSysId','T1.ToEmailId','T1.ToName','T1.PackageSysId','T1.AgencySysId','T1.CreateDate');
        $select->from(array('T1' => "TB_Enqury_Supplier_Package_GtxNetwork"));
        $select->joinLeft(array('T2' => 'TB_Master_Geo_City'), 'T2.CityId=T1.CitySysId', array('T2.Title as CityName'));
        $select->joinLeft(array('T3' => 'TB_Agency'), 'T3.AgencySysId=T1.ToAgencySysId', array('T3.Title as AgencyName', 'T3.PrimaryEmail', 'T3.PrimaryContactNo', 'T3.PrimaryContactName'));
        $select->joinLeft(array('T4' => 'TB_TravelPlan'), 'T4.TPSysId=T1.PackageSysId', array('T4.Title as PackageName'));
        $select->joinLeft(array('T5' => 'TB_Agency_Customer_TravelPlan'), 'T5.TPSysId=T1.TPSysId', array('T5.CreateDate as leadCreateDate', 'T5.StatusType'));
        $select->where('T1.AgencySysId = ?', $agencySysId);
        $select->where('T1.IsActive = ?', 1);
        $select->where('T1.IsMarkForDelete = ?', 0);
        $select->order('T1.EnSupPackGNId DESC');
//echo $select;die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getGtxNetworkSuppkierDetails($agencySysId, $EnSupPackGNId) {
        $select = $this->db->select();
//$selectarray = array('T1.EnSupPackGNId','T1.TPSysId','T1.ToEmailId','T1.ToName','T1.PackageSysId','T1.AgencySysId','T1.CreateDate','T1.EmailContent');
        $select->from(array('T1' => "TB_Enqury_Supplier_Package_GtxNetwork"));
        $select->joinLeft(array('T2' => 'TB_Master_Geo_City'), 'T2.CityId=T1.CitySysId', array('T2.Title as CityName'));
        $select->joinLeft(array('T3' => 'TB_Agency'), 'T3.AgencySysId=T1.AgencySysId', array('T3.Title as AgencyName', 'T3.PrimaryEmail', 'T3.PrimaryContactNo'));
        $select->joinLeft(array('T4' => 'TB_TravelPlan'), 'T4.TPSysId=T1.PackageSysId', array('T4.Title as PackageName'));
        $select->where('T1.ToAgencySysId = ?', $agencySysId);
        $select->where('T1.EnSupPackGNId = ?', $EnSupPackGNId);
        $select->where('T1.IsActive = ?', 1);
        $select->where('T1.IsMarkForDelete = ?', 0);
        $select->order('T1.EnSupPackGNId ASC');
//echo $select;die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function MygetGtxNetworkSuppkierDetails($agencySysId, $EnSupPackGNId) {
        $select = $this->db->select();
//$selectarray = array('T1.EnSupPackGNId','T1.TPSysId','T1.ToEmailId','T1.ToName','T1.PackageSysId','T1.AgencySysId','T1.CreateDate','T1.EmailContent');
        $select->from(array('T1' => "TB_Enqury_Supplier_Package_GtxNetwork"));
        $select->joinLeft(array('T2' => 'TB_Master_Geo_City'), 'T2.CityId=T1.CitySysId', array('T2.Title as CityName'));
        $select->joinLeft(array('T3' => 'TB_Agency'), 'T3.AgencySysId=T1.ToAgencySysId', array('T3.Title as AgencyName', 'T3.PrimaryEmail', 'T3.PrimaryContactNo'));
        $select->joinLeft(array('T4' => 'TB_TravelPlan'), 'T4.TPSysId=T1.PackageSysId', array('T4.Title as PackageName'));
        $select->where('T1.AgencySysId = ?', $agencySysId);
        $select->where('T1.EnSupPackGNId = ?', $EnSupPackGNId);
        $select->where('T1.IsActive = ?', 1);
        $select->where('T1.IsMarkForDelete = ?', 0);
        $select->order('T1.EnSupPackGNId ASC');
//echo $select;die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getGtxNetworkReplyList($agencySysId, $EnSupPackGNId) {
        $select = $this->db->select();
//$selectarray = array('T1.EnSupPackGNId','T1.TPSysId','T1.ToEmailId','T1.ToName','T1.PackageSysId','T1.AgencySysId','T1.CreateDate','T1.EmailContent');
        $select->from(array('T1' => "TB_Enqury_Supplier_Package_GtxNetwork_Reply"));
        $select->joinLeft(array('T3' => 'TB_Agency'), 'T3.AgencySysId=T1.AgencySysId', array('T3.Title as AgencyName', 'T3.PrimaryEmail', 'T3.PrimaryContactNo'));
//$select->where('T1.AgencySysId = ?', $agencySysId);
        $select->where('T1.EnSupPackGNId = ?', $EnSupPackGNId);
        $select->where('T1.IsActive = ?', 1);
        $select->where('T1.IsMarkForDelete = ?', 0);
        $select->order('T1.ReplyGNId ASC');
//echo $select;die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function DiscardQuery($dataForDb = array(), $EnSupPackGNId = NULL) {
        $where = array('EnSupPackGNId =?' => $EnSupPackGNId);
        return $this->db->update('TB_Enqury_Supplier_Package_GtxNetwork', $dataForDb, $where);
    }

    public function GtxNetworkConfirmUpdate($dataForDb = array(), $EnSupPackGNId = NULL) {
        $where = array('EnSupPackGNId =?' => $EnSupPackGNId);
        return $this->db->update('TB_Enqury_Supplier_Package_GtxNetwork', $dataForDb, $where);
    }

    public function GenrateSecureCode($id, $isnetwork = 0) {
        $requestedId = trim($id);
        $checkCode = trim($isnetwork);
        $finalCode = $checkCode . 'SECURE' . $requestedId;
        $checkId = hash('sha256', "GTX-$finalCode");
        return $checkId;
    }

    public function getFlexiPackageOptionalSightseenListByItenarary($iitnID, $freeType = NULL, $readymadeFreetype = NULL, $MPTYPE = 1, $date = NULL, $VersionId = NULL) {
        if (!empty($readymadeFreetype)) {
            $cond = " AND TTS.Type IN ('Optional')";
        } else {
            $cond = (!empty($freeType)) ? " AND TTS.Type IN ('Optional','Included')" : '';
        }
        if (!empty($date)) {
            $dateCond = " AND '$date' BETWEEN CAST(TMIS.FromDate AS DATE) AND CAST(TMIS.ToDate AS DATE) ";
        }
//from version id or invntemsys id any 1 must be required, otherwise it will give all results
        if (!empty($VersionId)) {
            $cond .= " AND TTS.VersionId IN (" . $VersionId . ") ";
        } else if (!empty($iitnID)) {
            $cond .= " AND TTS.InvnItemSysId = '" . $iitnID . "' ";
        }
        $tripDate = !empty($date) ? $date : date('Y-m-d');
        $sqlPackageActivity = "SELECT TTS.XrefInvnItemSysId ,TTS.IsOptionalSightSeeing,TTS.VersionId,TTS.Title, TMIS.CostCurrency ,
 TMIS.TrxCurrency ,TMIS.TotalCostNativeAdult ,TMIS.TotalCostNativeChild ,TB_IC_SightSeeing.DurationStr as duration, symbol,alloc.NetPriceNativeAdult as CustomiseAdultCost,alloc.MarkUpNativeAdult,alloc.MarkUpNativeChild,
 alloc.NetPriceNativeChild as CustomiseChildCost ,alloc.MPType,TMIS.SupplierSysId,TB_IC_Supplier.SupplierName as SupplierType,TB_IC_SightSeeing.SSSysId,TB_IC_SightSeeing.WriteUp,TB_IC_SightSeeing.Icon
 FROM TB_TravelPlan_SightSeeing as TTS left JOIN TB_MP_Inventory_SightSeeing TMIS ON TMIS.InvnItemSysId = TTS.XrefInvnItemSysId 
 INNER JOIN TB_TravelPlan_Itenary ON TB_TravelPlan_Itenary.TPIntSysId = TTS.InvnItemSysId
 INNER JOIN TB_TravelPlan ON TB_TravelPlan_Itenary.TPSysId = TB_TravelPlan.TPSysId
  LEFT JOIN TB_TravelPlan_MarketWise_Rate ON TB_TravelPlan_MarketWise_Rate.TPIntSysId = TB_TravelPlan.TPSysId AND Pax =2
 left JOIN TB_MP_Inventory_SightSeeing_Alloc alloc ON alloc.InvnItemSysId = TTS.XrefInvnItemSysId AND TB_TravelPlan_MarketWise_Rate.MarketPlaceId = alloc.MPType
 LEFT JOIN TB_IC_SightSeeing ON TTS.SSSysId=TB_IC_SightSeeing.SSSysId
 JOIN TB_IC_Supplier ON TMIS.SupplierSysId=TB_IC_Supplier.SupplierSysId 
  LEFT JOIN TB_Master_Currency ON TTS.CurrencyType=TB_Master_Currency.CurrencyType 
  WHERE TTS.IsActive = '1' AND TTS.IsMarkForDelete = '0' AND alloc.IsMarkForDel = '0' 
   $cond
  AND TB_TravelPlan_MarketWise_Rate.IsMarkForDel = 0 AND TB_TravelPlan_MarketWise_Rate.MarketPlaceId = '" . $MPTYPE . "'
   AND '$tripDate' BETWEEN CAST(TB_TravelPlan_MarketWise_Rate.FromDate AS DATE) AND CAST(TB_TravelPlan_MarketWise_Rate.ToDate AS DATE)
  $dateCond
 ";
// echo $sqlPackageActivity; exit;
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getCustomerFlexiPackageSightseenListByItenarary($iitnID, $freeType = NULL, $readymadeFreetype = NULL) {
        if (!empty($readymadeFreetype)) {
            $cond = " AND TACTS.Type IN ('Optional')";
        } else {
            $cond = (!empty($freeType)) ? " AND TACTS.Type IN ('Optional','Included')" : '';
        }
        $sqlPackageActivity = "SELECT TACTS.*,TB_IC_SightSeeing.DurationStr as duration, TB_IC_SightSeeing.*, symbol,SupplierName						 
                        FROM TB_Agency_Customer_TravelPlan_SIghtseeing as TACTS
						LEFT JOIN TB_IC_SightSeeing ON TACTS.SSSysId=TB_IC_SightSeeing.SSSysId 
                                                LEFT JOIN TB_IC_Supplier ON TB_IC_Supplier.SupplierSysId = TACTS.SupplierSysId
                                                LEFT JOIN TB_Master_Currency ON TACTS.CurrencyType=TB_Master_Currency.CurrencyType
						WHERE TACTS.IsActive = '1' AND TACTS.IsMarkForDelete = '0' AND TACTS.InvnItemSysId = '" . $iitnID . "' $cond"; // AND Sequence = 1) ";
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function getMoreThanPaxDataByMarketWiseRate($TPSysId, $CategoryId, $fromDate, $toDate, $MarketPlaceId) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_TravelPlan_Marketwise_Rate"));
        $select->joinLeft(array('tb2' => 'TB_Master_Currency'), 'tbl.CurrencyType=tb2.CurrencyType', array('Symbol'));
        $select->where('tbl.TPIntSysId = ?', $CategoryId);
        $select->where('convert(date,tbl.FromDate) = ?', $fromDate);
        $select->where('convert(date,tbl.ToDate) = ?', $toDate);
        $select->where('tbl.MarketPlaceId = ?', $MarketPlaceId);
        $select->where('tbl.IsActive = ?', 1);
        $select->where('tbl.IsMarkForDel = ?', '0');
        $select->order('tbl.Pax');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getMoreThanPaxDataByMarketRate($TPSysId, $CategoryId, $fromDate, $toDate, $MarketPlaceId) {
        $select = $this->db->select();
        $select->from(array('tbl' => 'TB_TravelPlan_Rate'));
        $select->joinLeft(array('tb2' => 'TB_Master_Currency'), 'tbl.CurrencyType=tb2.CurrencyType', array('Symbol'));
        $select->where('tbl.TPSysId = ?', $CategoryId);
        $select->where('convert(date,tbl.StartDate) = ?', $fromDate);
        $select->where('convert(date,tbl.ValidTill) = ?', $toDate);
        $select->where('tbl.MarketPlaceId = ?', $MarketPlaceId);
        $select->where('tbl.IsActive = ?', 1);

        $select->where('tbl.IsMarkForDel = ?', '0');
        $select->order('tbl.Pax');
//echo $select;die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCustomerDataIsB2bAgent($custId) {
        $sql = "select IsB2BAgent from TB_Agency_Customer where CustomerSysId = '" . $custId . "'";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    /* New Functions 31/07/2018 Start */

    public function getCusttFlexiPackageFinalHotels($packageId) {
        $sqlPackageActivity = "SELECT TBTPIA.*,TBMRT.Title as RoomTitle, TBMMPT.Title as MealTitle  FROM TB_Agency_Customer_TravelPlan_Accom TBTPIA
             LEFT JOIN TB_Master_RoomType AS TBMRT ON TBMRT.RoomType=TBTPIA.RoomType
             LEFT JOIN TB_Master_Accom_MealType as TBMMPT ON TBMMPT.MealTypeId = TBTPIA.MealPlanType
                 WHERE TBTPIA.IsActive = '1' AND TBTPIA.IsMarkForDel = '0' AND TBTPIA.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Accom WHERE TPIntSysId = '" . @$packageId . "')";
//AND IsActive = '1' AND IsMarkForDel = '0'
        $resultPackageActivity = $this->db->query($sqlPackageActivity)->fetchAll();
        return $resultPackageActivity;
    }

    public function checkFixedInventory($AgencySysId, $TPSysId, $FromDate, $Inventory) {
        $sql = "select convert(date,FromDate) as FromDate,CurrentInventory from TB_TravelPlan_Itinerary_FixedInventory where convert(date,FromDate) = '" . $FromDate . "' AND TPSysID = $TPSysId AND CurrentInventory >= $Inventory AND IsActive = 1 AND IsMarkForDel = '0'";
        $result = $this->db->query($sql)->fetchAll();
        return $result;
    }

    public function checkFixedInventoryDestinationWise($TPSysId, $fromDate, $Inventory, $SourcePlaceSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Itinerary_FixedInventory"), array('FixedInvnSysId', 'convert(date,FromDate) as FromDate', 'CurrentInventory', 'id'));
        $select->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
        $select->where('CONVERT(date,tb1.FromDate) = ?', $fromDate);
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.CurrentInventory >= ?', $Inventory);
        $select->where('tb2.DestinationSysId = ?', $SourcePlaceSysId);
        $select->where('tb1.IsActive = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb2.IsActive = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
// echo $select; exit;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function checkFixedDeparturePackage($TPSysId) { //if catId  & tour id is blank then default rate for standard private are fetch
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan"), array("IsFixedDeparturePackage", "TPSysId", "MasterRefId", "bookingvalidityDay", "PkgSellValidTill", "IsBusRoutePackage", "IsCommonFlightPackage"));
        $select->where('TBTPMWR.TPSysId = ?', $TPSysId);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getPickuplocationWithTime($TPSysId) { //if catId  & tour id is blank then default rate for standard private are fetch
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Bus_Pickup_Location"), array("Sequence", "BusRouteSysId", "PickupTime", "PickupLocationSysId", "MasterRefTPSysID", "StartCityId", "EndCityId", "pickupLocation"));
        $select->where('tb1.ISACTIVE = ?', 1);
        $select->where('tb1.ISMARKFORDEL = ?', 0);
        $select->where("tb1.MasterRefTPSysID IN (SELECT TPSYSID FROM TB_TRAVELPLAN WHERE (TPSYSID = $TPSysId OR MASTERREFID = $TPSysId))");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function checkFixedDeparturePackageInventory($TPSysId, $FROMDATE, $inventory) { //if catId  & tour id is blank then default rate for standard private are fetch
        $currentDate = date("Y-m-d");
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_Itinerary_FixedInventory"), array("CurrentInventory"));
        $select->where('TBTPMWR.TPSysID IN(?)', $TPSysId);
        $select->where('TBTPMWR.FromDate = ?', $FROMDATE);
        $select->where('TBTPMWR.FromDate >= ?', $currentDate);
        $select->where('TBTPMWR.CurrentInventory >= ?', $inventory);
        $result = $this->db->fetchALL($select);
        return $result;
    }

    public function getFlightPriceForFixedDeparture($TPSysId, $fromDate, $SourcePlaceSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Itinerary_FixedInventory"));
        $select->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
        $select->joinLeft(array('tb3' => "TB_Master_Currency"), "tb1.CurrencySysId = tb3.CurrencyType", array('Symbol'));
        $select->where('CONVERT(date,tb1.FromDate) = ?', $fromDate);
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb2.DestinationSysId = ?', $SourcePlaceSysId);
        $select->where('tb1.IsActive = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb2.IsActive = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
// echo $select; exit;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getFlightPriceForFixedDepartureCommon($TPSysId, $fromDate, $SourcePlaceSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Itinerary_FixedInventory"));
        $select->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
//$select->where('CONVERT(date,tb1.FromDate) = ?', $fromDate);
        $select->where('? BETWEEN CONVERT(date,tb1.FromDate) AND CONVERT(date,tb1.ToDate)', $fromDate);
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb2.DestinationSysId = ?', $SourcePlaceSysId);
        $select->where('tb1.IsActive = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb2.IsActive = ?', 1);
        $select->where('tb2.IsMarkForDel = ?', 0);
//         echo $select; exit;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    /* New Functions 31/07/2018 End */

    /* Added By Mangal 18/11/2018 Start */

    public function checkDuplicateFixedInventoryDateWise($packageId, $tripdate) {
        $whereCondition = " RefTPSysID = '" . $packageId . "' AND FromDate = '" . $tripdate . "' AND IsMarkForDel = '0' AND IsActive = '1'";
        $select = $this->db->select()
                ->from(array("TBTPMWR" => "TB_TravelPlan_Itenary_FixedInventory"))
                ->where($whereCondition);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function checkMarketWiseRateForFixedInventoryByDate($TPSysId, $fromDate, $toDate) {
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan_Rate"), array('count(*) as total'));
        $select->where('TB_TravelPlan_Rate.TPSysId IN(?)', $TPSysId);
        $select->where('TB_TravelPlan_Rate.StartDate = ?', $fromDate);
        $select->where('TB_TravelPlan_Rate.ValidTill = ?', $toDate);
        $select->where('TB_TravelPlan_Rate.IsMarkForDel = ?', '0');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFixedInvnSysIdByMasterPackageIdANdFromDate($TPSysId, $fromDate) {
        $select = $this->db->select();
        $select->from(array('TTIF' => "TB_TravelPlan_Itenary_FixedInventory"), array('FixedInvnSysId'));
        $select->where('TTIF.RefTPSysID =?', $TPSysId);
        $select->where('TTIF.FromDate = ?', $fromDate);
        $select->where('TTIF.IsMarkForDel = ?', '0');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getCustPackageListForInventory($id, $AgencySysId = NULL) {
        $where = '';
        if ($AgencySysId) {
            $where = " AND AgencySysId = $AgencySysId";
        }
        $resultFlexiPackage = array();
        if (isset($id) && (int) $id > 0) {
            $sqlFlexiPackage = "SELECT IsBusRoutePackage,RoomInfoJson,IsFixedDeparturePackage,StartDate,TPId,AgencySysId,CustomerSysId,TPSysId,GSTSharedMode,NetPrice,TotalCostGen,SourcePlaceSysId,EconomyMask,InternalRemarks,DiscountType,DiscountVal,pickupLocationSysId FROM TB_Agency_Customer_TravelPlan WHERE TPSysId = '" . $id . "' $where ";
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();
        }
        return $resultFlexiPackage;
    }

    public function checkDataInInventoryHistory($id) {
        $sqlFlexiPackage = "SELECT count(FixedInvnHisSysId) as TotalInventory FROM TB_TravelPlan_Itenary_FixedInventoryHistory WHERE RefCustomerTPSysID = '" . @$id . "' AND IsActive = 1 AND IsMarkForDel = '0'";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetch();
        return $resultFlexiPackage;
    }

    public function getAllFixedDeparturePackageList($intLoggedinUserAgencySysId) {
        $select = $this->db->select();
        $select->from(array("TB_TravelPlan"), array('TPSysId', 'MasterRefId', 'Title', 'IsFixedDeparturePackage'));
        $select->where('TB_TravelPlan.AgencySysId =?', $intLoggedinUserAgencySysId);
        $select->where('TB_TravelPlan.IsFixedDeparturePackage = ?', 1);
        $select->where('TB_TravelPlan.MasterRefId = ?', 0);
        $select->where('TB_TravelPlan.IsCustEdit = ?', 0);
        $select->where('TB_TravelPlan.IsActive = ?', 1);
        $select->where('TB_TravelPlan.IsMarkForDel = ?', '0');
        $select->order('TPSysId DESC');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFixedDepartue($AgencySysId, $source = 'inprocess', $searchData = array()) {
        $currentDate = date("Y-m-d");
        $subQuery = "SELECT MIN(CostPPDO) FROM TB_TravelPlan_MarketWise_Rate t1 WHERE t1.MarketPlaceId = 1 AND t1.TPIntSysId = tb.TPSysId AND convert(date,tb1.FromDate) = convert(date,t1.FromDate)";
        $sqlFlexiPackage = $this->db->select();
        $sqlFlexiPackage->from(array('tb' => "TB_TravelPlan"), array('TPSysId', 'MasterRefId', 'Title', 'IsFixedDeparturePackage', 'DestinationPlaces', 'SourcePlaces'));
        $sqlFlexiPackage->joinLeft(array('tb1' => "TB_TravelPlan_Itinerary_FixedInventory"), "tb1.TPSysId = tb.TPSysId", array('AdultCost', "($subQuery) AS CostPPDO", 'convert(date,FromDate) as FromDate', 'FixedInventory', 'CurrentInventory', 'HoldInventory', 'SoldInventory', 'MarkupType', 'B2CAdultMarkup', 'B2BAdultMarkup', 'B2CInfantMarkup', 'B2BInfantMarkup'));
        $sqlFlexiPackage->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
        $sqlFlexiPackage->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tb2.DestinationSysId = tb3.CityId", array('Title AS FromDeparture'));
        $sqlFlexiPackage->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
        $sqlFlexiPackage->joinLeft(array('tb5' => "TB_Master_Currency"), "tb1.CurrencySysId = tb5.CurrencyType", array('Symbol'));
//$sqlFlexiPackage->joinLeft(array('tb6' => "TB_Master_Geo_City"), "tb2.DestinationSysId = tb6.CityId", array('Title AS FromDeparture'));
        $sqlFlexiPackage->where('tb.AgencySysId =?', $AgencySysId);
        $sqlFlexiPackage->where('tb.IsFixedDeparturePackage = ?', 1);
        $sqlFlexiPackage->where('tb.MasterRefId = ?', 0);
        $sqlFlexiPackage->where('tb.IsCustEdit = ?', 0);
        $sqlFlexiPackage->where('tb.IsActive = ?', 1);
        $sqlFlexiPackage->where('tb.IsMarkForDel = ?', '0');
        $sqlFlexiPackage->where('tb2.IsMarkForDel = ?', '0');
        $sqlFlexiPackage->where('tb1.IsActive = ?', 1);
        $sqlFlexiPackage->where('tb1.IsMarkForDel = ?', 0);
        if ($source == 'expired') {
            $sqlFlexiPackage->where("tb1.FromDate < ?", $currentDate);
        } else {
            $sqlFlexiPackage->where("tb1.FromDate >= ?", $currentDate);
        }
        if (isset($searchData['pkgTPId']) && (int) $searchData['pkgTPId'] > 0) {
            $sqlFlexiPackage->where('tb.TPSysId = ?', $searchData['pkgTPId']);
        }
        if (isset($searchData['Destination']) && $searchData['Destination'] != '') {
            $sqlFlexiPackage->where('tb.DestinationPlaces like (?)', '%' . $searchData['Destination'] . '%');
        }
        if (isset($searchData['DepartureFrom']) && $searchData['DepartureFrom'] != '') {
            $sqlFlexiPackage->where('tb3.Title like (?)', '%' . $searchData['DepartureFrom'] . '%');
        }
        if (isset($searchData['PackageName']) && $searchData['PackageName'] != '') {
            $sqlFlexiPackage->where('tb.Title = ?', $searchData['PackageName']);
        }
        if (isset($searchData['travelDate']) && $searchData['travelDate'] != '') {
            $sqlFlexiPackage->where('convert(date,tb1.FromDate) = ?', $searchData['travelDate']);
        }
        $sqlFlexiPackage->order('tb.TPSysId DESC');
        $sqlFlexiPackage->order('tb1.FromDate DESC');
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getInventoryDateForInventoryDetail($AgencySysId, $id, $marketPlaceId = 1) {
        $currentDate = date("Y-m-d");
        $resultFlexiPackage = array();
        if ($id != "") {
            $subQuery = "SELECT MIN(CostPPDO) FROM TB_TravelPlan_MarketWise_Rate t1 WHERE t1.MarketPlaceId = $marketPlaceId AND t1.TPIntSysId = $id AND convert(date,tb1.FromDate) = convert(date,t1.FromDate)";
            $sqlFlexiPackage = $this->db->select();
            $sqlFlexiPackage->from(array('tb1' => "TB_TravelPlan_Itinerary_FixedInventory"), array('AdultCost', "($subQuery) AS CostPPDO", 'convert(date,FromDate) as FromDate', 'FixedInventory', 'CurrentInventory', 'HoldInventory', 'SoldInventory', 'MarkupType', 'B2CAdultMarkup', 'B2BAdultMarkup', 'B2CInfantMarkup', 'B2BInfantMarkup', 'CurrencySysId'));
            $sqlFlexiPackage->joinLeft(array('tb2' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb1.FixedInvnSysId = tb2.id", array('DestinationSysId'));
            $sqlFlexiPackage->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tb2.DestinationSysId = tb3.CityId", array('Title'));
            $sqlFlexiPackage->joinLeft(array('tb4' => "TB_Master_Currency"), "tb1.CurrencySysId = tb4.CurrencyType", array("Symbol as CurrencySymbol"));
            $sqlFlexiPackage->where('tb1.TPSysId = ?', $id);
            $sqlFlexiPackage->where('tb1.IsActive = ?', 1);
            $sqlFlexiPackage->where('tb1.IsMarkForDel = ?', 0);
            $sqlFlexiPackage->order('tb1.FromDate DESC');
//echo $sqlFlexiPackage; exit;
            $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        }
        return $resultFlexiPackage;
    }

    public function GetFixeddepartureTravelPlanQueryDetails($AgencySysId, $tpsysID, $departureCity = NULL) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_TravelPlan_Itenary_FixedInventoryHistory"), array('Inventory', 'InventoryStatus', 'RefTPSysID', 'FromDate', 'CustomerSysId', 'CreateDate', 'HoldDay'));
        $select->joinLeft(array('tb2' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb2.CustomerSysId", array('AgencySysId', 'FirstName', 'LastName', 'EmailId', 'Contacts', 'Title as Salutation', 'DOB', 'PassportNo', 'PassportExpiry', 'PinCode', 'IsB2BAgent'));
        $select->joinLeft(array('tb3' => "TB_Agency_Customer_TravelPlan"), "tbl.RefCustomerTPSysID  = tb3.TPSysId", array("tb3.*", "((select sum(adT1.Tax) FROM TB_Agency_Customer_TravelPlan_AddonServices adT1 where adT1.IsMarkForDelete = '0' AND tb3.TPSysId = adT1.TPSysId AND (adT1.PlanType = 21 OR adT1.PlanType = 19))) as TotalTcs"));
        $select->joinLeft(array('tb4' => "TB_Agency_User"), "tb4.UserSysId=tb3.AgentSysId", array('FirstName as AgentFirstName', 'LastName as AgentLastName'));
        $select->joinLeft(array('tb5' => 'TB_Master_Geo_City'), 'tb2.CitySysId = tb5.CityId', array('Title as CityName', 'Country as CountryName'));
        $select->joinLeft(array('tb6' => 'TB_Agency'), 'tb2.AgencySysId = tb6.AgencySysId', array('Title as CompanyName'));
        if ($departureCity) {
            $select->where('tb3.SourcePlaceSysId   = ?', $departureCity);
        }
        $select->where('tbl.AgencySysId   = ?', $AgencySysId);
        $select->where('tbl.RefTPSysID  = ?', $tpsysID);
        $select->where('tbl.InventoryStatus IN (?)', array(1, 0));
        $select->order("tbl.FixedInvnHisSysId DESC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetFixeddepartureTravelPlanQueryDetailsAllPax($AgencySysId, $tpsysID, $departureCity = NULL) {
        $select = $this->db->select();
        $select->from(array('tbl' => "TB_TravelPlan_Itenary_FixedInventoryHistory"), array('Inventory', 'InventoryStatus', 'RefTPSysID', 'FromDate', 'CustomerSysId', 'CreateDate', 'HoldDay'));
        $select->joinLeft(array('tb2' => "TB_Agency_Customer"), "tbl.CustomerSysId = tb2.CustomerSysId", array('AgencySysId', 'FirstName', 'LastName', 'EmailId', 'Contacts', 'Title as Salutation', 'DOB', 'PassportNo', 'PassportExpiry', 'PinCode'));
        $select->joinLeft(array('tb3' => "TB_Agency_Customer_TravelPlan"), "tbl.RefCustomerTPSysID  = tb3.TPSysId");
        $select->joinLeft(array('tb4' => "TB_Agency_User"), "tb4.UserSysId=tb3.AgentSysId", array('FirstName as AgentFirstName', 'LastName as AgentLastName'));
        $select->joinLeft(array('tb5' => 'TB_Master_Geo_City'), 'tb2.CitySysId = tb5.CityId', array('Title as CityName', 'Country as CountryName'));
        $select->joinLeft(array('tb6' => 'TB_Agency_Customer_TravelPlan_Pax'), 'tb3.TPSysId = tb6.TPSysId', array('MemberSysId', 'IsLeadPax', 'CustomerSysId as CustomerSysIdPax'));
//$select->joinLeft(array('tb7' => 'TB_Agency_Customer'), 'tb6.CustomerSysId = tb7.CustomerSysId', array('FirstName as cFirstName','LastName as cLastName','Title as cSalutation'));
        $select->joinLeft(array('tb8' => 'TB_Agency_Customer_Members'), 'tb6.MemberSysId = tb8.MemberSysId', array('FirstName as mFirstName', 'LastName as mLastName', 'Title as mSalutation', 'Relation', 'EmailId as mEmailId', 'Contacts as mContacts', 'PassportNo as mPassportNo', 'PassportExpiry as mPassportExpiry', 'DOB as mDOB'));
        if ($departureCity) {
            $select->where('tb3.SourcePlaceSysId   = ?', $departureCity);
        }
        $select->where('tbl.AgencySysId   = ?', $AgencySysId);
        $select->where('tbl.InventoryStatus IN (?)', array(1, 0));
        $select->where('tbl.RefTPSysID  = ?', $tpsysID);
        $select->order("tb3.TPSysId DESC");

        $result = $this->db->fetchAll($select);
//        echo "<pre>";print_r($result);die;
        return $result;
    }

    public function getBusPickUpLocationDateByMasterId($AgencySysId, $MasterId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Bus_Pickup_Location"));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.MasterRefTPSysID = ?", $MasterId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", '0');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getMasterIdINTravelPlan($MasterId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan"), array('MasterRefId'));
        $select->where("tb1.MasterRefId = ?", $MasterId);
        $select->orWhere("tb1.TPSysId = ?", $MasterId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", '0');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getB2BAgencyMarkup($UserSysId, $AgencySysId = NULL, $PlanType = 0, $ItemSourceType = 0) {
        if ($AgencySysId) {
            $select = $this->db->select();
            $select->from(array('tb1' => "TB_Agency_User"), array());
            $select->joinLeft(array('tb2' => "TB_Agency"), "tb1.AgencySysId = tb2.AgencySysId", array('MasterAgencySysId', 'AgencyMarketPlaceSysId'));
            if ($PlanType > 0 && $ItemSourceType > 0) {
                $select->joinLeft(array('tb3' => "TB_Agency_MarketPlace"), "tb2.AgencyMarketPlaceSysId > 0 AND (tb2.AgencyMarketPlaceSysId = tb3.MarketPlaceSysId OR tb2.AgencyMarketPlaceSysId = tb3.MasterId) AND tb3.PlanType = $PlanType AND tb3.ItemSourceType = $ItemSourceType", array('MarkUpType', 'MarkUpValue'));
            } else {
                $select->joinLeft(array('tb3' => "TB_Agency_MarketPlace"), "tb2.AgencyMarketPlaceSysId > 0 AND (tb2.AgencyMarketPlaceSysId = tb3.MarketPlaceSysId OR tb2.AgencyMarketPlaceSysId = tb3.MasterId)", array('MarkUpType', 'MarkUpValue'));
            }
            $select->where("tb1.UserSysId = ?", $UserSysId);
            $select->where("tb1.AgencySysId = ?", $AgencySysId);
            $result = $this->db->fetchRow($select);
            return $result;
        } else {
            return '';
        }
    }

    public function getB2BAgencyMarkupForCustomer($UserSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer"), array());
        $select->joinLeft(array('tb2' => "TB_Agency_User"), "tb1.CreatedByUserSysId = tb2.UserSysId", array());
        $select->joinLeft(array('tb3' => "TB_Agency"), "tb2.AgencySysId = tb3.AgencySysId", array('MasterAgencySysId'));
        $select->joinLeft(array('tb4' => "TB_Agency_MarketPlace"), "tb3.AgencyMarketPlaceSysId = tb4.MarketPlaceSysId", array('MarkUpType', 'MarkUpValue'));
        $select->where("tb1.CustomerSysId = ?", $UserSysId);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getFlightDataFromCustomerTravelPlan($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_TravelPlan_Air"));
        $select->where("tb1.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = $TPSysId)");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getTransportDataFromCustomerTravelPlan($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_Trans_Fixed"));
        $select->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.SourceCityId = tb2.CityId", array('Title as FromCityTitle'));
        $select->joinLeft(array('tb21' => "TB_Master_Geo_City"), "tb1.DestCityId = tb21.CityId", array('Title as EnCityTitle'));
        $select->joinLeft(array('tb3' => 'TB_Master_Currency'), 'tb1.CurrencyType = tb3.CurrencyType', array('Symbol'));
        $select->where("tb1.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = $TPSysId)");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCruiseDataFromCustomerTravelPlan($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_TravelPlan_Cruise"));
        $select->joinLeft(array('tb2' => "TB_Agency_Customer_TravelPlan_Cruise_Cabin_Detail"), "tb1.CruiseSysId = tb2.CruiseSysId", array('*'));
        $select->where("tb1.TPIntSysId IN (SELECT TPIntSysId FROM TB_Agency_Customer_TravelPlan_Itenary WHERE TPSysId = $TPSysId)");

        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCityAllSightseeingHavePricing($cityId, $agencySysId = null, $desinationCovered = NULL, $fromDate = NULL) {
        $cond = " AND c.AgencySysId = '$agencySysId' ";
        $condDate = ($fromDate) ? " AND  c.FromDate <= '$fromDate' AND c.ToDate >= '$fromDate'" : "";
        $condCity = !empty($desinationCovered) ? " OR CitySysId IN ($desinationCovered) " : '';
        $sqlPackage = "SELECT SSSysId,a.Title,ICSourceSysId,IsAgentSpec,CitySysId,b.Title as CityName,Country,c.TotalCostNativeAdult,FromDate,ToDate FROM TB_IC_SightSeeing a 
            left JOIN TB_Master_Geo_City b ON a.CitySysId = b.CityId left JOIN TB_MP_Inventory_SightSeeing c ON a.SSSysId = c.XRef 
                 WHERE (a.CitySysId = '" . $cityId . "' $condCity) AND a.IsMarkForDel = '0' AND a.IsActive = '1' $cond $condDate AND c.TotalCostNativeAdult > '0' 
                     Order By CASE WHEN a.CitySysId = '" . $cityId . "' THEN 1 ELSE 2 END ASC,  a.Title ASC";
//$sqlPackage = "SELECT a.Title,b.Title as CityName,Country FROM TB_IC_SightSeeing a left JOIN TB_Master_Geo_City b ON a.CitySysId = b.CityId WHERE a.IsMarkForDel = '0' AND a.IsActive = '1'";
//    	echo $sqlPackage; die;
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getAgencySuperUser($AgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_User"), array("UserSysId"));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->order("tb1.UserSysId");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getSightseeingDetailsWithPricingPvt($SSId, $agencySysId, $fromDate, $marketPlace, $baseCurrency, $adult, $child, $InvnItemSysId = NULL, $supplierId = 0) {
        $returnArray = array();
        $select1 = $this->db->select();
        $select1->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("0 AS sort_order"), "CitySysId"));
        $select1->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
        $select1->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1' ", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
        $select1->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
        $select1->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
        $select1->where("tb1.SSSysId = ?", $SSId);
        $select1->where("tb3.IsMarkForDelete = ?", 0);
        if ($InvnItemSysId) {
            $select1->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
        }

        if ($supplierId > 0) {
            $select1->where("tb3.SupplierSysId = ?", $supplierId);
            $select2 = $this->db->select();
            $select2->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("1 AS sort_order"), "CitySysId"));
            $select2->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
            $select2->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1' ", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
            $select2->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
            $select2->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
            $select2->where("tb1.SSSysId = ?", $SSId);
            $select2->where("tb3.IsMarkForDelete = ?", 0);
            if ($InvnItemSysId) {
                $select2->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
            }
            $select2->where("tb3.SupplierSysId != ?", $supplierId);
            $union = $this->db->select()->union(array($select1, $select2));
            $union->order("sort_order ASC");
            $union->order("tb3.InvnItemSysId DESC");
            $result = $this->db->fetchAll($union);
        } else {
            $select1->order("tb3.InvnItemSysId DESC");
            $result = $this->db->fetchAll($select1);
        }
        if (!empty($result)) {
            $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
            $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
            $returnArray['CityName'] = $result[0]['CityName'];
            $returnArray['SupplierSysId'] = $result[0]['SupplierSysId'];
            $returnArray['SupplierName'] = $result[0]['SupplierName'];
            $returnArray['CostCurrency'] = $result[0]['CostCurrency'];
            $returnArray['CurrencySymbol'] = $result[0]['Symbol'];
            $returnArray['TotalCostNativeAdult'] = '';
            $returnArray['TotalCostNativeChild'] = '';
            $returnArray['AdultCost'] = '';
            $returnArray['ChildCost'] = '';
            $returnArray['AdultMarkup'] = '';
            $returnArray['ChildMarkup'] = '';
        }
        if (!empty($result) && $result[0]['InvnItemSysId'] != NULL) {
            $select1 = $this->db->select('TOP 1');
            $totalMember = (int) $adult + (int) $child;
            $select1->from(array('tb1' => "TB_MP_Inventory_SightSeeing_GrCost"), array("SaleAmtNativeAdult", "SaleAmtNativeChild", "TrxCurrency", "PaxCount", "AdultMarkup", "ChildMarkup", "TotalCostNativeAdult", "TotalCostNativeChild"));
            $select1->joinLeft(array('tb2' => "TB_Master_Currency"), "tb2.CurrencyType = tb1.TrxCurrency", array('Symbol'));
            $select1->where("tb1.InvnItemSysId = ?", $result[0]['InvnItemSysId']);
            $select1->where("tb1.Marketplace = ?", $marketPlace);
            $select1->where("tb1.PaxCount = ?", $totalMember);
            $select1->order("tb1.PaxCount DESC");
            $result1 = $this->db->fetchAll($select1);
//            if (empty($result1)) {
//                $select2 = $this->db->select('TOP 1');
//                $select2->from(array('tb1' => "TB_MP_Inventory_SightSeeing_GrCost"), array("SaleAmtNativeAdult", "SaleAmtNativeChild", "TrxCurrency", "PaxCount", "AdultMarkup", "ChildMarkup", "TotalCostNativeAdult", "TotalCostNativeChild"));
//                $select2->where("tb1.InvnItemSysId = ?", $result[0]['InvnItemSysId']);
//                $select2->where("tb1.Marketplace = ?", $marketPlace);
//                $select2->where("tb1.PaxCount >= ?", $totalMember);
//                $select2->order("tb1.PaxCount");
//                /*  echo $select2;
//                  exit; */
//                $result1 = $this->db->fetchAll($select2);
//            }
// echo "<pre>";print_r($result1);exit;
            if (!empty($result1)) {
                $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
                $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
                $returnArray['CityName'] = $result[0]['CityName'];
                $returnArray['CostCurrency'] = $result[0]['CostCurrency'];
                $returnArray['CurrencySymbol'] = $result[0]['Symbol'];
                $currencyExchangeRate = 1;
                if ($baseCurrency > 0 && $baseCurrency != $result[0]['CostCurrency']) {
                    $currencyExchangeRate = $this->currencyExchangeRate($result[0]['CostCurrency'], $baseCurrency, $agencySysId);
                    $returnArray['CostCurrency'] = $baseCurrency;
                }
                $returnArray['TotalCostNativeAdult'] = round((float) $currencyExchangeRate * ((float) $result1[0]['SaleAmtNativeAdult'] + (float) $result[0]['AdultEntryFee']));
                $returnArray['TotalCostNativeChild'] = round((float) $currencyExchangeRate * ((float) $result1[0]['SaleAmtNativeChild'] + (float) $result[0]['ChildEntryFee']));
                $returnArray['AdultCost'] = round((float) $currencyExchangeRate * ((float) $result1[0]['TotalCostNativeAdult'] + (float) $result[0]['AdultEntryFee']));
                $returnArray['ChildCost'] = round((float) $currencyExchangeRate * ((float) $result1[0]['TotalCostNativeChild'] + (float) $result[0]['ChildEntryFee']));
                $returnArray['AdultMarkup'] = round((float) $currencyExchangeRate * (float) $result1[0]['AdultMarkup']);
                $returnArray['ChildMarkup'] = round((float) $currencyExchangeRate * (float) $result1[0]['ChildMarkup']);
            }

            $objSightseeing = new Travel_Model_TblSightseeing();
            $getSightseeingVehicles = $objSightseeing->getSightseeingVehiclesIncluded($result[0]['InvnItemSysId']);
            if (!empty($getSightseeingVehicles)) {
                $returnArray['Vehicles'] = $getSightseeingVehicles;
            }
//            echo "<pre>";print_r($getSightseeingVehicles);die;
        }
        return $returnArray;
    }

    public function getSightseenPriceOnlyEntry($SSId, $agencySysId, $fromDate, $marketPlace, $baseCurrency, $adult, $child, $InvnItemSysId = NULL, $supplierId = 0) {
        $returnArray = array();
        $select1 = $this->db->select();
        $select1->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("0 AS sort_order"), "CitySysId"));
        $select1->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
        $select1->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1'", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
        $select1->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
        $select1->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
        $select1->where("tb1.SSSysId = ?", $SSId);
        $select1->where("tb3.IsMarkForDelete = ?", 0);
        if ($InvnItemSysId) {
            $select1->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
        }

        if ($supplierId > 0) {
            $select1->where("tb3.SupplierSysId = ?", $supplierId);
            $select2 = $this->db->select();
            $select2->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("1 AS sort_order"), "CitySysId"));
            $select2->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
            $select2->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1'", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
            $select2->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
            $select2->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
            $select2->where("tb1.SSSysId = ?", $SSId);
            $select2->where("tb3.IsMarkForDelete = ?", 0);
            if ($InvnItemSysId) {
                $select2->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
            }
            $select2->where("tb3.SupplierSysId != ?", $supplierId);
            $union = $this->db->select()->union(array($select1, $select2));
            $union->order("sort_order ASC");
            $union->order("tb3.InvnItemSysId DESC");
            $result = $this->db->fetchAll($union);
        } else {
            $select1->order("tb3.InvnItemSysId DESC");
            $result = $this->db->fetchAll($select1);
        }

        if (!empty($result)) {
            $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
            $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
            $returnArray['CityName'] = $result[0]['CityName'];
            $returnArray['SupplierSysId'] = $result[0]['SupplierSysId'];
            $returnArray['SupplierName'] = $result[0]['SupplierName'];
            $returnArray['CostCurrency'] = $result[0]['CostCurrency'];
            $returnArray['CurrencySymbol'] = $result[0]['Symbol'];
            $currencyExchangeRate = 1;
            if ($baseCurrency > 0 && $baseCurrency != $result[0]['CostCurrency']) {
                $currencyExchangeRate = $this->currencyExchangeRate($result[0]['CostCurrency'], $baseCurrency, $agencySysId);
                $returnArray['CostCurrency'] = $baseCurrency;
            }
            $returnArray['TotalCostNativeAdult'] = round((float) $currencyExchangeRate * ((float) $result[0]['AdultEntryFee']));
            $returnArray['TotalCostNativeChild'] = round((float) $currencyExchangeRate * ((float) $result[0]['ChildEntryFee']));
            $returnArray['AdultCost'] = round((float) $currencyExchangeRate * ((float) $result[0]['AdultEntryFee']));
            $returnArray['ChildCost'] = round((float) $currencyExchangeRate * ((float) $result[0]['ChildEntryFee']));
            $returnArray['AdultMarkup'] = 0;
            $returnArray['ChildMarkup'] = 0;
        }
        return $returnArray;
    }

    public function getSightseenDetailsWithPricing($SSId, $agencySysId, $fromDate, $marketPlace = 1, $baseCurrency = 0, $ssType = 1, $adult = 2, $child = 0, $InvnItemSysId = NULL, $supplierId = 0) {
        $objSightseeing = new Travel_Model_TblSightseeing();
        $returnArray = array();
        if ($ssType == 2) {
            $returnArray = $this->getSightseeingDetailsWithPricingPvt($SSId, $agencySysId, $fromDate, $marketPlace, $baseCurrency, $adult, $child, $InvnItemSysId, $supplierId);
        } else if ($ssType == 3) {
            $returnArray = $this->getSightseenPriceOnlyEntry($SSId, $agencySysId, $fromDate, $marketPlace, $baseCurrency, $adult, $child, $InvnItemSysId, $supplierId);
        } else {
            $select1 = $this->db->select();
            $select1->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("0 AS sort_order"), "CitySysId"));
            $select1->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
            $select1->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1' AND TotalCostNativeAdult > 0", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
            $select1->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
            $select1->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
            $select1->where("tb1.SSSysId = ?", $SSId);
            $select1->where("tb3.IsMarkForDelete = ?", 0);
            if ($InvnItemSysId) {
                $select1->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
            }
            if ($supplierId > 0) {
                $select1->where("tb3.SupplierSysId = ?", $supplierId);
                $select2 = $this->db->select();
                $select2->from(array('tb1' => "TB_IC_SightSeeing"), array(new Zend_Db_Expr("1 AS sort_order"), "CitySysId"));
                $select2->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CitySysId = tb2.CityId", array("Title as CityName", "ContSysId"));
                $select2->joinLeft(array('tb3' => "TB_MP_Inventory_SightSeeing"), "tb1.SSSysId = tb3.XRef AND FromDate <= '$fromDate' AND ToDate >= '$fromDate' AND AgencySysId = $agencySysId AND IsSaleStart = '1' AND TotalCostNativeAdult > 0", array('ChildEntryFee', 'AdultEntryFee', 'CostCurrency', 'InvnItemSysId', 'TotalCostNativeAdult', 'TotalCostNativeChild', 'TotalCostForeignerChild', 'TotalCostForeignerAdult', 'SupplierSysId'));
                $select2->joinLeft(array('tb4' => "TB_IC_Supplier"), "tb3.SupplierSysId = tb4.SupplierSysId", array('SupplierName'));
                $select2->joinLeft(array('tb5' => "TB_Master_Currency"), "tb5.CurrencyType = tb3.CostCurrency", array('Symbol'));
                $select2->where("tb1.SSSysId = ?", $SSId);
                $select2->where("tb3.IsMarkForDelete = ?", 0);
                if ($InvnItemSysId) {
                    $select2->where("tb3.InvnItemSysId = ?", $InvnItemSysId);
                }
                $select2->where("tb3.SupplierSysId != ?", $supplierId);
                $union = $this->db->select()->union(array($select1, $select2));
                $union->order("sort_order ASC");
                $union->order("tb3.InvnItemSysId DESC");
                $result = $this->db->fetchAll($union);
            } else {
                $select1->order("tb3.InvnItemSysId DESC");
                $result = $this->db->fetchAll($select1);
            }

//echo $select; exit;
//            echo "<pre>";print_r($result);die;
            if (!empty($result)) {
                $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
                $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
                $returnArray['CityName'] = $result[0]['CityName'];
                $returnArray['SupplierSysId'] = $result[0]['SupplierSysId'];
                $returnArray['SupplierName'] = $result[0]['SupplierName'];
                $returnArray['CostCurrency'] = $result[0]['CostCurrency'];
                $returnArray['CurrencySymbol'] = $result[0]['Symbol'];
                $returnArray['TotalCostNativeAdult'] = '';
                $returnArray['TotalCostNativeChild'] = '';
                $returnArray['AdultCost'] = '';
                $returnArray['ChildCost'] = '';
                $returnArray['AdultMarkup'] = '';
                $returnArray['ChildMarkup'] = '';
            }
            if (!empty($result) && $result[0]['InvnItemSysId'] != NULL) {
                $select1 = $this->db->select();
                $select1->from(array('tb1' => "TB_MP_Inventory_SightSeeing_Alloc"), array("NetPriceNativeAdult", "NetPriceNativeChild", "MarkUpNativeAdult", "MarkUpNativeChild"));
                $select1->joinLeft(array('tb2' => "TB_Master_Currency"), "tb2.CurrencyType = tb1.Currency", array('Symbol'));
                $select1->where("tb1.InvnItemSysId = ?", $result[0]['InvnItemSysId']);
                $select1->where("tb1.MPType = ?", $marketPlace);
                $select1->where("tb1.IsMarkForDel = ?", 0);
                $result1 = $this->db->fetchAll($select1);
                if (!empty($result1)) {
                    $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
                    $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
                    $returnArray['CityName'] = $result[0]['CityName'];
                    $returnArray['CostCurrency'] = $result[0]['CostCurrency'];
                    $returnArray['CurrencySymbol'] = $result[0]['Symbol'];
                    $currencyExchangeRate = 1;
                    if ($baseCurrency > 0 && $baseCurrency != $result[0]['CostCurrency']) {
                        $currencyExchangeRate = $this->currencyExchangeRate($result[0]['CostCurrency'], $baseCurrency, $agencySysId);
                        $returnArray['CostCurrency'] = $baseCurrency;
                    }
                    $returnArray['TotalCostNativeAdult'] = round((float) $currencyExchangeRate * ((float) $result1[0]['NetPriceNativeAdult'] + (float) $result[0]['AdultEntryFee']));
                    $returnArray['TotalCostNativeChild'] = round((float) $currencyExchangeRate * ((float) $result1[0]['NetPriceNativeChild'] + (float) $result[0]['ChildEntryFee']));
                    $returnArray['AdultCost'] = round((float) $currencyExchangeRate * ((float) $result[0]['TotalCostNativeAdult'] + (float) $result[0]['AdultEntryFee']));
                    $returnArray['ChildCost'] = round((float) $currencyExchangeRate * ((float) $result[0]['TotalCostNativeChild'] + (float) $result[0]['ChildEntryFee']));
                    $returnArray['AdultMarkup'] = round((float) $currencyExchangeRate * (float) $result1[0]['MarkUpNativeAdult']);
                    $returnArray['ChildMarkup'] = round((float) $currencyExchangeRate * (float) $result1[0]['MarkUpNativeChild']);
                } else {
                    $select2 = $this->db->select();
                    $select2->from(array('tb1' => "TB_MP_StdMarkup_Activity"), array('MarkUpType', 'MarkUpNativeAdult', 'MarkUpNativeChild'));
                    $select2->where("tb1.AgencySysId = ?", $agencySysId);
                    $select2->where("tb1.MPType = ?", $marketPlace);
                    $result2 = $this->db->fetchAll($select2);
                    if (!empty($result2)) {
                        if ($result2[0]['MarkUpType'] == 1) {
                            $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
                            $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
                            $returnArray['CityName'] = $result[0]['CityName'];
                            if ($baseCurrency == $result[0]['CostCurrency']) {
                                $returnArray['TotalCostNativeAdult'] = round((float) $result2[0]['MarkUpNativeAdult'] + (float) $result[0]['TotalCostNativeAdult']);
                                $returnArray['TotalCostNativeChild'] = round((float) $result2[0]['MarkUpNativeChild'] + (float) $result[0]['TotalCostNativeChild']);
                                $returnArray['AdultCost'] = round((float) $result[0]['TotalCostNativeAdult']);
                                $returnArray['ChildCost'] = round((float) $result[0]['TotalCostNativeChild']);
                                $returnArray['AdultMarkup'] = round((float) $result2[0]['MarkUpNativeAdult']);
                                $returnArray['ChildMarkup'] = round((float) $result2[0]['MarkUpNativeChild']);
                            } else {
                                $currencyExchangeRate = $this->currencyExchangeRate($result[0]['CostCurrency'], $baseCurrency, $agencySysId);
                                $returnArray['TotalCostNativeAdult'] = round((float) $result2[0]['MarkUpNativeAdult'] + ((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate));
                                $returnArray['TotalCostNativeChild'] = round((float) $result2[0]['MarkUpNativeChild'] + ((float) $result[0]['TotalCostNativeChild'] * (float) $currencyExchangeRate));
                                $returnArray['AdultCost'] = round(((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate));
                                $returnArray['ChildCost'] = round(((float) $result[0]['TotalCostNativeChild'] * (float) $currencyExchangeRate));
                                $returnArray['AdultMarkup'] = round((float) $result2[0]['MarkUpNativeAdult']);
                                $returnArray['ChildMarkup'] = round((float) $result2[0]['MarkUpNativeChild']);
                            }
                        } else if ($result2[0]['MarkUpType'] == 2) {
                            $returnArray['ContSysId'] = (int) $result[0]['ContSysId'];
                            $returnArray['CitySysId'] = (int) $result[0]['CitySysId'];
                            $returnArray['CityName'] = $result[0]['CityName'];
                            if ($baseCurrency == $result[0]['CostCurrency']) {
                                $returnArray['TotalCostNativeAdult'] = round((((float) $result2[0]['MarkUpNativeAdult'] * (float) $result[0]['TotalCostNativeAdult']) / 100) + (float) $result[0]['TotalCostNativeAdult']);
                                $returnArray['TotalCostNativeChild'] = round((((float) $result2[0]['MarkUpNativeChild'] * (float) $result[0]['TotalCostNativeChild']) / 100) + (float) $result[0]['TotalCostNativeChild']);
                                $returnArray['AdultCost'] = round((float) $result[0]['TotalCostNativeAdult']);
                                $returnArray['ChildCost'] = round((float) $result[0]['TotalCostNativeChild']);
                                $returnArray['AdultMarkup'] = round(((float) $result2[0]['MarkUpNativeAdult'] * (float) $result[0]['TotalCostNativeAdult']) / 100);
                                $returnArray['ChildMarkup'] = round(((float) $result2[0]['MarkUpNativeChild'] * (float) $result[0]['TotalCostNativeChild']) / 100);
                            } else {
                                $currencyExchangeRate = $this->currencyExchangeRate($result[0]['CostCurrency'], $baseCurrency, $agencySysId);
                                $returnArray['TotalCostNativeAdult'] = round((((float) $result2[0]['MarkUpNativeAdult'] * ((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate)) / 100) + ((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate));
                                $returnArray['TotalCostNativeChild'] = round((((float) $result2[0]['MarkUpNativeChild'] * ((float) $result[0]['TotalCostNativeChild'] * (float) $currencyExchangeRate)) / 100) + ((float) $result[0]['TotalCostNativeChild'] * (float) $currencyExchangeRate));
                                $returnArray['AdultCost'] = round((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate);
                                $returnArray['ChildCost'] = round((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate);
                                $returnArray['AdultMarkup'] = round(((float) $result2[0]['MarkUpNativeAdult'] * ((float) $result[0]['TotalCostNativeAdult'] * (float) $currencyExchangeRate)) / 100);
                                $returnArray['ChildMarkup'] = round(((float) $result2[0]['MarkUpNativeChild'] * ((float) $result[0]['TotalCostNativeChild'] * (float) $currencyExchangeRate)) / 100);
                            }
                        }
                    }
                }
            }
        }
        return $returnArray;
    }

    public function getCampaignNameAutoSearchList($strCampaignName, $agencyId, $strtype = NULL) {
        $sql = "Select * From TB_Agency_Campaign_Master where 1 = 1 ";

        if (!empty($strCampaignName)) {
            $sql .= " AND (CampaignName LIKE '%$strCampaignName%') ";
        }

        if (!empty($agencyId)) {
            $sql .= " AND AgencySysId= '" . $agencyId . "' ";
        }
        $sql .= " AND IsActive = 1 AND IsMarkForDel = 0";

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

        if (count($rowset) > 0) {
            foreach ($rowset as $row) {
                $dataName = $row['CampaignName'];
                $response[] = array('CampSysId' => $row['CampSysId'], 'value' => $dataName, 'label' => $dataName);
            }
        } else {
            if (empty($strtype)) {
                $response[] = array('CampSysId' => 0, 'value' => '', 'label' => 'Add New Campaign Name');
            }
        }

        return $response;
    }

    public function getCampaignNameIdDataById($CampSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Campaign_Master"), array('CampSysId'));
        $select->where("tb1.CampSysId = ?", $CampSysId);
//echo $select;die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function gettemplateNameById($leadpageId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_GTX_Lead_Page"), array('TemplatePageName'));
        $select->where("tb1.GtxLeadSysId = ?", $leadpageId);
//echo $select;die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getAgencgWebsite($AgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_WebSite_Mapping"), array('WebSysId', 'URL', 'IsSSL'));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
//echo $select; exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getAgencgWebsiteCount($AgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_WebSite_Mapping"), array('count(WebSysId) as TotalWebSysId'));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
//echo $select; exit;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getAgencgWebsiteSelected($AgencySysId, $WebSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_WebSite_Mapping"), array('WebSysId', 'URL', 'IsSSL'));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.WebSysId IN (?)", $WebSysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getAgencgWebsiteNotSelected($AgencySysId, $WebSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_WebSite_Mapping"), array('WebSysId', 'URL', 'IsSSL'));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        if (!empty($WebSysId)) {
            $select->where("tb1.WebSysId NOT IN (?)", $WebSysId);
        }
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
// echo $select; exit; 
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getoptionalHotelDataByTpSysId($AgencySysId, $TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Itenary_Extended_Accom"));
        $select->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.CityId = tb2.CityId", array("Title as CityName", "ContSysId"));
        $select->joinLeft(array('tb3' => "TB_IC_Accomdation"), "tb1.AccoSysId = tb3.AccomSysId", array("Title as HotelName"));
        $select->joinLeft(array('tb4' => "TB_Master_RoomType"), "tb1.RoomType = tb4.RoomType", array("Title as RoomTypeName"));
        $select->joinLeft(array('tb5' => "TB_Master_Accom_MealType"), "tb1.MealPlanType = tb5.MealTypeId", array("Title as MealTypeName"));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.TPSysId = ?", $TPSysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
        $select->order("tb1.ExtendedAccomSysId ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function UpdateOptionalSigtseeingData($versionID, $txt) {
        $updatewhere = array('VersionId = ? ' => $versionID);
        if ($txt == "Include") {
            $updateData = array('Type' => 'Included');
        }
        if ($txt == "Exclude") {
            $updateData = array('Type' => 'Optional');
        }

        $updatequery = $this->db->update('TB_Agency_Customer_TravelPlan_SightSeeing', $updateData, $updatewhere);
        return $updatequery;
    }

    public function getTravelPlanAddonServices($AgencySysId, $TPSysId = '', $PlanType = '', $multiTPSysId = array(), $IsActive = 1) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_TravelPlan_AddonServices"));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        if (!empty($TPSysId)) {
            $select->where("tb1.TPSysId = ?", $TPSysId);
        }
        if ($PlanType != '') {
            $select->where("tb1.PlanType = ?", $PlanType);
        }
        if (is_array($multiTPSysId) && !empty($multiTPSysId)) {
            $multiTPSysIdStr = implode(',', $multiTPSysId);
            $select->where("tb1.TPSysId IN ($multiTPSysIdStr)");
        }
        $select->where("tb1.IsActive = ?", $IsActive);

        $select->where("tb1.IsMarkForDelete = ?", 0);
//echo $select;die;
        $select->order("tb1.TPSysId ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getTravelPlanAddonServicesMultipleIds($AgencySysId, $TPSysId = 0, $PlanTypeArr = array(), $multiTPSysId = array(), $IsActive = '') {
        if (!empty($multiTPSysId) || !empty($TPSysId)) {
            $select = $this->db->select();
            $select->from(array('tb1' => "TB_Agency_Customer_TravelPlan_AddonServices"));
            $select->joinLeft(array('tb2' => "TB_Master_Currency"), "tb1.CurrencyType = tb2.CurrencyType", array("Symbol as CurrencySymbol"));
            $select->joinLeft(array('tb3' => "TB_IC_Supplier"), "tb1.SupplierSysId = tb3.SupplierSysId", array('SupplierName'));
            $select->where("tb1.AgencySysId = ?", $AgencySysId);
            if (!empty($TPSysId)) {
                $select->where("tb1.TPSysId = ?", $TPSysId);
            }
            if (!empty($PlanTypeArr)) {
                $PlanType = implode(',', $PlanTypeArr);
                $select->where("tb1.PlanType IN ($PlanType)");
            }
            if (is_array($multiTPSysId) && !empty($multiTPSysId)) {
                $multiTPSysIdStr = implode(',', $multiTPSysId);
                $select->where("tb1.TPSysId IN ($multiTPSysIdStr)");
            }
            if ($IsActive != '') {
                $select->where("tb1.IsActive = ?", $IsActive);
            }
            $select->where("tb1.IsMarkForDelete = ?", 0);
//echo $select;die;
            $select->order("tb1.TPSysId ASC");
            $result = $this->db->fetchAll($select);
            return $result;
        } else {
            return array();
        }
    }

    public function deleteTravelPlanAddonServices($table, $where) {
        $dbtable = new Zend_Db_Table("$table");
        return $dbtable->delete($where);
    }

    public function getCountryIDByCityIds($intIds) {
        $sql = " SELECT DISTINCT ContSysId  FROM TB_Master_Geo_City WHERE CityId IN(" . $intIds . ") ";
        $rowset = $this->db->query($sql)->fetchAll();
        return $rowset;
    }

    public function checkPackageInNetworkWeb($AgencySysId, $TPSysId, $ToAgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Mapping_Network_Web"), array('IsWeb'));
        $select->where("tb1.ToAgencySysId = ?", $ToAgencySysId);
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.TPSysId = ?", $TPSysId);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function updateNetworkWeb($AgencySysId, $TPSysId, $ToAgencySysId, $isWeb) {
        try {
            $checkInNetwork = $this->checkPackageInNetworkWeb($AgencySysId, $TPSysId, $ToAgencySysId);
            if (!empty($checkInNetwork)) {
                $updateWhere = array("ToAgencySysId = ?" => $ToAgencySysId, "AgencySysId = ?" => $AgencySysId, "TPSysId = ?" => $TPSysId);
                if (isset($checkInNetwork[0]['IsWeb']) && $checkInNetwork[0]['IsWeb'] == 0 && $isWeb == 1) {
                    $updateValue = array(
                        'IsWeb' => 1,
                        'UpdateDate' => date("Y-m-d h:i:s")
                    );
                } else {
                    $updateValue = array(
                        'IsWeb' => 0,
                        'UpdateDate' => date("Y-m-d h:i:s")
                    );
                }
                $this->updateData("TB_TravelPlan_Mapping_Network_Web", $updateValue, $updateWhere);
            } else {
                $insertData = array(
                    "ToAgencySysId" => $ToAgencySysId,
                    "AgencySysId" => $AgencySysId,
                    "TPSysId" => $TPSysId,
                    'IsWeb' => 1,
                    'IsActive' => 1,
                    'IsMarkForDel' => 0,
                    'CreateDate' => date("Y-m-d h:i:s"),
                    'UpdateDate' => date("Y-m-d h:i:s")
                );
                $this->insertData("TB_TravelPlan_Mapping_Network_Web", $insertData);
            }
            $returnArray = array(
                "Status" => true,
                "Message" => ""
            );
        } catch (Zend_Exception $e) {
            $returnArray = array(
                "Status" => true,
                "Message" => $e->getMessage()
            );
        }
    }

    public function getMasterRoadType() {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Master_RoadType"), array('RoadType', 'Title'));
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCustPackageItenTransportList($id, $sequence = NULL) {
        $cond = (!empty($sequence)) ? " AND Sequence = '$sequence' " : '';
        $sqlFlexiPackageIten = "SELECT a.* FROM TB_Agency_Customer_TravelPlan_Itenary_Transport as a WHERE  a.IsMarkForDel = 0 AND a.IsActive = 1 $cond AND a.TPSysId = '" . @$id . "'  ORDER BY a.Sequence ASC";
        $resultFlexiPackageIten = $this->db->query($sqlFlexiPackageIten)->fetchAll();
        return $resultFlexiPackageIten;
    }

    public function TBTravelPlanItenaryFixedInventoryAirline($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_TravelPlan_Itenary_FixedInventory_Airline WHERE FixedInvnSysId = '" . @$id . "' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function TBTravelPlanItenaryFixedInventoryAirlineComman($id) {
        $sqlFlexiPackage = "SELECT * FROM TB_TravelPlan_Itinerary_FixedInventory_Common_Flight WHERE FixedInvnSysId = '" . @$id . "' ";
        $resultFlexiPackage = $this->db->query($sqlFlexiPackage)->fetchAll();
        return $resultFlexiPackage;
    }

    public function getCancellationProtectionPrice($AgencySysId) {
        $returnVal = 0;
        $this->paymentMdl = new Payment_Model_Payment();
        $wallet = $this->paymentMdl->getDetailsByUniqueId("TB_Agency_Wallet", "AgencySysId", $AgencySysId);
        if (isset($wallet['BalanceAmount']) && (float) $wallet['BalanceAmount'] > 0) {
            $select = $this->db->select();
            $select->from(array("t1" => "TB_Agency_Cancellation_Protection"), array("IsCancellationProtection", "IsDepositBalance", "TaxValue AS AgencyTaxValue"));
            $select->joinLeft(array('t2' => "TB_Master_CancellationProtection_Rate"), "t1.CPSysId = t2.Id", array("TaxValue"));
            $select->joinLeft(array('t3' => "TB_Master_CancellationProtection_GTXRate"), "t1.GTXCPSysId = t3.Id", array("TaxValue as GTXTaxValue"));
            $select->where("t1.AgencySysId =?", $AgencySysId);
            $select->where("t1.IsMarkForDel =?", 0);
            $select->where("t1.IsActive =?", 1);
            $result = $this->db->fetchRow($select);
            if ((isset($result['IsCancellationProtection']) && (int) $result['IsCancellationProtection'] == 1) && (isset($result['IsDepositBalance']) && (int) $result['IsDepositBalance'] == 1)) {
                $returnVal = (int) $result['TaxValue'] + (int) $result['GTXTaxValue'] + (int) $result['AgencyTaxValue'];
            }
        }
        return $returnVal;
    }

    public function getCancellationProtectionPriceWithGST($PackagePrice, $CPchange) {
        $ProtectAmount = $finalProtectAmount = 0;
        if ((float) $PackagePrice > 0 && (float) $CPchange > 0) {
            $ProtectAmount = (((float) $PackagePrice * (float) $CPchange) / 100);
            $finalProtectAmount = ($ProtectAmount + (($ProtectAmount * 18) / 100));
        }
        return round($finalProtectAmount);
    }

    public function getCancellationProtectionPriceORGST($PackagePrice, $CPchange) {
        $ProtectAmount = $finalProtectGST = 0;
        if ((float) $PackagePrice > 0 && (float) $CPchange > 0) {
            $ProtectAmount = (((float) $PackagePrice * (float) $CPchange) / 100);
            $finalProtectGST = (($ProtectAmount * 18) / 100);
        }
        return array("PrtectAmount" => $ProtectAmount, "GSTAmount" => $finalProtectGST);
    }

    public function getPackagePriceTP($TPSysId, $AgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_TravelPlan"), array('NetPrice', "StartDate", "CurrencyType", "TotalCostGen"));
        $select->where("tb1.TPSysId = ?", $TPSysId);
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getCancelletionProtectionData($AgencySysId, $searchArr = array()) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_CP_Trx"));
        $select->join(array('tb2' => "TB_Agency_Customer_TravelPlan"), "tb1.TPSysId = tb2.TPSysId AND IsCancellationProtection = 1", array("XServiceTaxAmount", "DestinationPlaces", "StartDate", "NetPrice", "RoomInfoJson", "Price", "AgencyMarkUp"));
        $select->join(array('tb3' => "TB_Agency_Customer"), "tb1.CustomerSysId = tb3.CustomerSysId", array("FirstName", "Title", "EmailId", "LastName", "countrycode", "Contacts", "UserName"));
        $select->joinLeft(array('tb4' => "TB_Trx"), "tb4.TrxSysId = tb1.TrxId", array('TrxDate', 'TrxStatus'));
        $select->where('tb1.AgencySysId = ?', $AgencySysId);

        if (isset($searchArr['cust_name']) && !empty($searchArr['cust_name'])) {
//$select->where("tb3.FirstName LIKE '%" . trim($searchArr['cust_name']) . "%' OR tb3.UserName LIKE '%" . trim($searchArr['cust_name'])."%'");
            $select->where('tb3.FirstName LIKE ?', '%' . trim($searchArr['cust_name']) . '%');
        }
        if (isset($searchArr['cust_mobile']) && !empty($searchArr['cust_mobile'])) {
            $select->where('tb3.Contacts = ?', trim($searchArr['cust_mobile']));
        }
        if (isset($searchArr['Spfeestatus']) && !empty($searchArr['Spfeestatus'])) {
            $select->where('tb1.Spfeestatus = ?', trim($searchArr['Spfeestatus']));
        }
        if (isset($searchArr['Gtxpaymentstatus']) && !empty($searchArr['Gtxpaymentstatus'])) {
            $select->where('tb1.Gtxpaymentstatus = ?', trim($searchArr['Gtxpaymentstatus']));
        }
//echo $select;die;
        $select->order("tb1.CPSysId DESC");
        $result = $this->db->fetchAll($select);
// echo "<pre>";print_r($result);die;
        return $result;
    }

    public function getCancelletionProtectionAllData($searchArr = array()) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_CP_Trx"));
        $select->join(array('tb2' => "TB_Agency_Customer_TravelPlan"), "tb1.TPSysId = tb2.TPSysId", array("XServiceTaxAmount", "DestinationPlaces", "StartDate", "NetPrice", "RoomInfoJson", "Price", "AgencyMarkUp"));
        $select->join(array('tb3' => "TB_Agency_Customer"), "tb1.CustomerSysId = tb3.CustomerSysId", array("FirstName", "Title", "EmailId", "LastName", "countrycode", "Contacts"));
        $select->joinLeft(array('tb4' => "TB_Trx"), "tb4.TrxSysId = tb1.TrxId", array('TrxDate', 'TrxStatus'));
        $select->joinLeft(array('tb5' => "TB_Agency"), "tb5.AgencySysId = tb1.AgencySysId", array('DisplayName'));
// $select->where('tb1.AgencySysId = ?', $AgencySysId);
        if (isset($searchArr['cust_name']) && !empty($searchArr['cust_name'])) {
            $select->where('tb3.FirstName LIKE ?', '%' . trim($searchArr['cust_name']) . '%');
        }
        if (isset($searchArr['cust_mobile']) && !empty($searchArr['cust_mobile'])) {
            $select->where('tb3.Contacts = ?', trim($searchArr['cust_mobile']));
        }
        $select->order("tb1.CPSysId DESC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getDataForCPAPI($TrxId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Agency_Customer_CP_Trx"));
        $select->join(array('tb3' => "TB_Agency_Customer"), "tb1.CustomerSysId = tb3.CustomerSysId", array("FirstName", "Title", "EmailId", "LastName", "countrycode", "Contacts"));
        $select->join(array('tb4' => "TB_Agency_Customer_TravelPlan"), "tb1.TPSysId = tb4.TPSysId", array("StartDate"));
        $select->where('tb1.CPSysId = ?', $TrxId);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function saveAddonServicesData($data = array()) {
        $status = false;
        $msg = '';
        if (!empty($data)) {
            $AgencySysId = (isset($data['AgencySysId'])) ? $data['AgencySysId'] : 0;
            $TPSysId = (isset($data['TPSysId'])) ? $data['TPSysId'] : 0;
            $CustomerSysId = (isset($data['CustomerSysId'])) ? $data['CustomerSysId'] : 0;
            $PlanType = (isset($data['PlanType'])) ? $data['PlanType'] : 0;
            $displayTCS = (isset($data['displayTCS'])) ? (int) $data['displayTCS'] : 0;
            $ConversionRate = (isset($data['ConversionRate'])) ? (float) $data['ConversionRate'] : 1;
            $ConversionRateBase = (isset($data['ConversionRateBase'])) ? (float) $data['ConversionRateBase'] : 1;
            if (!empty($AgencySysId) && !empty($TPSysId)) {
                $saveTcsDataArray = [
                    'ConversionRateBase' => $ConversionRateBase,
                    'ConversionRate' => $ConversionRate,
                    'AgencySysId' => (int) $AgencySysId,
                    'TPSysId' => (int) $TPSysId,
                    'CustomerSysId' => (int) $CustomerSysId,
                    'SupplierSysId' => (isset($data['SupplierSysId'])) ? $data['SupplierSysId'] : 0,
                    'PlanType' => $PlanType,
                    'InvnSysId' => (isset($data['InvnSysId'])) ? (int) $data['InvnSysId'] : 0,
                    'ServiceTitle' => (isset($data['ServiceTitle'])) ? $data['ServiceTitle'] : '',
                    'Comment' => (isset($data['Comment'])) ? $data['Comment'] : '',
                    'AdultCount' => (isset($data['AdultCount'])) ? $data['AdultCount'] : 0,
                    'ChildCount' => (isset($data['ChildCount'])) ? $data['ChildCount'] : 0,
                    'InfentCount' => (isset($data['InfentCount'])) ? $data['InfentCount'] : 0,
                    'CurrencyType' => (isset($data['CurrencyType'])) ? $data['CurrencyType'] : 0,
                    'GSTTYPE' => (isset($data['GSTTYPE'])) ? $data['GSTTYPE'] : 0,
                    'Tax' => (isset($data['Tax'])) ? $data['Tax'] : 0,
                    'AdultCost' => (isset($data['AdultCost'])) ? $data['AdultCost'] : 0,
                    'ChildCost' => (isset($data['ChildCost'])) ? $data['ChildCost'] : 0,
                    'InfantCost' => (isset($data['InfantCost'])) ? $data['InfantCost'] : 0,
                    'Markup' => (isset($data['Markup'])) ? $data['Markup'] : 0,
                    'Cost' => (isset($data['Cost'])) ? $data['Cost'] : 0,
                    'TotalCost' => (isset($data['TotalCost'])) ? $data['TotalCost'] : 0,
                    'IsActive' => (isset($data['IsActive'])) ? (int) $data['IsActive'] : 0,
                    'IsApplyTax' => (isset($data['IsApplyTax'])) ? (int) $data['IsApplyTax'] : 0,
                    'IsMarkForDelete' => 0,
                    'CreateDate' => (isset($data['fromdate'])) ? $data['fromdate'] : date('Y-m-d'),
                    'UpdateDate' => (isset($data['todate'])) ? $data['todate'] : date('Y-m-d'),
                    'displayTCS' => $displayTCS,
                    'Discount' => (isset($data['Discount'])) ? $data['Discount'] : 0,
                    'ExtraMarkUp' => (isset($data['ExtraMarkUp'])) ? $data['ExtraMarkUp'] : 0,
                    'SCurrencyType' => (isset($data['SCurrencyType'])) ? $data['SCurrencyType'] : 0,
                    'ShareCombined' => (isset($data['ShareCombined'])) ? $data['ShareCombined'] : 0,
                    'STotalCost' => (isset($data['STotalCost'])) ? $data['STotalCost'] : 0,
                    'ShareWithComponent' => (isset($data['ShareWithComponent'])) ? (int)$data['ShareWithComponent'] : 0,
                ];
                if (isset($data['IsTotalCostInPackage']) && !empty($data['IsTotalCostInPackage'])) {
                    $saveTcsDataArray['IsTotalCostInPackage'] = $data['IsTotalCostInPackage'];
                }
                try {
                    $adid = $this->insertData('TB_Agency_Customer_TravelPlan_AddonServices', $saveTcsDataArray);
                    $status = true;
                    $msg = 'Success';
                } catch (Exception $error) {
                    $status = false;
                    $msg = 'Fail';
                }
            }
        }

        return $response = array('status' => $status, 'msg' => $msg, 'id' => (int) $adid);
    }

    public function savePromotionsData($data = array()) {
        $status = false;
        $msg = '';
        if (!empty($data)) {
            $AgencySysId = (isset($data['AgencySysId'])) ? $data['AgencySysId'] : 0;
            $TPSysId = (isset($data['TPSysId'])) ? $data['TPSysId'] : 0;
            $CustomerSysId = (isset($data['CustomerSysId'])) ? $data['CustomerSysId'] : 0;
            $PlanType = (isset($data['PlanType'])) ? $data['PlanType'] : 0;
            if (!empty($AgencySysId) && !empty($TPSysId)) {
                $saveTcsDataArray = [
                    'AgencySysId' => (int) $AgencySysId,
                    'TPSysId' => (int) $TPSysId,
                    'CustomerSysId' => (int) $CustomerSysId,
                    'PlanType' => $PlanType,
                    'InvnSysId' => (isset($data['InvnSysId'])) ? (int) $data['InvnSysId'] : 0,
                    'PromotionSysId' => (isset($data['PromotionSysId'])) ? (int) $data['PromotionSysId'] : 0,
                    'PromotionTitle' => (isset($data['PromotionTitle'])) ? $data['PromotionTitle'] : '',
                    'PromotionCode' => (isset($data['PromotionCode'])) ? $data['PromotionCode'] : '',
                    'Comment' => (isset($data['Comment'])) ? $data['Comment'] : '',
                    'PromotionType' => (isset($data['PromotionType'])) ? (int) $data['PromotionType'] : 0,
                    'PromotionValue' => (isset($data['PromotionValue'])) ? (float) $data['PromotionValue'] : 0,
                    'CreateDate' => (isset($data['CreateDate'])) ? $data['CreateDate'] : date('Y-m-d'),
                    'UpdateDate' => (isset($data['UpdateDate'])) ? $data['UpdateDate'] : date('Y-m-d'),
                    'IsActive' => (isset($data['IsActive'])) ? (int) $data['IsActive'] : 0,
                    'IsMarkForDelete' => 0,
                ];

                try {
                    $adid = $this->insertData('TB_Agency_Customer_TravelPlan_Promotions', $saveTcsDataArray);
                    $status = true;
                    $msg = 'Success';
                } catch (Exception $error) {
                    $status = false;
                    $msg = 'Fail';
                }
            }
        }

        return $response = array('status' => $status, 'msg' => $msg, 'id' => (int) $adid);
    }

    public function checkFromDestinationFixedInventory($TPSysId, $desId = 0) {
        $select = $this->db->select();
        $select->from(array('tb1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), array('TPSysId', 'id'));
        $select->where('tb1.TPSysId = ?', $TPSysId);
        if (!empty($desId)) {
            $select->where('tb1.DestinationSysId = ?', $desId);
        }
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getFromDestinationFixedInventoryData($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), array('DestinationSysId', 'TPSysId', 'id'));
        $select->joinLeft(array('tb2' => "TB_Master_Geo_City"), "tb1.DestinationSysId = tb2.CityId", array('Title as CityTitle'));
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->order("tb1.id ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFromDestinationFixedInventoryWithAirline($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), array('DestinationSysId', 'TPSysId', 'id'));
        $select->joinLeft(array('tb2' => "TB_TravelPlan_Itenary_FixedInventory_Airline"), "tb1.id = tb2.FixedInvnSysId AND tb2.IsMarkForDel = '0' AND Fromdate IS NULL", array('*'));
        $select->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tb1.DestinationSysId = tb3.CityId", array('Title as CityTitle'));
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->order("tb1.id ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getItineraryFixedFlightInventoryByo($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Itinerary_FixedInventory"), array('*'));
        $select->where('tb1.TPSysId =?', $TPSysId);
        $select->where('tb1.IsMarkForDel = ?', '0');
        $select->order("tb1.FromDate ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getItineraryFixedFlightInventoryBus($TPSysId) {
        $subSelect = $this->db->select()
                        ->from(
                                array('bs' => 'TB_TravelPlan_Bus_Seats'),
                                array(
                                    'TPSysId',
                                    'InventoryDate',
                                    'HoldInventory' => 'SUM(CASE WHEN bs.Status = 1 THEN 1 ELSE 0 END)',
                                    'SoldInventory' => 'SUM(CASE WHEN bs.Status = 2 THEN 1 ELSE 0 END)',
                                    'TempHoldCount' => 'SUM(CASE WHEN bs.Status = 3 THEN 1 ELSE 0 END)',
                                )
                        )->where('bs.IsMarkForDelete = ?', '0')->where('bs.IsActive = ?', '1')->group(array('bs.TPSysId', 'bs.InventoryDate'));

        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Itinerary_FixedInventory"), array('*'));
        $select->joinLeft(
                array('agg' => $subSelect),
                'tb1.TPSysId = agg.TPSysId AND tb1.FromDate = agg.InventoryDate',
                array(
                    'HoldInventory' => new Zend_Db_Expr("ISNULL(agg.HoldInventory, 0)"),
                    'SoldInventory' => new Zend_Db_Expr("ISNULL(agg.SoldInventory, 0)"),
                    'TempHoldCount' => new Zend_Db_Expr("ISNULL(agg.TempHoldCount, 0)"),
                    'CurrentInventory' => new Zend_Db_Expr("tb1.FixedInventory - ISNULL(agg.HoldInventory, 0) - ISNULL(agg.SoldInventory, 0) - ISNULL(agg.TempHoldCount, 0)")
                )
        );
        $select->where('tb1.TPSysId =?', $TPSysId);
        $select->where('tb1.IsMarkForDel = ?', '0');
        $select->order("tb1.FromDate ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFromDestinationFixedInventoryByDateAndDestination($TPSysId, $FromDate, $DestinationSysId, $IsCommon = 0) {

        $select = $this->db->select();
        $select->from(array('tb' => "Tb_TravelPlan"), array('TPSysId', 'IsFixedDeparturePackage'));
        $select->joinLeft(array('tb1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), "tb.TPSysId = tb1.TPSysId", array('DestinationSysId', 'id'));
        $select->joinLeft(array('tb2' => "TB_TravelPlan_Itinerary_FixedInventory"), "tb1.id = tb2.FixedInvnSysId", array('AdultCost', 'InfantCost', 'MarkupType', 'B2BAdultMarkup', 'B2BInfantMarkup', 'B2CAdultMarkup', 'B2CInfantMarkup', 'CurrencySysId', 'CONVERT(date,tb2.FromDate) AS FromDate', 'CONVERT(date,tb2.ToDate) AS ToDate', 'CurrentInventory', 'FixedInventory', 'HoldInventory', 'SoldInventory'));
        $select->joinLeft(array('tb3' => "TB_Master_Geo_City"), "tb1.DestinationSysId = tb3.CityId", array('Title as CityTitle'));
        $select->joinLeft(array('tb4' => "TB_Master_Currency"), "tb2.CurrencySysId = tb4.CurrencyType", array('Symbol'));
        $select->where('tb.TPSysId = ?', $TPSysId);
        $select->where('tb.IsFixedDeparturePackage = ?', 1);
        if ($IsCommon == 1) {
            $select->where('? BETWEEN CONVERT(date,tb2.FromDate) AND CONVERT(date,tb2.ToDate)', $FromDate);
        } else {
            $select->where('tb2.FromDate = ?', $FromDate);
        }


        $select->where('tb1.DestinationSysId = ?', $DestinationSysId);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->order("tb1.id ASC");
//        echo $select;die('ssss');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getFromDestinationFixedInventoryAirlineDateAndDestination($TPSysId, $FixedInvnSysId) {

        $select = $this->db->select();
        $select->from(array('tb1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), array('DestinationSysId', 'TPSysId', 'id'));
        $select->joinLeft(array('tb2' => "TB_TravelPlan_Itenary_FixedInventory_Airline"), "tb1.id = tb2.FixedInvnSysId", array('InvnAirlineSysId', 'FlightType', 'AirlineName', 'AirlineCode', 'DepartureAirportCode', 'DepartureAirportName', 'CONVERT(Time,tb2.DepartureTime) AS DepartureTime', 'FromTerminal', 'ArrivalAirportName', 'ArrivalAirportCode', 'CONVERT(Time,tb2.ArrivalTime) AS ArrivalTime', 'ToTerminal', 'EstimateHours'));
        $select->joinLeft(array('tb3' => "TB_Master_Airport"), "tb2.DepartureAirportCode = tb3.AirportCode", array('CityId AS SourcePlaceSysId'));
        $select->joinLeft(array('tb4' => "TB_Master_Airport"), "tb2.ArrivalAirportCode = tb4.AirportCode", array('CityId AS DestPlaceSysId'));

        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.id = ?', $FixedInvnSysId);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->where('tb2.IsMarkForDel = ?', 0);
        $select->order("tb1.id ASC");
//        echo $select;die('ssss');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function checkMasterDyanamicPackage($TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan"), array('PackSpecType'));
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $result = $this->db->fetchRow($select);
        $returnArray = array();
        $returnArray['MasterPackage'] = isset($result['PackSpecType']) ? $result['PackSpecType'] : NULL;
        return $returnArray;
    }

    public function getInventoryCount($fromDate, $TPSysId, $departureCity = '') {
        $select = $this->db->select();
        $select->from(array('T1' => "Tb_TravelPlan_From_Destination_Fixed_Inventory"), array('DestinationSysId'));
        $select->joinLeft(array('T3' => "TB_TravelPlan_Itinerary_FixedInventory"), "T1.id = T3.FixedInvnSysId AND T1.TPSysId = T3.TPSysId", array('FixedInventory', 'HoldInventory', 'SoldInventory', 'CurrentInventory'));
        $select->where('T1.TPSysId = ?', $TPSysId);
        $select->where('CONVERT(date, T3.FromDate) = ?', $fromDate);
        if ($departureCity) {
            $select->where('T1.DestinationSysId = ?', $departureCity);
        }
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function checkFixedInventoryInPkg($fromDate, $TPSysId, $departureCity = '') {
        $select = $this->db->select();
        $select->from(array('T1' => "TB_TravelPlan_Itinerary_FixedInventory"));
// $select->joinLeft(array('T3' => ""), "T1.id = T3.FixedInvnSysId AND T1.TPSysId = T3.TPSysId", array('FixedInventory', 'HoldInventory', 'SoldInventory', 'CurrentInventory'));
        $select->where('T1.TPSysId = ?', $TPSysId);
        $select->where('CONVERT(date, T1.FromDate) = ?', $fromDate);
        if ($departureCity) {
            $select->where('T1.FixedInvnSysId = ?', $departureCity);
        }
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function checkPackageCouponCodes($AgencySysId, $couponCode, $arrPkgIdsArr) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Coupons"), array('TPSysId'))
                ->where('tb1.AgencySysId = ?', $AgencySysId)
                ->where('tb1.CouponCode = ?', $couponCode)
                ->where("tb1.TPSysId IN (?)", $arrPkgIdsArr);
// echo $select; exit;
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function getFlexiPackageItenIdByFromTo($packageId, $cityid, $from, $to) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Itenary"), array('TPIntSysId'))
                ->where('tb1.TPSysId IN (?)', $packageId)
                ->where('tb1.CitySysId = ?', $cityid)
                ->where('tb1.TotalMinDays = ?', $from)
                ->where('tb1.TotalMaxDays = ?', $to)
                ->where('tb1.IsMarkForDel = ?', '0')
                ->where('tb1.IsActive = ?', '1');
// echo $select; exit;
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function getAgencyCPCharges($AgencySysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_Agency_Cancellation_Protection"), array('TaxValue'))
                ->where('tb1.AgencySysId = ?', $AgencySysId);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function multipleCurrencyExchangeRate($fromcurrency, $tocurrency, $FAgencySysId = NULL) {
        $returnVal = array();
        $AgencySysId = isset(Travel_Model_AgencyAuth::getIdentity()->AgencySysId) ? (int) Travel_Model_AgencyAuth::getIdentity()->AgencySysId : null;
        if ((int) $fromcurrency > 0 && (int) $tocurrency > 0) {
            $sqlPackage = "SELECT FCurrencyType,TCurrencyType,Rate FROM TB_IC_CurrencyConversion WHERE FCurrencyType IN(" . $fromcurrency . ") AND TCurrencyType = " . $tocurrency . " AND FCurrencyType != TCurrencyType  AND IsDelete = 0 AND IsActive = 1 ";
            $resultPackage = $this->db->query($sqlPackage)->fetchAll();
            $MarkUpPersentage = 0;
            if ($AgencySysId && $AgencySysId > 0) {
                $sqlPackage = "SELECT ExchangeRateMaarkup FROM TB_Agency WHERE AgencySysId = $AgencySysId";
                $resultAgency = $this->db->query($sqlPackage)->fetchAll();
                $MarkUpPersentage = isset($resultAgency[0]['ExchangeRateMaarkup']) ? (float) $resultAgency[0]['ExchangeRateMaarkup'] : 0;
            } else if ($FAgencySysId) {
                $sqlPackage = "SELECT ExchangeRateMaarkup FROM TB_Agency WHERE AgencySysId = $FAgencySysId";
                $resultAgency = $this->db->query($sqlPackage)->fetchAll();
                $MarkUpPersentage = isset($resultAgency[0]['ExchangeRateMaarkup']) ? (float) $resultAgency[0]['ExchangeRateMaarkup'] : 0;
            }

            $returnVal = array('conversion' => $resultPackage, 'MarkUpPersentage' => $MarkUpPersentage);
        }
        return $returnVal;
    }

    public function getFlexiPackageItenWithComponent($TPIntSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Itenary"), array('*'))
                ->joinLeft(array('tb2' => "TB_TravelPlan_Itenary_Accom"), "tb1.TPIntSysId = tb2.TPIntSysId", array('*'))
                ->joinLeft(array('tb3' => "TB_TravelPlan_SightSeeing"), "tb2.TPIntSysId = tb3.InvnItemSysId", array('*'))
                ->where('tb1.TPIntSysId', $TPIntSysId)
                ->where('tb1.IsMarkForDel = ?', '0')
                ->where('tb1.IsActive = ?', '1');
// echo $select; exit;
        $result = $this->db->query($select)->fetchAll();
        return $result;
    }

    public function checkQuardPackageType($TPSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan"), array('IsquadPrice', 'IsSharingPrice', 'ApplyTCSPackage'))
                ->where('tb1.TPSysId=?', $TPSysId)
                ->where('tb1.IsMarkForDel = ?', '0')
                ->where('tb1.IsActive = ?', '1');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getTPIdFromProposalId($TPSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_Agency_Customer_TravelPlan"), array('TPId'))
                ->where('tb1.TPSysId=?', $TPSysId)
                ->where('tb1.IsMarkForDel = ?', '0')
                ->where('tb1.IsActive = ?', '1');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function checkRateforMasterPackage($TPSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_MarketWise_Rate"), array('TPIntSysId'))
                ->where('tb1.TPIntSysId=?', $TPSysId)
                ->where('tb1.IsMarkForDel = ?', '0')
                ->where('tb1.IsActive = ?', '1');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function flightAirlineInventrylist($FixedInvnSysId, $fromdate) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_TravelPlan_Itenary_FixedInventory_Airline"), array('*'));
        $select->where('tb1.FixedInvnSysId =?', $FixedInvnSysId);
        $select->where('tb1.FromDate = ?', $fromdate);
        $select->where('tb1.IsMarkForDel = ?', 0);
        $select->order("tb1.InvnAirlineSysId ASC");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getLeadSource($AgencySysId) {
        $sqlPackageTheme = "SELECT * 
                        FROM TB_Master_LeadSource WHERE IsActive = '1' AND IsMarkForDel = '0' AND AgencySysId =  " . $AgencySysId;
        $resultPackageTheme = $this->db->query($sqlPackageTheme)->fetchAll();

        return $resultPackageTheme;
    }

    public function checkNetworkAgency($status, $fromagency, $toagency) {
        try {
            $select = $this->db->select();
            $select->from(array('tb1' => "Tb_Agency_Mapping_GTX_Network"), array("id"));
            $select->where('tb1.FromAgencySysId=?', $fromagency);
            $select->where('tb1.ToAgencySysId = ?', $toagency);
            $resultData = $this->db->fetchRow($select);
            if (isset($resultData['id'])) {
                $updateWhere = array("id = ?" => $resultData['id']);
                $dataArray = array(
                    "IsDeactivated" => $status
                );
                $this->updateData("Tb_Agency_Mapping_GTX_Network", $dataArray, $updateWhere);
            } else {
                $dataArray = array(
                    "FromAgencySysId" => $fromagency,
                    "ToAgencySysId" => $toagency,
                    "IsDeactivated" => $status
                );
                $this->insertData("Tb_Agency_Mapping_GTX_Network", $dataArray);
            }
            if ($status == 1 || $status == 2) {
                $updateWhereUpdate = array("AgencySysId = ?" => $fromagency, "ToAgencySysId = ?" => $toagency);
                $dataSet = array(
                    "IsWeb" => 0
                );
                $this->updateData("TB_TravelPlan_Mapping_Network_Web", $dataSet, $updateWhereUpdate);
                $this->updateData("TB_Visa_Mapping_Network_Web", $dataSet, $updateWhereUpdate);
            }
            $result = array("status" => true, "message" => "Status changed successfully.");
        } catch (Zend_Exception $e) {
            $result = array("status" => false, "message" => $e->getMessage());
        }
        return $result;
    }

    public function CheckTravelPlanTaxSetting($TPSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "Tb_TravelPlan_Tax_Settings"), array('TPSysId'))
                ->where('tb1.TPSysId=?', $TPSysId)
                ->where('tb1.IsMarkForDelete = ?', '0')
                ->where('tb1.IsActive = ?', '1');
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getTravelPlanTaxSettingDetail($TPSysId) {
        $select = $this->db->select()
                ->from(array("tb1" => "Tb_TravelPlan_Tax_Settings"))
                ->where('tb1.TPSysId=?', $TPSysId)
                ->where('tb1.IsMarkForDelete = ?', '0')
                ->where('tb1.IsActive = ?', '1');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function GetAllVisaMarkup($tpsysID) {
        $select = $this->db->select();
        $select->from(array('TTSMV' => "TB_TravelPlan_StdMarkup_Visa"));
        $select->where('TTSMV.TPSysId = ?', $tpsysID);
        $select->where('TTSMV.IsMarkForDel = ?', 0);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllTPVisaMarkup($tpsysID, $visaId, $agencyId) {
        $select = $this->db->select();
        $select->from(array('TTSMV' => "TB_TravelPlan_StdMarkup_Visa"));
        $select->where('TTSMV.TPSysId = ?', $tpsysID);
        $select->where('TTSMV.InvnVisaSysId = ?', $visaId);
        $select->where('TTSMV.AgencySysId = ?', $agencyId);
        $select->where('TTSMV.IsMarkForDel = ?', 0);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function GetAllVisaServiceProvider($tpsysID, $visaId, $agencyId) {
        $select = $this->db->select();
        $select->from(array('TTSSPV' => "TB_TravelPlan_StdServiceProvider_Visa"));
        $select->where('TTSSPV.TPSysId = ?', $tpsysID);
        $select->where('TTSSPV.InvnVisaSysId = ?', $visaId);
        $select->where('TTSSPV.AgencySysIdSysId = ?', $agencyId);
        $select->where('TTSSPV.IsMarkForDel = ?', 0);
//         echo $select;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function VisaInventoryDetailByIds($InvnVisaAllSysIds) {
        $select = $this->db->select();
        $selectarray = array('InvnVisaAllSysId', 'ICSourceSysId', 'NationalitySysId', 'CountriesCoveredSysId', 'VisaName', 'VisaRequired', 'VisaCategory', 'VisaType', 'VisaValidity', 'VisaDuration', 'VisaAdultRates', 'VisaChildRates', 'VisaInfantRates', 'VisaFamilyOfRates', 'IsActive', 'SupplierSysId', 'CurrencyType', 'DocsRequiredText', 'DocName1', 'DocFileName1', 'DocName2', 'DocFileName2', 'DocName3', 'DocFileName3', 'DocName4', 'DocFileName4', 'DocName5', 'DocFileName5', 'DocName6', 'DocFileName6');
        $select->from(array('tb1' => "TB_MP_Inventory_Visa"), $selectarray);
        $select->where('tb1.InvnVisaAllSysId IN(?)', array($InvnVisaAllSysIds));
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getReadymadeVisaMarkupDetail($TPSysId, $MPType = 1) {
        $select = $this->db->select();
        $selectarray = array('CurrencyType', 'MarkUpType', 'MarkUp', 'MarkUpChild', 'MarkUpChildFamily', 'MarkUpInfant');
        $select->from(array('tb1' => "TB_TravelPlan_StdMarkup_Visa"), $selectarray);
        $select->joinLeft(array('tb2' => "TB_MP_Inventory_Visa"), "tb1.InvnVisaSysId = tb2.InvnVisaAllSysId", array('VisaAdultRates', 'VisaChildRates', 'VisaChildFamilyRates', 'VisaInfantRates', 'CurrencyType as CostCurrencyType', 'InvnVisaAllSysId', 'VisaValidity', 'VisaDuration', 'VisaName', 'SupplierSysId'));
        $select->joinLeft(array('tb3' => 'TB_Master_Currency'), 'tb3.CurrencyType = tb2.CurrencyType', array('symbol'));
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.MPType = ?', $MPType);
        $select->where('tb1.IsActive = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
//        echo $select;die;
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getReadymadeVisaServiceProviderDetail($TPSysId, $MPType = 1) {
        $select = $this->db->select();
        $selectarray = array('ServiceProviderFee', 'ServiceProviderTitle', 'ServiceProviderFeeCurrencyType');
        $select->from(array('tb1' => "TB_TravelPlan_StdServiceProvider_Visa"), $selectarray);
        $select->where('tb1.TPSysId = ?', $TPSysId);
        $select->where('tb1.IsActive = ?', 1);
        $select->where('tb1.IsMarkForDel = ?', 0);
//        echo $select;die;
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function UpdateVisaMarkup($data, $where) {
//        $table = 'TB_TravelPlan_StdMarkup_Visa';
//        echo "<pre>";print_r($data);
//        echo "<pre>";print_r($where);
//        echo
        $this->updateData("TB_TravelPlan_StdMarkup_Visa", $data, $where);
//        die('shalvii');
    }

    public function getBusDetailswithSeat($ProposalSysId, $TPSysId, $AgencySysId, $InventoryDate, $ActionType = '') {
        $select = $this->db->select();
        $selectarray = array('BusSysId', 'IsBusRoutePackage');
        $select->from(array('tb' => "TB_TravelPlan"), $selectarray);
        $select->where('tb.TPSysId = ?', $TPSysId);
        $select->joinLeft(array('tb1' => "TB_Bus"), 'tb1.BusId = tb.BusSysId ', array("*"));
        $select->joinLeft(array('t2' => 'TB_Bus_Layouts'), 't2.BusLayoutsId = tb1.LayoutType ', array("Title as LayoutName", "layout_type as layout_type", "BusLayoutsId"));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.IsMarkForDelete = ?", 0);
        $select->where("t2.IsMarkForDelete = ?", 0);
        $select->order("tb1.BusId DESC");
        $result = $this->db->fetchRow($select);
        $Data = [];
        if ($result) {
            $BUS_BOOKING_STATUS = unserialize(BUS_BOOKING_STATUS);
            $objBus = new Travel_Model_TblBus();
            $LayoutID = isset($result['LayoutType']) ? $result['LayoutType'] : 0;
            $BusSeatsDetails = $objBus->BusSeatsDetails($LayoutID, $AgencySysId);
            if ($ActionType === 'change') {
                $busSeatHold = $objBus->busSeatHold(trim($TPSysId), $InventoryDate, $AgencySysId, $ProposalSysId);
            } else {
                $busSeatHold = $objBus->busSeatHold(trim($TPSysId), $InventoryDate, $AgencySysId, 0);
            }

// print_r($TPSysId . '==' . $InventoryDate . '==' . $AgencySysId . '==' . $ProposalSysId);
// die;
// echo '<pre>';
// print_r($busSeatHold);
// die;
            $BusSeatsId = [];
            $HoldBookedSeat = [];
            $SelectedSeatNo = [];
            if ($busSeatHold) {
                foreach ($busSeatHold as $key => $value) {
                    if ($value['Status'] == 3 && trim($value['ProposalSysId']) == $ProposalSysId) {
                        $SelectedSeatNo[] = $value['SeatNo'];
                        $BusSeatsId[] = $value['BusSeatsId'];
                    }
                    if ($value['Status'] == 1 || $value['Status'] == 2) {
                        $value['Status'] = 2;
                    } elseif ($value['Status'] == 3 && trim($value['ProposalSysId']) == $ProposalSysId) {
                        $value['Status'] = 0;
                    }
                    if ($value['Status'] == 1) {
                        $pathFill_0 = '#f22a2a';
                        $pathFill_1 = '#fc9898';
                        $pathFill_2 = '#f22a2a';
                        $rect = '#fc9898';
                    } elseif ($value['Status'] == 2) {
                        $pathFill_0 = '#ADAFB8';
                        $pathFill_1 = '#E4E4E7';
                        $pathFill_2 = '#ADAFB8';
                        $rect = '#E4E4E7';
                    } elseif ($value['Status'] == 3) {
// $pathFill_0 = '#FFFF00';
// $pathFill_1 = '#f4f499';
// $pathFill_2 = '#FFFF00';
// $rect = '#f4f499';
                        $pathFill_0 = '#ADAFB8';
                        $pathFill_1 = '#E4E4E7';
                        $pathFill_2 = '#ADAFB8';
                        $rect = '#E4E4E7';
                    } else {
                        $pathFill_0 = '#086600';
                        $pathFill_1 = '#4CAF50';
                        $pathFill_2 = '#086600';
                        $rect = '';
                    }
                    $HoldBookedSeat[$value['SeatNo']]['pathFill_0'] = $pathFill_0;
                    $HoldBookedSeat[$value['SeatNo']]['pathFill_1'] = $pathFill_1;
                    $HoldBookedSeat[$value['SeatNo']]['pathFill_2'] = $pathFill_2;
                    $HoldBookedSeat[$value['SeatNo']]['rect'] = $rect;

                    $HoldBookedSeat[$value['SeatNo']]['class'] = ($value['Status'] == 0) ? 'ClickSeat ' . $BUS_BOOKING_STATUS[$value['Status']] : $BUS_BOOKING_STATUS[$value['Status']];
                    $HoldBookedSeat[$value['SeatNo']]['Status'] = $value['Status'];
                    $HoldBookedSeat[$value['SeatNo']]['SeatNo'] = $value['SeatNo'];
                }
            }
// echo '<pre>';
// print_r($HoldBookedSeat);
// die;
            $Data = ['BusData' => $result, 'SeatMap' => $BusSeatsDetails, 'HoldBookedSeat' => $HoldBookedSeat, 'SelectedSeatNo' => $SelectedSeatNo, 'BusSeatsId' => $BusSeatsId];
        }
        return $Data;
    }

    public function SelectedBusPickupLocation($AgencySysId, $BusPickupTimeSysId) {

        $select = $this->db->select();
        $select->from(
                array('tb1' => 'TB_Agency_Transport_bus_Pickup_Time'),
                array('*', 'pickupLocationTime' => new Zend_Db_Expr("CONVERT(VARCHAR(5), tb1.pickupLocationTime, 108)"))
        );
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.BusPickupTimeSysId = ?", $BusPickupTimeSysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("tb1.IsMarkForDel = ?", '0');
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function getPickuplocationMaster($TPSysId) { //if catId  & tour id is blank then default rate for standard private are fetch
        $select = $this->db->select()
                ->from(array("tb1" => "TB_TravelPlan_Bus_Pickup_Location"), array("Sequence", "BusRouteSysId", "PickupTime", "PickupLocationSysId", "MasterRefTPSysID", "StartCityId", "EndCityId", "pickupLocation"));
        $select->joinLeft(array('t2' => 'TB_Agency_Transport_bus_Pickup_Time'), 't2.BusRouteSysId = tb1.BusRouteSysId ', array("pickupLocationName", "BusPickupTimeSysId", 'pickupLocationTime' => new Zend_Db_Expr("CONVERT(VARCHAR(8), pickupLocationTime, 108)")));
        $select->where('tb1.ISACTIVE = ?', 1);
        $select->where('tb1.ISMARKFORDEL = ?', 0);
        $select->where("tb1.MasterRefTPSysID IN (SELECT TPSYSID FROM TB_TRAVELPLAN WHERE (TPSYSID = $TPSysId OR MASTERREFID = $TPSysId))");
        $result = $this->db->fetchAll($select);
        $pickupLocation = [];
        if ($result) {
            foreach ($result as $kkk => $vlpick) {
                $pickupLocation[] = [
                    'pickupLocation' => isset($vlpick['pickupLocationName']) ? $vlpick['pickupLocationName'] : '',
                    'BusPickupTimeSysId' => $vlpick['BusPickupTimeSysId'],
                    'PickupTime' => $vlpick['pickupLocationTime'],
                ];
            }
        }
        $BusPickUpLocations[] = $pickupLocation;
        $groupedData = [];
        foreach ($BusPickUpLocations as $subArray) {
            foreach ($subArray as $item) {
                $location = $item['pickupLocation'];

                if (!isset($groupedData[$location])) {
                    $groupedData[$location] = [
                        'pickupLocation' => $location,
                        'PickupTime' => []
                    ];
                }

                $groupedData[$location]['PickupTime'][] = [
                    'BusPickupTimeSysId' => $item['BusPickupTimeSysId'],
                    'PickupTime' => $item['PickupTime']
                ];
            }
        }
        $data = array_values(is_array($groupedData) ? $groupedData : []);

        foreach ($data as &$location) {
            if (isset($location['PickupTime']) && is_array($location['PickupTime'])) {
                $location['PickupTime'] = $this->dedupePickupTimes($location['PickupTime']);
            }
        }
        unset($location);
        return $data;
    }

    public function dedupePickupTimes($pickupList) {
        $seen = [];
        $result = [];

        foreach ($pickupList as $item) {
            $key = $item['BusPickupTimeSysId'] . '_' . $item['PickupTime'];
            if (!isset($seen[$key])) {
                $seen[$key] = true;
                $result[] = $item;
            }
        }
        return $result;
    }

    public function AllBusPickupLocation($AgencySysId, $TPSysId) {

        $select = $this->db->select();
        $select->from(array('tb1' => 'TB_Agency_Customer_TravelPlan_Bus'), ['BusRouteSysId']);
        $select->joinLeft(array('t2' => 'TB_Agency_Transport_bus_Pickup_Time'), 't2.BusRouteSysId = tb1.BusRouteSysId ', array("pickupLocationName", "BusPickupTimeSysId", 'pickupLocationTime' => new Zend_Db_Expr("CONVERT(VARCHAR(8), pickupLocationTime, 108)")));
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.TPSysId = ?", $TPSysId);
        $select->where("tb1.IsActive = ?", 1);
        $select->where("t2.IsActive = ?", 1);
        $select->where("t2.IsMarkForDel = ?", '0');
        $select->where("tb1.IsMarkForDel = ?", '0');

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

        $pickupLocation = [];
        if ($result) {
            foreach ($result as $kkk => $vlpick) {
                $pickupLocation[] = [
                    'pickupLocation' => isset($vlpick['pickupLocationName']) ? $vlpick['pickupLocationName'] : '',
                    'BusPickupTimeSysId' => $vlpick['BusPickupTimeSysId'],
                    'PickupTime' => $vlpick['pickupLocationTime'],
                ];
            }
        }
        $BusPickUpLocations[] = $pickupLocation;
        $groupedData = [];
        foreach ($BusPickUpLocations as $subArray) {
            foreach ($subArray as $item) {
                $location = $item['pickupLocation'];

                if (!isset($groupedData[$location])) {
                    $groupedData[$location] = [
                        'pickupLocation' => $location,
                        'PickupTime' => []
                    ];
                }
                $groupedData[$location]['PickupTime'][] = [
                    'BusPickupTimeSysId' => $item['BusPickupTimeSysId'],
                    'PickupTime' => $item['PickupTime']
                ];
            }
        }
        return array_values(is_array($groupedData) ? $groupedData : []);
    }

    public function getSupplierEmailData($SupplierSysId, $TPSysId) {
        $select = $this->db->select();
        $select->from(array('tb' => "TB_Supplier_Emi_Reminder"));
        $select->where('tb.TPSysId = ?', $TPSysId);
        $select->where('tb.SupplierSysId = ?', $SupplierSysId);
        $select->where('tb.IsMarkForDelete = ?', 0);
        $select->where('tb.IsActive = ?', 1);
//        $select->joinLeft(array('tb1' => "TB_Bus"), 'tb1.BusId = tb.BusSysId ', array("*"));
//        $select->joinLeft(array('t2' => 'TB_Bus_Layouts'), 't2.BusLayoutsId = tb1.LayoutType ', array("Title as LayoutName", "layout_type as layout_type", "BusLayoutsId"));
//        $select->where("tb1.AgencySysId = ?", $AgencySysId);
//        $select->where("tb1.IsMarkForDelete = ?", 0);
//        $select->where("t2.IsMarkForDelete = ?", 0);
        $select->order("tb.SupplierTrxId Asc");
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getWebSupplierGTXVisa($securityKey, $AgencySysId) {
//        $select1 = $this->db->select();
//        $select1->from(array("T1" => "Tb_Agency_Mapping_GTX_Network"), array('FromAgencySysId'));
//        $select1->where("T1.ToAgencySysId =?", $AgencySysId);
//        $select1->where("T1.IsDeactivated =?", 1);
//        $result1 = $this->db->fetchAll($select1);
//        $arraySet = [];
//        if (!empty($result1)) {
//            foreach ($result1 as $resultSetData) {
//                $arraySet[] = $resultSetData['FromAgencySysId'];
//            }
//        }

        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
            if (!empty($this->searchArr['ContId'])) {
                $cond .= "AND TBTP.CountriesCoveredSysId =" . trim($this->searchArr['ContId']);
            }
            if (!empty($this->searchArr['VisaType'])) {
                $cond .= " AND TBTP.VisaType = '" . $this->searchArr['VisaType'] . "' ";
            }

            if (!empty($this->searchArr['VisaName'])) {
                $VisaName = $this->searchArr['VisaName'];
                $cond .= " AND TBTP.VisaName LIKE '%$VisaName%'";
            }
        }
//        echo"<pre>";print_r($arraySet);die('data');
//        if (!empty($arraySet)) {
//            $arraySetWhere = implode(',', $arraySet);
//            $cond .= " AND TBTP.ICSourceSysId NOT IN ($arraySetWhere)";
//        }

        $sqlPackage = " SELECT (TBTP.InvnVisaAllSysId) as PlanId, TBTPMNW.IsWeb, TBIS.Title as SupplierName, TBVM.MarkUpType, TBVM.MarkUp, TBVM.MarkUpChild, TBVM.MarkUpChildFamily, TBVM.MarkUpInfant, TBVM.CurrencyType as MarkUpCurrencyType, TBTP.* 
            FROM TB_MP_Inventory_Visa TBTP
	 LEFT JOIN TB_Agency TBIS ON TBIS.AgencySysId = TBTP.ICSourceSysId
         LEFT JOIN TB_MP_StdMarkup_Visa TBVM ON TBVM.InvnVisaSysId = TBTP.InvnVisaAllSysId AND MPType = 2
         LEFT JOIN TB_Visa_Mapping_Network_Web TBTPMNW ON TBTPMNW.VisaSysID = TBTP.InvnVisaAllSysId AND TBTPMNW.ToAgencySysId = $AgencySysId
         WHERE TBTP.IsActive = 1 AND TBTP.IsMarkForDel = '0' AND  TBTP.IsGTXNetwork = 1 AND TBIS.SecurityKey = '" . $securityKey . "' AND TBTP.IsMarkForDel = '0' AND $cond ORDER BY VisaSysID DESC ";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function getAgentHubVisaGTX($securityKey, $AgencySysId) {
        $select = $this->db->select();
        $select->from(array("T1" => "TB_Visa_Mapping_Network_Web"), array("IsWeb"));
        $select->joinLeft(array("T2" => "TB_Agency"), "T2.AgencySysId = T1.ToAgencySysId", array("T2.Title", "ActivationDate", "SecurityKey"));
        $select->joinLeft(array("T3" => "TB_MP_Inventory_Visa"), "T1.VisaSysID = T3.InvnVisaAllSysId");
        $select->joinLeft(array("T4" => "TB_MP_StdMarkup_Visa"), "T1.VisaSysID = T4.InvnVisaSysId", array("T4.MarkUpType", "T4.MarkUp", "T4.MarkUpChild", "T4.MarkUpChildFamily", "T4.MarkUpInfant", "T4.CurrencyType as MarkUpCurrencyType"));
        $select->where('T1.AgencySysId = ?', $AgencySysId);
        $select->where('T2.SecurityKey = ?', $securityKey);
        $select->where('T4.MPType = ?', 2);
        $select->where('T1.IsWeb = ?', 1);

        if (!empty($this->searchArr)) {
            if (!empty($this->searchArr['ContId'])) {
                $select->where('T3.CountriesCoveredSysId = ?', trim($this->searchArr['ContId']));
            }
            if (!empty($this->searchArr['VisaType'])) {
                $select->where('T3.VisaType = ?', $this->searchArr['VisaType']);
            }

            if (!empty($this->searchArr['VisaName'])) {
                $VisaName = $this->searchArr['VisaName'];
                $select->where('T3.VisaName LIKE ?', '%' . trim($VisaName) . '%');
            }
        }
//echo $select; exit;
//$select->group(array("T2.Title", "T2.ActivationDate","T2.SecurityKey"));
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function updateNetworkWebVisa($AgencySysId, $VisaSysID, $ToAgencySysId, $isWeb) {
        try {
            $checkInNetwork = $this->checkVisaInNetworkWeb($AgencySysId, $VisaSysID, $ToAgencySysId);
            if (!empty($checkInNetwork)) {
                $updateWhere = array("ToAgencySysId = ?" => $ToAgencySysId, "AgencySysId = ?" => $AgencySysId, "VisaSysID = ?" => $VisaSysID);
                if (isset($checkInNetwork[0]['IsWeb']) && $checkInNetwork[0]['IsWeb'] == 0 && $isWeb == 1) {
                    $updateValue = array(
                        'IsWeb' => 1,
                        'UpdateDate' => date("Y-m-d h:i:s")
                    );
                } else {
                    $updateValue = array(
                        'IsWeb' => 0,
                        'UpdateDate' => date("Y-m-d h:i:s")
                    );
                }
                $this->updateData("TB_Visa_Mapping_Network_Web", $updateValue, $updateWhere);
            } else {
                $insertData = array(
                    "ToAgencySysId" => $ToAgencySysId,
                    "AgencySysId" => $AgencySysId,
                    "VisaSysID" => $VisaSysID,
                    'IsWeb' => 1,
                    'IsActive' => 1,
                    'IsMarkForDel' => 0,
                    'CreateDate' => date("Y-m-d h:i:s"),
                    'UpdateDate' => date("Y-m-d h:i:s")
                );
                $this->insertData("TB_Visa_Mapping_Network_Web", $insertData);
            }
            $returnArray = array(
                "Status" => true,
                "Message" => ""
            );
        } catch (Zend_Exception $e) {
            $returnArray = array(
                "Status" => true,
                "Message" => $e->getMessage()
            );
        }
    }

    public function checkVisaInNetworkWeb($AgencySysId, $VisaSysID, $ToAgencySysId) {
        $select = $this->db->select();
        $select->from(array('tb1' => "TB_Visa_Mapping_Network_Web"), array('IsWeb'));
        $select->where("tb1.ToAgencySysId = ?", $ToAgencySysId);
        $select->where("tb1.AgencySysId = ?", $AgencySysId);
        $select->where("tb1.VisaSysID = ?", $VisaSysID);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function getPublishedWebSupplierVisa($AgencySysId) {
        $cond = ' 1 = 1 ';
        if (!empty($this->searchArr)) {
            if (!empty($this->searchArr['ContId'])) {
                $cond .= "AND TBTP.CountriesCoveredSysId =" . trim($this->searchArr['ContId']);
            }
            if (!empty($this->searchArr['VisaType'])) {
                $cond .= " AND TBTP.VisaType = '" . $this->searchArr['VisaType'] . "' ";
            }

            if (!empty($this->searchArr['VisaName'])) {
                $VisaName = $this->searchArr['VisaName'];
                $cond .= " AND TBTP.VisaName LIKE '%$VisaName%'";
            }
        }

        $sqlPackage = " SELECT (TBTP.InvnVisaAllSysId) as PlanId, TBTPMNW.IsWeb, TBIS.Title as SupplierName, TBVM.MarkUpType, TBVM.MarkUp, TBVM.MarkUpChild, TBVM.MarkUpChildFamily, TBVM.MarkUpInfant, TBVM.CurrencyType as MarkUpCurrencyType, TBTP.* 
            FROM TB_MP_Inventory_Visa TBTP
	 LEFT JOIN TB_Agency TBIS ON TBIS.AgencySysId = TBTP.ICSourceSysId
         LEFT JOIN TB_MP_StdMarkup_Visa TBVM ON TBVM.InvnVisaSysId = TBTP.InvnVisaAllSysId AND TBVM.MPType = 2
         LEFT JOIN TB_Visa_Mapping_Network_Web TBTPMNW ON TBTPMNW.VisaSysID = TBTP.InvnVisaAllSysId AND TBTPMNW.ToAgencySysId = $AgencySysId
         WHERE  TBTPMNW.IsWeb = 1 AND TBTP.IsActive = 1 AND TBTP.IsMarkForDel = '0' AND  TBTP.IsGTXNetwork = 1 AND TBTP.IsMarkForDel = '0' AND $cond  ORDER BY VisaSysID DESC ";
        $resultPackage = $this->db->query($sqlPackage)->fetchAll();
        return $resultPackage;
    }

    public function VisaInventoryDeList($InvnVisaAllSysId) {
        $select = $this->db->select();
        $selectarray = array('Iswebsite', 'InvnVisaAllSysId', 'ICSourceSysId', 'NationalitySysId', 'CountriesCoveredSysId', 'VisaName', 'VisaRequired', 'VisaCategory', 'VisaType', 'VisaValidity', 'VisaDuration', 'VisaAdultRates', 'VisaChildRates', 'VisaChildFamilyRates', 'VisaInfantRates', 'VisaFamilyOfRates', 'IsActive', 'SupplierSysId', 'CurrencyType', 'DocsRequiredText', 'DocName1', 'DocFileName1', 'DocName2', 'DocFileName2', 'DocName3', 'DocFileName3', 'DocName4', 'DocFileName4', 'DocName5', 'DocFileName5', 'DocName6', 'DocFileName6', 'PrecessingTime', 'BasicRequirementsText', 'EmbassyAddressText', 'DocumentSubmission', 'PhysicalInterview', 'PassportExpiryDays', 'ChildAge');
        $supplierarray = array('SupplierName');
        $select->from(array('tb1' => "TB_MP_Inventory_Visa"), $selectarray);
        $select->joinLeft(array('tb2' => "TB_IC_Supplier"), "tb1.SupplierSysId = tb2.SupplierSysId", $supplierarray);
        $select->where("tb1.InvnVisaAllSysId =?", $InvnVisaAllSysId);
        $select->where("tb1.IsMarkForDel =?", 0);
        $select->order(array('InvnVisaAllSysId ASC'));
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function MarkupVisaList($InvnVisaSysId) {
        $select = $this->db->select();
        $selectarray = array('VisaMrkSysId', 'MPType', 'MarkUpType', 'MarkUp', 'MarkUpChild', 'MarkUpChildFamily', 'MarkUpInfant', 'ICSourceSysId', 'CurrencyType', 'ServiceProviderFeeCurrencyType', 'ServiceProviderFee');
        $select->from(array('tb1' => "TB_MP_StdMarkup_Visa"), $selectarray);
        $select->where("tb1.InvnVisaSysId =?", $InvnVisaSysId);
        $select->where("tb1.MPType =?", 2);
        $result = $this->db->fetchRow($select);
        return $result;
    }

    public function ServiceProviderVisaList($InvnVisaSysId) {
        $select = $this->db->select();
        $selectarray = array('ServiceProviderTitle', 'ServiceProviderFeeCurrencyType', 'ServiceProviderFee', 'IsTaxable', 'MarkUp', 'IsDisplay');
        $select->from(array('tb1' => "TB_MP_StdServiceProvider_Visa"), $selectarray);
        $select->where("tb1.InvnVisaSysId =?", $InvnVisaSysId);
        $result = $this->db->fetchAll($select);
        return $result;
    }

    public function VisaInventoryVisaDocumentList($VisaInvnId, $AgencySysId) {
        $result = array();
        if ($AgencySysId > 0) {
            $select = $this->db->select();
            $select->from(array('tb1' => "TB_MP_Inventory_Visa_Doc"), array("DocVisaSysId", "IsMandatory"));
            $select->joinLeft(array('tb2' => "TB_Master_VisaDocument"), "tb1.DocumentSysId = tb2.DocSysId", array("Title", "Description", "Label", "FieldType", "Options"));
//            $select->joinLeft(array('tb3' => "TB_Agency_Visa_Document"),"tb2.DocSysId = tb3.DocSysId AND tb3.AgencySysId = $AgencySysId AND tb3.IsMarkForDel = '0'",array("IsMandatory"));
            $select->where("tb1.VisaInvnId =?", $VisaInvnId);
            $select->where("tb1.IsMarkForDel =?", 0);
            $select->order(array('DocVisaSysId ASC'));
//echo $select; exit;
            $result = $this->db->fetchAll($select);
        }
        return $result;
    }

    public function insertDataTableWise($table, $data) {
        try {
            $this->db->insert($table, $data);
            return $this->db->lastInsertId();
        } catch (Exception $e) {
            die($e->getMessage());
            return 0;
        }
    }

//    public function CopyPackageOneAgencyToAnotherAgency($FromAgencySysId, $ToAgencySysId) {
//        $select = $this->db->select();
//        $select->from(array('tb1' => "TB_TravelPlan"), array('TPSysId'));
//        $select->where("tb1.AgencySysId =?", $FromAgencySysId);
//        $select->where("tb1.IsMarkForDel =?", 0);
//        $select->where("tb1.IsActive =?", 1);
//        $select->where("tb1.MasterRefId =?", 0);
//        $select->where("tb1.IsPriceShared =?", 0);
//        $result = $this->db->fetchAll($select);
//
//        foreach ($result as $resultArray) {
//            $TPSysId = $resultArray['TPSysId'];
//            $select1 = $this->db->select();
//            $select1->from(array('tb1' => "TB_TravelPlan"));
//            $select1->where("tb1.TPSysId =?", $TPSysId);
//            $select1->orWhere("tb1.MasterRefId =?", $TPSysId);
//            $select1->order("tb1.MasterRefId");
//            $result1 = $this->db->fetchAll($select1);
//
//            foreach ($result1 as $resultArray1) {
//                try {
//                    $this->db->beginTransaction();
//                    $oldTpSysId = $resultArray1['TPSysId'];
//                    unset($resultArray1['TPSysId']);
//                    unset($resultArray1['MasterRefId']);
//                    unset($resultArray1['AgencySysId']);
//                    unset($resultArray1['AgentSysId']);
//                    $resultArray1['AgencySysId'] = $ToAgencySysId;
//                    $resultArray1['AgentSysId'] = 172379;
//                    $resultArray1['SupplierSysId'] = 29569;
//                    if ($resultArray1['MasterRefId'] == 0) {
//                        $resultArray1['MasterRefId'] = 0;
//                        //echo "<pre>";print_r($resultArray1);exit;
//                        $NewTPSYSId = $MasterTPSysId = $this->insertDataTableWise('TB_TravelPlan', $resultArray1);
//                    } else {
//                        $resultArray1['MasterRefId'] = $MasterTPSysId;
//                        $NewTPSYSId = $this->insertDataTableWise('TB_TravelPlan', $resultArray1);
//                    }
//                    $select_it = $this->db->select();
//                    $select_it->from(array('tb1' => "TB_TravelPlan_Itenary"));
//                    $select_it->where("tb1.TPSysId =?", $oldTpSysId);
//                    $select_it->where("tb1.IsActive =?", 1);
//                    $select_it->where("tb1.IsMarkForDel =?", 0);
//                    $result_it = $this->db->fetchAll($select_it);
//                    $oldIntArray = $itn = array();
//                    foreach ($result_it as $result_itArray) {
//                        $OldTPIntSysId = $result_itArray['TPIntSysId'];
//                        $oldIntArray[] = $OldTPIntSysId;
//                        unset($result_itArray['TPIntSysId']);
//                        $result_itArray['TPSysId'] = $NewTPSYSId;
//                        $result_itArray['AgencySysId'] = $ToAgencySysId;
//                        $NewTPIntSysId = $this->insertDataTableWise('TB_TravelPlan_Itenary', $result_itArray);
//                        $itn[$OldTPIntSysId] = $NewTPIntSysId;
//                    }
//
//
//                    /*                     * ******************************************************Pleases************************************************************ */
//                    if (!empty($oldIntArray)) {
//                        $select_Places = $this->db->select();
//                        $select_Places->from(array('tb1' => "TB_TravelPlan_Itenary_Places"));
//                        $select_Places->where("tb1.TPIntSysId IN (?)", $oldIntArray);
//                        $select_Places->where("tb1.IsActive =?", 1);
//                        $select_Places->where("tb1.IsMarkForDel =?", 0);
//                        $result_Places = $this->db->fetchAll($select_Places);
//                        foreach ($result_Places as $result_PlacesArray) {
//                            unset($result_PlacesArray['VersionId']);
//                            $OldTPIntSysId = $result_PlacesArray['TPIntSysId'];
//                            $result_PlacesArray['TPIntSysId'] = isset($itn[$OldTPIntSysId]) ? $itn[$OldTPIntSysId] : null;
//                            if ($result_PlacesArray['TPIntSysId']) {
//                                $result_PlacesArray['AgencySysId'] = $ToAgencySysId;
//                                $this->insertDataTableWise('TB_TravelPlan_Itenary_Places', $result_PlacesArray);
//                            }
//                        }
//
//
//                        /*                         * ***************************************Hotel************************************************** */
//                        $select_accom = $this->db->select();
//                        $select_accom->from(array('tb1' => "TB_TravelPlan_Itenary_Accom"));
//                        $select_accom->where("tb1.TPIntSysId IN (?)", $oldIntArray);
//                        $select_accom->where("tb1.IsActive =?", 1);
//                        $select_accom->where("tb1.IsMarkForDel =?", 0);
//                        $result_accom = $this->db->fetchAll($select_accom);
//                        foreach ($result_accom as $result_accomArray) {
//                            unset($result_accomArray['VersionId']);
//                            $OldTPIntSysId = $result_accomArray['TPIntSysId'];
//                            $result_accomArray['TPIntSysId'] = isset($itn[$OldTPIntSysId]) ? $itn[$OldTPIntSysId] : null;
//                            if ($result_accomArray['TPIntSysId']) {
//                                $result_accomArray['AgencySysId'] = $ToAgencySysId;
//                                $this->insertDataTableWise('TB_TravelPlan_Itenary_Accom', $result_accomArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//                        /*                         * ***************************************Sight************************************************** */
//                        $select_SightSeeing = $this->db->select();
//                        $select_SightSeeing->from(array('tb1' => "TB_TravelPlan_SightSeeing"));
//                        $select_SightSeeing->where("tb1.InvnItemSysId IN (?)", $oldIntArray);
//                        $select_SightSeeing->where("tb1.IsActive =?", 1);
//                        $select_SightSeeing->where("tb1.IsMarkForDelete =?", 0);
//                        $result_SightSeeing = $this->db->fetchAll($select_SightSeeing);
//                        foreach ($result_SightSeeing as $result_SightSeeingArray) {
//                            unset($result_SightSeeingArray['VersionId']);
//                            $OldTPIntSysId = $result_SightSeeingArray['InvnItemSysId'];
//                            $result_SightSeeingArray['InvnItemSysId'] = isset($itn[$OldTPIntSysId]) ? $itn[$OldTPIntSysId] : null;
//                            if ($result_SightSeeingArray['InvnItemSysId']) {
//                                $result_SightSeeingArray['AgencySysId'] = $ToAgencySysId;
//                                $this->insertDataTableWise('TB_TravelPlan_SightSeeing', $result_SightSeeingArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//                        /*                         * ***************************************Transpost************************************************** */
//                        $select_Transport = $this->db->select();
//                        $select_Transport->from(array('tb1' => "TB_TravelPlan_Itenary_Transport"));
//                        $select_Transport->where("tb1.TPInvnSysId IN (?)", $oldIntArray);
//                        $select_Transport->where("tb1.IsActive =?", 1);
//                        $select_Transport->where("tb1.IsMarkForDel =?", 0);
//                        $result_Transport = $this->db->fetchAll($select_Transport);
//                        foreach ($result_Transport as $result_TransportArray) {
//                            unset($result_TransportArray['VersionId']);
//                            $OldTPIntSysId = $result_TransportArray['TPInvnSysId'];
//                            $result_TransportArray['TPInvnSysId'] = isset($itn[$OldTPIntSysId]) ? $itn[$OldTPIntSysId] : null;
//                            if ($result_TransportArray['TPInvnSysId']) {
//                                $result_TransportArray['AgencySysId'] = $ToAgencySysId;
//                                $result_TransportArray['XrefInvnItemSysId'] = $NewTPSYSId;
//                                $this->insertDataTableWise('TB_TravelPlan_Itenary_Transport', $result_TransportArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//
//                        /*                         * ***************************************Rate************************************************** */
//                        $select_rate = $this->db->select();
//                        $select_rate->from(array('tb1' => "TB_TravelPlan_Rate"));
//                        $select_rate->where("tb1.TPSysId = ?", $oldTpSysId);
//                        $select_rate->where("tb1.IsActive =?", 1);
//                        $select_rate->where("tb1.IsMarkForDel =?", 0);
//                        $result_rate = $this->db->fetchAll($select_rate);
//                        foreach ($result_rate as $result_rateArray) {
//                            unset($result_rateArray['TPRateSheetSysId']);
//                            $result_rateArray['TPSysId'] = isset($NewTPSYSId) ? $NewTPSYSId : null;
//                            if ($result_rateArray['TPSysId']) {
//                                $this->insertDataTableWise('TB_TravelPlan_Rate', $result_rateArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//
//
//                        /*                         * ***************************************Transpost************************************************** */
//                        $select_MWrate = $this->db->select();
//                        $select_MWrate->from(array('tb1' => "TB_TravelPlan_MarketWise_Rate"));
//                        $select_MWrate->where("tb1.TPIntSysId = ?", $oldTpSysId);
//                        $select_MWrate->where("tb1.IsActive =?", 1);
//                        $select_MWrate->where("tb1.IsMarkForDel =?", 0);
//                        $result_MWrate = $this->db->fetchAll($select_MWrate);
//                        foreach ($result_MWrate as $result_MWrateArray) {
//                            unset($result_MWrateArray['TPRateSheetSysId']);
//                            $result_MWrateArray['TPIntSysId'] = isset($NewTPSYSId) ? $NewTPSYSId : null;
//                            if ($result_MWrateArray['TPIntSysId']) {
//                                $result_MWrateArray['AgencySysId'] = $ToAgencySysId;
//                                $this->insertDataTableWise('TB_TravelPlan_MarketWise_Rate', $result_MWrateArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//
//
//                        /*                         * ***************************************Transpost************************************************** */
//                        $select_TaxSettings = $this->db->select();
//                        $select_TaxSettings->from(array('tb1' => "Tb_TravelPlan_Tax_Settings"));
//                        $select_TaxSettings->where("tb1.TPSysId = ?", $oldTpSysId);
//                        $select_TaxSettings->where("tb1.IsActive =?", 1);
//                        $select_TaxSettings->where("tb1.IsMarkForDelete =?", 0);
//                        $result_TaxSettings = $this->db->fetchAll($select_TaxSettings);
//                        foreach ($result_TaxSettings as $result_TaxSettingsArray) {
//                            unset($result_TaxSettingsArray['id']);
//                            $result_TaxSettingsArray['TPSysId'] = isset($NewTPSYSId) ? $NewTPSYSId : null;
//                            if ($result_TaxSettingsArray['TPSysId']) {
//                                $this->insertDataTableWise('Tb_TravelPlan_Tax_Settings', $result_TaxSettingsArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//
//
//                        /*                         * ***************************************Transpost************************************************** */
//                        $select_Terms = $this->db->select();
//                        $select_Terms->from(array('tb1' => "TB_TravelPlan_Terms_Conditions"));
//                        $select_Terms->where("tb1.TPIntSysId = (?)", $oldTpSysId);
//                        $select_Terms->where("tb1.IsActive =?", 1);
//                        $select_Terms->where("tb1.IsMarkForDel =?", 0);
//                        $result_Terms = $this->db->fetchAll($select_Terms);
//                        foreach ($result_Terms as $result_TermsArray) {
//                            unset($result_TermsArray['TncId']);
//                            $result_TermsArray['TPIntSysId'] = isset($NewTPSYSId) ? $NewTPSYSId : null;
//                            if ($result_TermsArray['TPIntSysId']) {
//                                $result_TermsArray['AgencySysId'] = $ToAgencySysId;
//                                $this->insertDataTableWise('TB_TravelPlan_Terms_Conditions', $result_TermsArray);
//                            }
//                        }
//                        /*                         * *********************************************************************************************** */
//                    }
//                    $updateArr = [
//                        'IsPriceShared' => 1
//                    ];
//                    $where_last = array('TPSysId =?' => $oldTpSysId);
//                    $this->updateData("TB_TravelPlan", $updateArr, $where_last);
//                    $this->db->commit();
//                } catch (Zend_Exception $e) {
//                    $this->db->rollBack();
//                  echo  $e->getMessage();exit;
//                }
//            }
//        }
//    }
}

?>

Youez - 2016 - github.com/yon3zu
LinuXploit