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/controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/b2bzend/application/controllers//ProposalController.php
<?php

/**
 * Class City
 *
 * @name		City
 * @author		Er Amit Kumar Dubey 
 * @version 	1.0
 * @copyright 	GTX
 * Handle Without Session Data Related function for Front end only
 *
 */
class ProposalController extends Catabatic_ValidateCustomer {

    private $intLoggedinUserId;
    private $intLoggedinUserGroupSysId;
    private $intLoggedinUserAgencySysId;
    private $intLoggedinUserTrxCurrency;
    private $InfoSourceSysId = '';
    private $intTax = '';
    private $intRoomPrice = '';
    private $intGrandPayableAmount = '';

    const ENC_KEY = "tripsbanklockkeyforproposalurl";
    const VECTOR = "myvector";

    public function init() {
        parent::init();
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $this->baseUrl = $request->getScheme() . '://' . $request->getHttpHost();
        $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
        $this->_crmcusttravelplan = new Travel_Model_CRM_CustomerTravelPlan();
        $this->_crmcusttravelplanHotel = new Travel_Model_CRM_CustomerTravelPlanHotel();
        $this->_crmcusttravelplanAccom = new Travel_Model_CRM_CustomerTravelPlanAccom();
        $this->_crmcustomertravelItenary = new Travel_Model_CRM_CustomerTravelItenary();
        $this->_HtmlPurifier = new Zend_Filter_HtmlPurifier();
        $this->SMSURL = Catabatic_Helper::getSMSURL();
        $this->SMSMETHOD = Catabatic_Helper::getSMSMETHOD();
        $this->SMSAPIKEY = Catabatic_Helper::getSMSAPIKEY();
        $this->SMSSENDER = Catabatic_Helper::getSMSSENDER();
        $this->SMSFORMAT = Catabatic_Helper::getSMSFORMAT();
        $this->BITLYLOGIN = 'gpurwar';
        $this->BITLYAPIKEY = 'R_c1c94b5c789249d5a59d585bc0e7ef80';

        /*         * ******************************** */
    }

    public function previewHotelResultAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $type = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('type')));
        $strdecode = @$this->getDec($uid);
        if (isset($mid) && !empty($mid)) {
            if (isset($type) && !empty($type)) {
                $typedecode = @$this->getDec($type);
                $proposalList = $this->_crmcusttravelplan->GetPublicProposalWithHotelListByPlanId($mid, $pid);
            } else {
                $proposalListAPI = $this->_crmcusttravelplan->GetPublicProposalWithHotelList($mid, $pid);
                $proposalInvetoryList = $this->_crmcusttravelplan->GetPublicProposalWithInventoryHotelList($mid);
                $proposalList = array_merge($proposalListAPI, $proposalInvetoryList);
                //$proposalList = array_unique($proposalList);
            }

            //echo "<pre>";print_r($proposalListAPI);die;
            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($mid) . '/pid/' . base64_encode($pid) . '/uid/' . base64_encode($uid) . '');
                exit;
            }
            $strdecode = explode(':', $strdecode);
            $CustomerSysId = @$proposalList[0]['CustomerSysId'];
            //echo $strdecode[0]."/".intval($CRMCustSysId).":".$strdecode[2]."/".intval($proposalId);
            if ((@$strdecode[0] != intval($CustomerSysId)) || (@$strdecode[2] != intval($mid))) {
                //$this->view->strmismatch="Already booked this proposal or Some thing went wrong.Please contact to administrator";
                //echo "Already booked this proposal or Some thing went wrong.Please contact to administrator";
                $this->_redirect("/proposal/preview-hotel-result-view/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type));
                die;
            }

            $this->view->uid = $uid;
            $sessionLogin_user = new Zend_Session_Namespace('sessionLogin_user');
            //echo "<pre>";print_r($proposalList);die;
            //$sessionLogin_user->intLoggedinUserAgencySysId=$proposalList[0]['AgencySysId'];  please remove comment from this lime and comment next line to remove static data
            $sessionLogin_user->intLoggedinUserAgencySysId = $proposalList[0]['AgencySysId'];
            $objHotel = new Travel_Model_TblBuyHotel();
            $this->view->markupAgency = $objHotel->getAgencyMarkup();
            //$sessionLogin_user->intLoggedinUserAgencySysId='';
            //print_r($sessionLogin_user->intLoggedinUserAgencySysId);
            $this->view->proposalList = $proposalList;
            $this->view->proposalId = $mid;
            //$leadId=$proposalId;
            $leadId = $proposalList[0]['TPSysId'];
            //code for hotel modify search
            $getLeadlist = $this->_crmcusttravelplan->GetPublicPageLeadList($CustomerSysId, $proposalList[0]['AgencySysId'], $leadId);
            //echo "<pre>"; print_r($getLeadlist);die;
            if (isset($getLeadlist[0]['hotelFromDate']) && !empty($getLeadlist[0]['hotelToDate'])) {
                $fromDate = $getLeadlist[0]['hotelFromDate']->format('Y-m-d');
                $toDate = $getLeadlist[0]['hotelToDate']->format('Y-m-d');
                // input format should be 206-03-25
                $totalDays = Zend_Controller_Action_HelperBroker::getStaticHelper('DateFormat')->calculateNoOfDays($fromDate, $toDate);
            }
            $roomjsonarray = json_decode($getLeadlist[0]['RoomMemInfoJson'], 1);
            //echo "<pre>";print_r($roomjsonarray);die;
            for ($d = 1; $d <= count($roomjsonarray); $d++) {
                $getLeadlist[0]['hotelTotalRooms'] = count($roomjsonarray);
                $getLeadlist[0]['memberDetails'][] = array('AdultPax' => $roomjsonarray[$d]['adult'], 'ChildPax' => $roomjsonarray[$d]['child']['childcount'], 'ChildsAge' => @$roomjsonarray[$d]['child']['childage']);
            }
            $getLeadlist[0]['searchType'] = 'CRMHOTELSEARCH';
            $getLeadlist[0]['TPSysId'] = $leadId;
            $getLeadlist[0]['TPIntSysId'] = isset($getLeadlist[0]['TPIntSysId']) ? $getLeadlist[0]['TPIntSysId'] : '';
            $objCity = new Travel_Model_TblCity();
            $objCity->intCityId = isset($getLeadlist[0]['hotelXrefCityId']) ? $getLeadlist[0]['hotelXrefCityId'] : '';
            $cityList = $objCity->getCityList();
            $hoteltbbcityid = '';
            //print_r($cityList);die;
            if (!empty($cityList)) {
                $hoteltbbcityid = $cityList[0]['TBBCityId'];
            }
            $getLeadlist[0]['hidden_selected_hotel_id'] = $hoteltbbcityid;
            $getLeadlist[0]['hotelFromDateSession'] = isset($getLeadlist[0]['hotelFromDate']) ? $getLeadlist[0]['hotelFromDate']->format('d-M-y') : '';
            $getLeadlist[0]['customername'] = isset($getCustomerDetail['FullName']) ? $getCustomerDetail['FullName'] : '';
            $getLeadlist[0]['emailID'] = isset($getCustomerDetail['EmailId']) ? $getCustomerDetail['EmailId'] : '';
            $getLeadlist[0]['customerId'] = $CustomerSysId;
            $getLeadlist[0]['hotelToDateSession'] = isset($getLeadlist[0]['hotelToDate']) ? $getLeadlist[0]['hotelToDate']->format('d-M-y') : '';
            $getLeadlist[0]['hotelCountryCode'] = isset($getLeadlist[0]['Countries']) ? $getLeadlist[0]['Countries'] : '';
            $getLeadlist[0]['totalDays'] = isset($totalDays) ? $totalDays : 0;
            //echo "<pre>";print_r($getLeadlist);die;
            /* $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
              $hotelSearchSession->hotelSearchSession=$getLeadlist; */
            $this->view->leadDetail = $getLeadlist;
            //end of code for modify
            //create session for grn hotel search query

            $totalMemberCount = Zend_Controller_Action_HelperBroker::getStaticHelper('ArrayCalculation')->calculateArrayValues($getLeadlist[0]['memberDetails']);
            //end of grn hotel session
            //customer detail
            $tpID = $leadId;
            if (isset($CustomerSysId) && !empty($CustomerSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpID);

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID, $proposalList[0]['AgentSysId']) : array();
                $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($tpID);
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $getLeadlist[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($proposalList[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($proposalList[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($mid);
            //echo "<pre>";print_r($getAgencyDetail);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                $emailId = trim($agentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'proposalViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $agentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type));
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');

                //$bodyText='Customer open your proposal' .$this->view->baseUrl("/proposal/preview-hotel-result/mid/".base64_encode($mid)."/pid/".base64_encode($pid)."/uid/".base64_encode($uid)."/type/".base64_encode($type));
                //$bodyText='Customer open your proposal' .$this->view->baseUrl("/proposal/preview-hotel-result/mid/".base64_encode($mid)."/pid/".base64_encode($pid)."/uid/".base64_encode($uid)."/type/".base64_encode($type));
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $params['arrSMSStatisticsType'] = $arrSMSStatisticsType[0];
                $params['arrEmailStatisticsType'] = $arrEmailStatisticsType[2];
                $params['TPSysId'] = $proposalList[0]['TPSysId'];
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => @$params['arrEmailStatisticsType'], // 3 For resend Proposals
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification
                $getAgentDetails = $this->_crmcusttravelplan->getAgentDetails(trim($proposalList[0]['AgentSysId']));

                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['hotelCityTitle']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetails['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetails['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($agentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                $bitly_response = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom')->getSmallLinkFromBitlyAPI($link, $this->BITLYLOGIN, $this->BITLYAPIKEY);
                if ($bitly_response['errorCode'] == 0) {
                    $link = $bitly_response['results'][$link]['shortUrl'];
                }
                $AgentFirstName = trim($agentDetail['FirstName']) . ' ' . trim($agentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['hotelCityTitle'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                //                $massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['hotelCityTitle'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;
                // Added By Amit For SMS Count...
                $arrSMSStatistics = array(
                    "TPSysId" => isset($params['TPSysId']) ? $params['TPSysId'] : 0,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => isset($params['AgencySysId']) ? $params['AgencySysId'] : 0,
                    "AgentSysId" => isset($params['AgentSysId']) ? $params['AgentSysId'] : 0,
                    "Title" => $massage,
                    "Source" => isset($params['arrSMSStatisticsType']) ? $params['arrSMSStatisticsType'] : 1, // 2 Resend Proposals (Bulk)
                    "Status" => '',
                    "RefSysId" => '',
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                //print_r($arrSMSStatistics);
                // Added By AmitFor SMS Count Ends...
                //$resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //echo $errorMessage."/".print_r($resultVal)."/".$massage."/".$mobile_no;
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $mid;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end


            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
    }

    public function previewHotelResultInvAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $type = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('type')));
        $strdecode = @$this->getDec($uid);
        $TblPackage = new Travel_Model_TblPackage();
        if (isset($mid) && !empty($mid)) {

            /* For Inv Hotel */
            $InvHotelDetails = $this->_crmcusttravelplan->GetTravelPlanCustomerInvHotelDetails($pid, 0);
            //            echo "<pre>";print_r($InvHotelDetails);die;
            /* For Inv Hotel */
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $InvHotelDetailsArray = array();
            foreach ($InvHotelDetails as $key => $value) {
                $InvHotelDetailsArray['AgentSysId'] = $value['AgentSysId'];
                $InvHotelDetailsArray['TPSysId'] = $value['TPSysId'];
                $InvHotelDetailsArray['MasterTPSysId'] = $value['MasterTPSysId'];
                $InvHotelDetailsArray['PlanBookingId'] = $value['PlanBookingId'];
                $InvHotelDetailsArray['AgencySysId'] = $value['AgencySysId'];
                $InvHotelDetailsArray['CustomerSysId'] = $value['CustomerSysId'];
                $InvHotelDetailsArray['PlanType'] = $value['PlanType'];
                $InvHotelDetailsArray['SourcePlaces'] = $value['SourcePlaces'];
                $InvHotelDetailsArray['SourcePlaceSysId'] = $value['SourcePlaceSysId'];
                $InvHotelDetailsArray['StartDate'] = $value['StartDate'];
                $InvHotelDetailsArray['ValidTill'] = $value['ValidTill'];
                $InvHotelDetailsArray['hotelFromDate'] = $value['hotelFromDate'];
                $InvHotelDetailsArray['hotelToDate'] = $value['hotelToDate'];
                $InvHotelDetailsArray['hotelTotalNights'] = $value['hotelTotalNights'];
                $InvHotelDetailsArray['TotalCost'] = $value['TotalCost'];
                $InvHotelDetailsArray['NetPrice'] = $value['NetPrice'];
                $InvHotelDetailsArray['RoomInfoJson'] = $value['RoomInfoJson'];
                $InvHotelDetailsArray['hotelName'] = $value['hotelName'];
                $InvHotelDetailsArray['Cities'] = $value['Cities'];
                $InvHotelDetailsArray['SpecialRequest'] = $value['SpecialRequest'];
                $InvHotelDetailsArray['AccoSysId'] = $value['AccoSysId'];
                $InvHotelDetailsArray['EmailId'] = $value['EmailId'];
                $InvHotelDetailsArray['Contacts'] = $value['Contacts'];
                $InvHotelDetailsArray['FirstName'] = $value['FirstName'];
                $InvHotelDetailsArray['Salutation'] = $value['Salutation'];
                $InvHotelDetailsArray['LastName'] = $value['LastName'];
                $InvHotelDetailsArray['hotelAddress'] = $value['hotelAddress'];
                $InvHotelDetailsArray['PrimaryContactNo'] = $value['PrimaryContactNo'];
                $InvHotelDetailsArray['DisplayName'] = $value['DisplayName'];
                $InvHotelDetailsArray['B2bDisplayName'] = ($value['IsB2BProposal'] == 1) ? $value['DisplayName'] : '';
                $InvHotelDetailsArray['CustomerDetails'] = trim(trim($ARR_SALUTION[$value['Salutation']]) . ' ' . trim($value['FirstName']) . ' ' . trim($value['LastName']));
                $RoomFromDateN = $value['RoomFromDate']->format('Y-m-d');
                $RoomToDateN = $value['RoomToDate']->format('Y-m-d');
                $datetime1 = new DateTime($RoomFromDateN);
                $datetime2 = new DateTime($RoomToDateN);
                $interval = $datetime1->diff($datetime2);
                $totalNights = (int) $interval->format('%a');

                $RoomFromDate = $value['RoomFromDate']->format('d M y');
                $RoomToDate = $value['RoomToDate']->format('d M y');
                $InvHotelDetailsArray['RoomDetail'][$RoomFromDateN]['RoomFromDate'] = $RoomFromDate;
                $InvHotelDetailsArray['RoomDetail'][$RoomFromDateN]['RoomToDate'] = $RoomToDate;
                $InvHotelDetailsArray['RoomDetail'][$RoomFromDateN]['RoomNights'] = $totalNights;
                $InvHotelDetailsArray['RoomDetail'][$RoomFromDateN]['RoomDetail'][$value['MappingSysId']] = [
                    'RoomTitle' => trim($value['EconomyTypeTitle']),
                    'MealPlanTitle' => trim($value['MealPlanTypeTitle']),
                    'Adult' => trim($value['Adult']),
                    'Child' => trim($value['Child']),
                    'Infent' => trim($value['Infent']),
                    'RoomFromDate' => $RoomFromDate,
                    'RoomToDate' => $RoomToDate,
                ];

                $InvHotelDetailsArray['MemberList'][$value['MemberSysId']]['MEMBERTitle'] = trim($ARR_SALUTION[$value['MEMBERTitle']]);
                $InvHotelDetailsArray['MemberList'][$value['MemberSysId']]['MEMBERFirstName'] = trim($value['MEMBERFirstName']);
                $InvHotelDetailsArray['MemberList'][$value['MemberSysId']]['MEMBERLastName'] = trim($value['MEMBERLastName']);
            }
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($InvHotelDetailsArray['AgentSysId']);

            $this->view->getAgentDetail = $agentDetail;
            $this->view->InvHotelDetailsArray = $InvHotelDetailsArray;
            $PlanTypeArr = array(11, 10);
            $addonsData = $TblPackage->getTravelPlanAddonServicesMultipleIds($InvHotelDetails[0]['AgencySysId'], $pid, $PlanTypeArr);
            $this->view->addonsData = $addonsData;
            //            echo "<pre>";print_r();die;
        }
    }

    public function customerChatPublicPageAction() {
        $this->view->layout()->disableLayout();
        //$this->_helper->viewRenderer->setNoRender(true);
        $CRMCustSysId = $this->getRequest()->getParam('cid') ? $this->_HtmlPurifier->filter($this->getRequest()->getParam('cid')) : '';
        $leadId = $this->getRequest()->getParam('id') ? $this->_HtmlPurifier->filter($this->getRequest()->getParam('id')) : '';
        $CRMCustSysId = base64_decode($CRMCustSysId);
        $leadId = base64_decode($leadId);
        if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
            $getChatHostoryDetail = $this->_crmcusttravelplan->GetCustomerChatHistoryDetails($leadId, 'ASC');
            $this->view->type = 'viewCustomerChatPublicPage';
            $this->view->id = $leadId;
            $this->view->cid = $CRMCustSysId;
            $this->view->data = $getChatHostoryDetail;
            $this->render('ajax-html');
        }
    }

    //function for api
    public function getHotelDetailApiAction() {
        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();
        if ($this->_request->isXmlHttpRequest()) {
            $resultIndex = $this->getRequest()->getParam('resultIndex');
            $hotelCode = $this->getRequest()->getParam("hotelCode");
            $userip = $this->getRequest()->getParam('userip');
            $tokenid = $this->getRequest()->getParam('tokenid');
            $traceid = $this->getRequest()->getParam('traceid');
            $tpid = $this->getRequest()->getParam('tpid');
            $curency = $this->getRequest()->getParam('curency');
            $markupty = $this->getRequest()->getParam('markupty');
            $markupAg = $this->getRequest()->getParam('markupAg');
            $objApi = new Travel_Model_ApiIntegration();
            $hotelInfo = $objApi->getHotelInfoWithoutDb($resultIndex, $hotelCode, $userip, $tokenid, $traceid);
            $hotelInfo['tpid'] = $tpid;
            $hotelInfo['tpidEncode'] = base64_encode($tpid);
            $session_hotelinfo = new Zend_Session_Namespace('HOTELINFO');
            $session_hotelinfo = $hotelInfo;
            //echo "<pre>";print_r($session_hotelinfo);die;
            //$selectedHotelResults = new Zend_Session_Namespace('selectedHotelResults');
            //$selectedHotelResults->selectedHotelResults=$hotelInfo;
            //print_r($hotelInfo);
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpid);
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            $hotelRoomD = $objApi->getHotelRoomDetail($userip, $tokenid, $traceid, $resultIndex, $hotelCode);
            //echo "<pre>";print_r($hotelRoomD);die;
            $session_hotel_room_detail = new Zend_Session_Namespace('HOTEL_ROOM_DETAIL');
            $session_hotel_room_detail = $session_hotel_room_detail;
            //get hotel aminities
            $objAminity = new Travel_Model_TblAmenities();
            $hotelAminity = $objAminity->getHotlAmenitiesforPopupApi($hotelCode);
            $hotelInfo['hotelAminity'] = $hotelAminity;
            //end of hotel aminities
            //add markup for hotel in price
            if (isset($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails']) && count($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails']) > 0) {
                $getCurrencyObj = new Travel_Model_TblCurrency();
                $getAccomRoomInfoObj = new Travel_Model_TblICAccomdationRoom();
                $updatedate = date('Y-m-d H:i:s');
                $J = 1;
                for ($i = 0; $i < count($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails']); $i++) {
                    $fetchRoomResult = $getAccomRoomInfoObj->GetAccomRoomDetail($travelPlanDetail[0]['hotelAccoSysId'], $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'], $J);
                    //print_r($fetchRoomResult);
                    if (count($fetchRoomResult) == 0) {
                        $getCurrencyObj->strCurrencySymbol = $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['CurrencyCode'];
                        $HelperCurrency = $getCurrencyObj->getCurrencyTypes();
                        $CurrencyType = $HelperCurrency[0]['CurrencyType'];
                        $AccomRoomInfoArray = array(
                            'AccomSysId' => $travelPlanDetail[0]['hotelAccoSysId'],
                            'SourceSysId' => $travelPlanDetail[0]['ICSourceSysId'],
                            'Title' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeName']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeName'] : '',
                            'TokenId' => $travelPlanDetail[0]['TokenId'],
                            'TraceId' => $travelPlanDetail[0]['TraceId'],
                            'RoomIndex' => $J,
                            'Amenities' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Amenities'][0]) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Amenities'][0] : '',
                            'RoomNumber' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'] : '',
                            'Qty' => 1,
                            'CurrencyType' => !empty($CurrencyType) ? $CurrencyType : '',
                            'PublishedFare' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['PublishedPrice']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['PublishedPrice'] : '0',
                            'Commission' => 0,
                            'RoomType' => 0,
                            'EconomyType' => 0,
                            'BedType' => 0,
                            'PaxCount' => 0,
                            'IsPetAllow' => 0,
                            'Location' => '',
                            'MaxPetAllow' => 0,
                            'AllowChild' => 0,
                            'AllowInfant' => 0,
                            'MaxPaxCount' => 0,
                            'MaxAllowChild' => 0,
                            'MaxAllowInfant' => 0,
                            'MealPlanType' => 0,
                            'AminitiesMask' => '',
                            'InclustionOptionsMask' => '',
                            'OtherDetails' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0]) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0] : '',
                            'RoomTypeCode' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'] : '',
                            'RatePlanCode' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlanCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlanCode'] : '',
                            'RatePlanName' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlan']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlan'] : '',
                            'CancellationPolicy' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['CancellationPolicy']) ? addslashes($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['CancellationPolicy']) : '',
                            'UpdatedDate' => $updatedate,
                            'CreateDate' => $updatedate,
                            'IsApproved' => 1,
                            'IsActive' => 1,
                            'IsDelete' => 0
                        );
                        $getAccomRoomInfoObj->addAccomRoomInfo($AccomRoomInfoArray);
                    } else {
                        $AccomRoomInfoArrayUpdate = array(
                            'Title' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeName']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeName'] : '',
                            'Amenities' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0]) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0] : '',
                            'TokenId' => $travelPlanDetail[0]['TokenId'],
                            'TraceId' => $travelPlanDetail[0]['TraceId'],
                            'Qty' => 1,
                            'CurrencyType' => !empty($CurrencyType) ? $CurrencyType : '',
                            'PublishedFare' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['PublishedPrice']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['PublishedPrice'] : '0',
                            'OtherDetails' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0]) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Inclusions'][0] : '',
                            'RoomNumber' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'] : '',
                            'RoomTypeCode' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'] : '',
                            'RatePlanCode' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlanCode']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlanCode'] : '',
                            'RatePlanName' => !empty($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlan']) ? $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RatePlan'] : '',
                            'UpdatedDate' => $updatedate,
                        );
                        //echo "<pre>";print_r($AccomRoomInfoArrayUpdate);
                        $where = "AccomSysId = " . $travelPlanDetail[0]['hotelAccoSysId'] . " AND RoomIndex=" . $J . " AND RoomNumber='" . $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['RoomTypeCode'] . "'";
                        $lastId = $getAccomRoomInfoObj->updateAccomRoomInfo($AccomRoomInfoArrayUpdate, $where);
                    }




                    $minprice = $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['RoomPrice'];
                    $minprice = $minprice * (count($roomjsonarray));
                    if ($curency > 0) {
                        //$priceMarAdd=Zend_Controller_Action_HelperBroker::getStaticHelper('CurrencyConversion')->InvToCurrency($curency,$markupty, $markupAg,$minprice);
                        $priceMarAdd = $minprice;
                    } else {
                        $priceMarAdd = $markupAg + $minprice;
                    }
                    $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['RoomPrice'] = $minprice;
                    $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['RoomPriceWithMarkUp'] = $priceMarAdd;
                    $hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails'][$i]['Price']['RoomPriceDb'] = $travelPlanDetail[0]['NetCost'];
                    $J++;
                }
            }
            //end of markup
            //echo "<pre>";print_r($hotelRoomD['GetHotelRoomResult']['HotelRoomsDetails']);die;
            $detail = array('hotelInfo' => $hotelInfo, 'hotelRoomD' => $hotelRoomD, 'noOfRooms' => count($roomjsonarray));
            echo json_encode($detail);
            exit;
        }
    }

    public function bookSelectedRoomAction() {
        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();
        if ($this->_request->isXmlHttpRequest()) {
            $objApi = new Travel_Model_ApiIntegration();
            $selectArr = $this->getRequest()->getParam('roomDetail');
            $tokenId = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->authenticateAPI();
            //$_SESSION['authenticationtokenId'] = $tokenId;
            $resultIndex = $this->getRequest()->getParam('resultIndex');
            $tpid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
            //$noOfRooms = $this->getRequest()->getParam('noOfRooms');$selectArr['noOfRooms']
            $noOfRooms = $selectArr['noOfRooms'];
            //echo "<pre>";print_r($selectArr);die;
            $roomindexID = $this->getRequest()->getParam('roomindexID');
            $noofRes = count($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails']);
            $cancellationPolicy = urldecode($this->getRequest()->getParam('cancellationPolicy'));
            $cancellationPolicyObj = new Travel_Model_TblICAccomdationRoomCancellationPolicy();
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpid);
            //update room index in accom table
            $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
            $updatetravelplan = array(
                'RoomIndex' => $roomindexID,
                'UpdateDate' => date('Y-m-d H:i:s')
            );
            $updatetravelPlanAccom = $this->_crmcusttravelplanAccom->UpdateTravelPlanAccomData($updatetravelplan, $where);
            //end of update room index in accom table

            $cancellationPolicyDecode = json_decode($cancellationPolicy, true);
            // print_r($cancellationPolicyDecode);
            $valExistRT = $cancellationPolicyObj->ChkCancellationPolicyExist($travelPlanDetail[0]['hotelAccoSysId'], $roomindexID);
            $chargeType = (isset($cancellationPolicyDecode[0]['ChargeType']) && !empty($cancellationPolicyDecode[0]['ChargeType'])) ? 2 : 1;
            $getCurrencyObj = new Travel_Model_TblCurrency();
            $getCurrencyObj->strCurrencySymbol = @$cancellationPolicyDecode[0]['Currency'];
            $HelperCurrency = $getCurrencyObj->getCurrencyTypes();
            $Charge = @$cancellationPolicyDecode[0]['Charge'];
            $Fromdate = date('Y-m-d H:i:s', strtotime(@$cancellationPolicyDecode[0]['FromDate']));
            $Todate = date('Y-m-d H:i:s', strtotime(@$cancellationPolicyDecode[0]['ToDate']));
            //echo "<pre>";print_r($HelperCurrency);die;
            $Currency = $HelperCurrency[0]['CurrencyType'];
            $ItemSysId = 0;
            $j = $roomindexID - 1;
            if (count($valExistRT) == 0) {
                if (!empty($cancellationPolicyDecode)) {
                    $arrayCancelPlo = array(
                        'AccoSysid' => $travelPlanDetail[0]['hotelAccoSysId'],
                        'ItemSysId' => $ItemSysId,
                        'roomindex' => $roomindexID,
                        'RoomNumber' => $selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomTypeCode'],
                        'ChargeType' => $chargeType,
                        'Currency' => $Currency,
                        'Charge' => $Charge,
                        'Fromdate' => $Fromdate,
                        'Todate' => $Todate,
                        'createdOn' => date('Y-m-d H:i:s'),
                        'UpdatedOn' => date('Y-m-d H:i:s'),
                        'IsActive' => '1',
                        'IsMarkForDel' => '0'
                    );
                    //echo "";print_r($arrayCancelPlo);
                    $cancellationPolicyObj->addRoomCancellationPolicy($arrayCancelPlo);
                }
            } else {
                if (!empty($cancellationPolicyDecode)) {
                    $arrayCancelPlo = array(
                        'ItemSysId' => $ItemSysId,
                        'ChargeType' => $chargeType,
                        'RoomNumber' => $selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomTypeCode'],
                        'Currency' => $Currency,
                        'Charge' => $Charge,
                        'Fromdate' => $Fromdate,
                        'Todate' => $Todate,
                        'UpdatedOn' => date('Y-m-d H:i:s')
                    );
                    $whereCn = "AccoSysid='" . $travelPlanDetail[0]['hotelAccoSysId'] . "' AND roomindex='" . $roomindexID . "'";
                    $cancellationPolicyObj->UpdateRoomCancellationPolicy($arrayCancelPlo, $whereCn);
                }
            }
            $rommwisePrice = (trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['RoomPrice'], ".\r\n") / $noOfRooms);
            for ($i = 0; $i < $noOfRooms; $i++) {

                //if ($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomIndex'] == $roomindexID) {
                $rooms[] = array(
                    "RoomIndex" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomIndex'], ".\r\n"),
                    "RoomTypeCode" => htmlspecialchars($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomTypeCode']),
                    "RatePlanCode" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RatePlanCode'], ".\r\n"),
                    "RoomTypeName" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomTypeName'], ".\r\n"),
                    "BedTypeCode" => null,
                    "BedTypeDescription" => '',
                    "SmokingPreference" => "0",
                    "Supplements" => null,
                    'Price' => array(
                        "CurrencyCode" => "INR",
                        "RoomPrice" => (float) $rommwisePrice,
                        "Tax" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['Tax'], ".\r\n"),
                        "ExtraGuestCharge" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['ExtraGuestCharge'], ".\r\n"),
                        "ChildCharge" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['ChildCharge'], ".\r\n"),
                        "OtherCharges" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['OtherCharges'], ".\r\n"),
                        "Discount" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['Discount'], ".\r\n"),
                        "PublishedPrice" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['PublishedPrice'], ".\r\n"),
                        "PublishedPriceRoundedOff" => (int) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['PublishedPriceRoundedOff'], ".\r\n"),
                        "OfferedPrice" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['OfferedPrice'], ".\r\n"),
                        "OfferedPriceRoundedOff" => (int) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['OfferedPriceRoundedOff'], ".\r\n"),
                        "AgentCommission" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['AgentCommission'], ".\r\n"),
                        "AgentMarkUp" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['AgentMarkUp'], ".\r\n"),
                        "ServiceTax" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['ServiceTax'], ".\r\n"),
                        "TDS" => (float) trim($selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['Price']['TDS'], ".\r\n")
                    )
                );
                //}
                // $j++;
            }
            $objGest = new Travel_Model_Tbltbbcuser();

            $datahRoom = array(
                "EndUserIp" => $_SERVER['REMOTE_ADDR'],
                "TokenId" => $tokenId,
                "TraceId" => trim($selectArr['hotelRoomD']['GetHotelRoomResult']['TraceId']),
                "ResultIndex" => $resultIndex,
                "HotelCode" => $selectArr['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelCode'],
                "HotelName" => $selectArr['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelName'],
                "GuestNationality" => 'IN',
                "NoOfRooms" => $noOfRooms,
                "ClientReferenceNo" => "0",
                "IsVoucherBooking" => "true",
                "HotelRoomsDetails" => $rooms
            );
            $blockRoom = new Zend_Session_Namespace('blockRoom');
            $blkRoom = $objApi->blockRoom($datahRoom);
            $blockRoom->blockRoom = $blkRoom;
            $intErrorCode = $blkRoom['BlockRoomResult']['Error']['ErrorCode'];
            $strErrorMessage = $blkRoom['BlockRoomResult']['Error']['ErrorMessage'];
            //echo "<pre>";print_r($datahRoom);print_r($blkRoom);
            if ($intErrorCode == 0) {
                //update in accom selected room table
                $HotelNorms = $blkRoom['BlockRoomResult']["HotelNorms"];
                if (isset($HotelNorms) && !empty($HotelNorms)) {
                    $getAccomRoomInfoObj = new Travel_Model_TblICAccomdationRoom();
                    $AccomRoomInfoArrayUpdate = array(
                        'HotelNorms' => $HotelNorms,
                        'UpdatedDate' => date('Y-m-d H:i:s'),
                    );
                    //echo "<pre>";print_r($AccomRoomInfoArrayUpdate);
                    $where = "AccomSysId = " . $travelPlanDetail[0]['hotelAccoSysId'] . " AND RoomIndex=" . $roomindexID . " AND RoomNumber='" . $selectArr['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'][$j]['RoomTypeCode'] . "'";
                    $updateRoomInfo = $getAccomRoomInfoObj->updateAccomRoomInfo($AccomRoomInfoArrayUpdate, $where);
                }
                //end of update in accom selected room table

                $roomDetail->roomDetail['hotelRoomD']['GetHotelRoomResult']['HotelRoomsDetails'] = $blkRoom['BlockRoomResult']['HotelRoomsDetails'];
                $roomDetail->roomDetail['hotelInfo'] = $selectArr['hotelInfo'];
                $roomDetail->roomDetail['blkRoom'] = $blkRoom;
                $response['ERROR']['CODE'] = $intErrorCode;
                $response['ERROR']['MESSAGE'] = $strErrorMessage;
                $response['HOTELINFO']['API_SOURCE_ID'] = 3;
                $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
                $sessionPreBookingHotelDetails->params = $response;
                $msg = 'success';
                echo json_encode(array('status' => 'success'));
            } else {
                $response['ERROR']['CODE'] = $intErrorCode;
                $response['ERROR']['MESSAGE'] = $strErrorMessage;
                $response['HOTELINFO']['API_SOURCE_ID'] = 3;
                $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
                $sessionPreBookingHotelDetails->params = $response;
                echo json_encode(array('status' => 'failed'));
            }
        } else {
            echo json_encode(array('status' => 'failed'));
        }
        exit;
    }

    public function displaySelectedRoomAction() {
        $this->view->layout()->disableLayout();

        $selectedroomDetails = new Zend_Session_Namespace('selectedroom_hotelinfo');
        $roomDetail = new Zend_Session_Namespace('roomDetail');
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        $tpid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));

        //HOTELAPITYPE
        //echo "<pre>"; print_r($selectedroomDetails->selectedroom_hotelinfo);die;
        $planId = $tpid;
        if (isset($planId) && !empty($planId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($planId);
            if ($travelPlanDetail[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($mid) . '/pid/' . base64_encode($tpid) . '/uid/' . base64_encode($uid) . '');
                exit;
            }
            $strdecode = $this->getDec($uid);
            $strdecode = explode(':', $strdecode);
            if ((@$strdecode[0] != intval($travelPlanDetail[0]['CustomerSysId'])) || (@$strdecode[2] != intval($mid))) {
                echo "Please try again";
                die;
            }
            $this->view->uid = $uid;
            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $this->view->tpid = $tpid;

            $travelPlanItenObj = new Travel_Model_CRM_CustomerTravelItenary();
            $travelPlanItenaryId = $travelPlanItenObj->GetItenaryId($planId);
            //$travelPlanAccomObj=new Travel_Model_TblCustomerTravelAccom();
            //$travelPlanAccomId=$travelPlanAccomObj->GetAccomId($travelPlanAccomObj[0]['TPIntSysId']);
            $this->view->travelPlanAccomId = $travelPlanItenaryId['TPIntSysId'];
            //echo "<pre>"; print_r($travelPlanDetail);
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $hotelGuestDetails = new Zend_Session_Namespace('hotelGuestDetails');
            $hotelGuestDetails->hotelGuestDetails = $guestDetails;
            //echo "<pre>";print_r($guestDetails);die;
            //$guestDetails=$crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //customer detail
            $tpID = $planId;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            if (isset($CustomerSysId) && !empty($CustomerSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $travelPlanDetail;

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history


            $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            $adultPax = 0;
            $childPax = 0;
            if (!empty($roomjsonarray)) {
                foreach ($roomjsonarray as $res) {
                    $adultPax += $res['adult'];
                    $childPax += $res['child']['childcount'];
                }
            }
            //echo "<pre>";print_r($roomjsonarray);die;
            if ($API_SOURCE_ID == "3") {
                if (!empty($roomjsonarray)) {
                    $intRoomPrice = 0;
                    $intTax = 0;
                    //foreach ($arrHotelRoomsDetails as $roomsDetailsVal){
                    $strCurrencyCode = 'INR';
                    //$strCurrencyCode = $travelPlanDetail[0]['CurrencyCode'];
                    $intRoomPrice = $travelPlanDetail[0]['NetCost'];
                    $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                    //}
                }

                $this->view->intRoomPrice = $intRoomPrice = round($intRoomPrice);
                $this->view->intTax = $intTax = !empty($intTax) ? round($intTax) : 0;
                //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
                $this->view->intRoomCount = $intRoomCount = 1;
                $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
                $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;

                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $this->view->intTotalGTXTaxAmount = $intTotalGTXTaxAmount = $travelPlanDetail[0]['Taxes']; //gtx total tax included all markup taxes;
                //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
                $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = $intTotalAmountForApplicableNights + $intTax + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $intTotalGTXTaxAmount;
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalGTXTaxAmount'] = $intTotalGTXTaxAmount;
                $markuparray['intTax'] = $intTax;
                $serviceTaxhelper_GTX = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intGTXMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $serviceTaxhelper_AgentService = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intAgentMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $serviceTaxhelper_Agency = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intAgencyMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $markuparray['GTXServiceTaxAmount'] = @$serviceTaxhelper_GTX['serviceTaxAmount'];
                $markuparray['AgentServiceTaxAmount'] = @$serviceTaxhelper_AgentService['serviceTaxAmount'];
                $markuparray['AgentsCustomServiceTaxAmount'] = @$serviceTaxhelper_Agency['serviceTaxAmount'];
                $markuparray['Pax'] = $adultPax + $childPax;
                $markuparray['SupplierSourceStr'] = 'API';
            } else if ($API_SOURCE_ID == "4") {
                $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
                //echo "<pre>";print_r($sessionPreBookingHotelDetails->params);die;
                $NO_OF_ROOMS = count($roomjsonarray);
                $ARR_ROOMPRICE = $travelPlanDetail[0]['NetCost'];

                $NO_OF_CHILD = $childPax;
                $NO_OF_ADULTS = $adultPax;
                if (count($ARR_ROOMPRICE) > 0 && !empty($ARR_ROOMPRICE)) {
                    $intRoomPrice = 0;
                    $intTax = 0;
                    $intServiceFee = 0;
                    //for ($i = 1; $i<=$NO_OF_ROOMS; $i++){
                    $strCurrencyCode = 'INR';
                    $intRoomPrice += $travelPlanDetail[0]['NetCost'];
                    $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                    //$intServiceFee += $ARR_ROOMPRICE['SERVICE_FEE'];
                    //}
                }

                $this->view->intRoomPrice = $intRoomPrice = round($intRoomPrice);
                $this->view->intTax = $intTax = !empty($intTax) ? round($intTax) : 0;
                $this->view->intRoomCount = $intRoomCount = 1;
                //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
                $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
                $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $this->view->intTotalGTXTaxAmount = $intTotalGTXTaxAmount = $travelPlanDetail[0]['Taxes']; //gtx total tax included all markup taxes;
                $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
                //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = $intTotalAmountForApplicableNights + $intTax + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $intTotalGTXTaxAmount;
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalGTXTaxAmount'] = $intTotalGTXTaxAmount;
                $markuparray['intTax'] = $intTax;
                $serviceTaxhelper_GTX = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intGTXMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $serviceTaxhelper_AgentService = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intAgentMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $serviceTaxhelper_Agency = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getServiceTaxByAgencyId($intAgencyMarkUpAmount, 'H', $travelPlanDetail[0]['AgencySysId']);
                $markuparray['GTXServiceTaxAmount'] = isset($serviceTaxhelper_GTX['serviceTaxAmount']) ? $serviceTaxhelper_GTX['serviceTaxAmount'] : 0;
                $markuparray['AgentServiceTaxAmount'] = isset($serviceTaxhelper_AgentService['serviceTaxAmount']) ? $serviceTaxhelper_AgentService['serviceTaxAmount'] : 0;
                $markuparray['AgentsCustomServiceTaxAmount'] = isset($serviceTaxhelper_Agency['serviceTaxAmount']) ? $serviceTaxhelper_Agency['serviceTaxAmount'] : 0;
                $markuparray['Pax'] = $adultPax + $childPax;
                $markuparray['SupplierSourceStr'] = 'API';
            }


            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->hotelInfo = $roomDetail->roomDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->selectedroom_hotelinfo = $selectedroomDetails->selectedroom_hotelinfo;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->markuparray = $markuparray;
            $this->view->travelPlanDetail = $travelPlanDetail;
        }
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $ARR_CUSTOMER_RELATION = unserialize(ARR_CUSTOMER_RELATION);
        $this->view->ARR_CUSTOMER_RELATION = $ARR_CUSTOMER_RELATION;
    }

    public function updatePublicPageCustomerAction() {
        $this->view->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $customerId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('cid')));
        $AgencySysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('AgencySysId')));
        $data = $this->getRequest()->getParam('data');
        if (isset($customerId) && !empty($customerId)) {
            parse_str($data, $res);
            $res = $this->_HtmlPurifier->filterArray($res);
            if (!empty($res)) {
                $fname = $res['firstName'];
                $lname = $res['lastName'];
                $customerEmail = $res['emailId'];
                $mobilenumber = $res['mobilNo'];
                $salution = $res['initial'];
                $checkboxVal = $res['update_customer'];
                $date = date('Y-m-d H:i:s');
                if ($checkboxVal == 1) {
                    if (isset($customerEmail) && !empty($customerEmail)) {
                        $customerDetails = $this->_crmcustomerObj->ChkEmailWithResponse($customerEmail, $AgencySysId);
                    }
                    if (isset($mobilenumber) && !empty($mobilenumber)) {
                        $customerDetails = $this->_crmcustomerObj->ChkMobileWithResponse($mobilenumber, $AgencySysId, '', '');
                    }
                    if (!empty($customerDetails)) {
                        $where = "CustomerSysId = " . $customerId . " AND AgencySysId = " . $AgencySysId;
                        $agencyuserArray = array(
                            'EmailId' => $customerEmail,
                            'Title' => $salution,
                            'Contacts' => $mobilenumber,
                            'UserName' => $fname . '' . $lname,
                            'FirstName' => $fname,
                            'LastName' => $lname,
                            'UpdateDate' => $date
                        );
                        $this->_agencycustomerObj = new Travel_Model_CRM_AgencyCustomer();
                        $agencyCustomerData = $this->_agencycustomerObj->UpdateAgencyCustomer($agencyuserArray, $where);
                        echo json_encode(array('status' => 'success'));
                    }
                    exit;
                } else {
                    echo json_encode(array('status' => 'failed'));
                    exit;
                }
                echo json_encode(array('status' => 'success'));
                exit;
            } else {
                echo json_encode(array('status' => 'failed'));
                exit;
            }
        } else {
            echo json_encode(array('status' => 'failed'));
            exit;
        }
        exit;
    }

    public function bookingHotelReviewCustomerAction() {
        $this->view->layout()->disableLayout();

        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $tpid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $selectedroomDetails = new Zend_Session_Namespace('selectedroom_hotelinfo');
        $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
        $roomDetail = new Zend_Session_Namespace('roomDetail');
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "2";
        $this->view->strTrxType = "H";
        //echo "<pre>"; print_r($hotelSearchSession->hotelSearchSession);die;
        $planId = $tpid;
        if (isset($planId) && !empty($planId)) {
            $travelPlanItenObj = new Travel_Model_CRM_CustomerTravelItenary();
            $travelPlanItenaryId = $travelPlanItenObj->GetItenaryId($planId);
            $travelPlanAccomObj = new Travel_Model_CRM_CustomerTravelPlanAccom();
            $travelPlanAccomDetail = $travelPlanAccomObj->GetAccomDetailById($travelPlanItenaryId['TPIntSysId']);
            $this->view->travelPlanAccomDetail = $travelPlanAccomDetail['SpecialRequest'];
            //print_r($travelPlanAccomDetail);
            $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
            //$travelPlanDetail=$travelplanObj->GetTravelPlanCustomerDetails($planId);
            $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetailsPax($planId);
            //echo "<pre>"; print_r($travelPlanDetail);
            if (isset($travelPlanDetail[0]['StatusType']) && $travelPlanDetail[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($mid) . '/pid/' . base64_encode($tpid) . '/uid/' . base64_encode($uid) . '');
                exit;
            }

            $strdecode = $this->getDec($uid);
            $strdecode = explode(':', $strdecode);
            if ((@$strdecode[0] != intval(@$travelPlanDetail[0]['CustomerSysId'])) || (@$strdecode[2] != intval($mid)) || (count($travelPlanDetail) == 0)) {
                echo "Please try again";
                die;
            }
            $this->view->uid = $uid;
            $this->view->tpid = $tpid;
            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];

            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);

            // for wallet use
            $this->view->strReturnURL = "http://" . $_SERVER['SERVER_NAME'] . "/proposal/make-public-page-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanItenaryId['TPIntSysId']);
            $this->view->strErrorURL = "http://" . $_SERVER['HTTP_HOST'] . "/proposal/make-public-page-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanItenaryId['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            $adultPax = 0;
            $childPax = 0;
            if (!empty($roomjsonarray)) {
                foreach ($roomjsonarray as $res) {
                    $adultPax += $res['adult'];
                    $childPax += $res['child']['childcount'];
                }
            }

            if ($API_SOURCE_ID == "3") {
                $arrHotelRoomsDetails = $selectedroomDetails->selectedroom_hotelinfo;
                if (!empty($roomjsonarray)) {
                    $intRoomPrice = 0;
                    $intTax = 0;
                    //foreach ($arrHotelRoomsDetails as $roomsDetailsVal){
                    $strCurrencyCode = 'INR';
                    $intRoomPrice += $travelPlanDetail[0]['NetCost'];
                    $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                    //}
                }

                $this->view->intRoomPrice = $intRoomPrice = $intRoomPrice;
                //$this->view->intTax =  $intTax = !empty($intTax)?round($intTax):0;
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intRoomCount = $intRoomCount = 1;
                //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
                $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
                $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
                //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round($intTotalAmountForApplicableNights + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount);
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = $adultPax + $childPax;
                $markuparray['SupplierSourceStr'] = 'API';
                $markuparray['MarketPlaceId'] = 1; //b2b or b2c
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['Discounts'];
                ; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
            } else if ($API_SOURCE_ID == "4") {
                $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
                $NO_OF_ROOMS = count($roomjsonarray);
                $ARR_ROOMPRICE = $travelPlanDetail[0]['NetPrice'];

                $NO_OF_CHILD = $childPax;
                $NO_OF_ADULTS = $adultPax;

                if (count($ARR_ROOMPRICE) > 0 && !empty($ARR_ROOMPRICE)) {
                    $intRoomPrice = 0;
                    $intTax = 0;
                    $intServiceFee = 0;
                    //for ($i = 1; $i<=$NO_OF_ROOMS; $i++){
                    $strCurrencyCode = 'INR';
                    $intRoomPrice += $travelPlanDetail[0]['NetCost'];
                    $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                    //$intServiceFee += $ARR_ROOMPRICE['SERVICE_FEE'];
                    //}
                }

                $this->view->intRoomPrice = $intRoomPrice = ($intRoomPrice);
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intRoomCount = $intRoomCount = 1;
                //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
                $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
                $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;

                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = $intTotalAmountForApplicableNights + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount;
                //echo $intGrandPayableAmount;die;
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = $adultPax + $childPax;
                $markuparray['SupplierSourceStr'] = 'API';
                $markuparray['MarketPlaceId'] = 1; //b2b or b2c
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['Discounts'];
                ; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
            }
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->guid = $this->GUID();
            //echo "<pre>";print_r($markuparray);
            //echo $travelPlanDetail[0]['AgentSysId'].','. $this->view->guid.','. $intGrandPayableAmount.','. $AgencySysId.','. $travelPlanDetail[0]['TPSysId'].','.$travelPlanDetail[0]['CRMCustSysId'].','.$encryptMarkUpData;
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($this->intLoggedinUserAgencySysId, $this->view->guid);

            //end of wallet use
            //echo "<pre>";print_r($guestDetails);die;
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //customer detail
            $tpID = $planId;
            $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
            if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $travelPlanDetail;

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CRMCustSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->hotelInfo = $roomDetail->roomDetail;
            $this->view->hotelSearchInfo = $hotelSearchSession->hotelSearchSession;
            $this->view->guestDetail = $guestDetails;
            $this->view->selectedroom_hotelinfo = $selectedroomDetails->selectedroom_hotelinfo;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $ARR_CUSTOMER_RELATION = unserialize(ARR_CUSTOMER_RELATION);
            $this->view->ARR_CUSTOMER_RELATION = $ARR_CUSTOMER_RELATION;
            $this->view->ARR_SALUTION = $ARR_SALUTION;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function updateCustomerSpecialRequestAction() {
        $this->view->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $leadId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('leadId')));
        $TPIntSysId = $this->_HtmlPurifier->filter($this->getRequest()->getParam('TPIntSysId'));
        $specialRequest = $this->_HtmlPurifier->filter($this->getRequest()->getParam('specialRequest'));
        $mobilNo = $this->_HtmlPurifier->filter($this->getRequest()->getParam('mobilNo'));
        $emailId = $this->_HtmlPurifier->filter($this->getRequest()->getParam('emailId'));
        $salutation = $this->_HtmlPurifier->filter($this->getRequest()->getParam('salutation'));
        $custrelation = $this->_HtmlPurifier->filter($this->getRequest()->getParam('custrelation'));
        $isUpdateCustomer = $this->_HtmlPurifier->filter($this->getRequest()->getParam('isUpdateCustomer'));
        $firstName = $this->_HtmlPurifier->filter($this->getRequest()->getParam('firstName'));
        $lastName = $this->_HtmlPurifier->filter($this->getRequest()->getParam('lastName'));
        $customerid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('cid')));
        $AgencySysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('aid')));
        $CRMCustSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('CRid')));
        if (isset($leadId) && !empty($leadId)) {
            $date = date('Y-m-d H:i:s');
            $accomArray = array(
                'SpecialRequest' => addslashes($specialRequest),
                'UpdateDate' => $date
            );
            $where = "TPIntSysId = " . $TPIntSysId;
            $accomObj = new Travel_Model_CRM_CustomerTravelPlanAccom();
            $customerRcord = $accomObj->UpdateTravelPlanAccom($accomArray, $where);

            if (isset($isUpdateCustomer) && $isUpdateCustomer == 1) {
                $agencyCustomerArray = array(
                    'FirstName' => addslashes(trim($firstName)),
                    'LastName' => addslashes(trim($lastName)),
                    'Title' => trim($salutation),
                    //'Relation'=>trim($custrelation),
                    'UpdateDate' => $date
                );
                $whereAgencyCus = "CustomerSysId = " . $customerid;
                $agencyCustomeObj = new Travel_Model_CRM_AgencyCustomer();
                $customerRcordUpdate = $agencyCustomeObj->UpdateAgencyCustomer($agencyCustomerArray, $whereAgencyCus);
            }
            //add agency members for trvel plan

            $this->_travelPaxObj = new Travel_Model_CRM_CustomerTravelPlanPax();
            $paxMembers = $this->_travelPaxObj->GetTravelPlanRoomPaxInfo($leadId, $customerid);
            $objGest = new Travel_Model_Tbltbbcuser();

            $chkcustomerMember = $objGest->getCustomerAndMembersDetailsAll(trim($mobilNo), trim($emailId), trim($salutation), trim($custrelation), trim($firstName), trim($lastName), $AgencySysId);
            //echo "<pre>";print_r($chkcustomerMember);die;
            $this->_agencycustomermemberObj = new Travel_Model_CRM_CustomerMember();
            if (count($chkcustomerMember) == 0) {

                //$chkcustomerMemberSelf=$objGest->getMembersSelfDetails(0,trim($customerid),$AgencySysId);
                //print_r($chkcustomerMemberSelf);die;

                $arrCustMem = array(
                    'AgencySysId' => $AgencySysId,
                    'CustomerSysId' => $customerid,
                    'EmailId' => trim($emailId),
                    'Title' => trim($salutation),
                    'Relation' => trim($custrelation),
                    'Logo' => ' ', 'IsfromSM' => '0', 'SMTypeId' => '0', 'SMId' => '0', 'UserId' => '0', 'IsEmployee' => '0',
                    'Contacts' => trim($mobilNo),
                    'JoinDate' => trim($date), 'ExitDate' => EMPTY_DATE,
                    'UserName' => ' ', 'FirstName' => trim($firstName),
                    'LastName' => trim($lastName),
                    'Designation' => ' ', 'Password' => ' ', 'RandStr' => ' ',
                    'PasswordExpiryDate' => EMPTY_DATE,
                    'IsPswExpire' => '0', 'OtherEmail' => ' ', 'SecondaryEmail' => ' ',
                    'LastLoginTime' => EMPTY_DATE,
                    'IsLogInNow' => '0',
                    'CreatedByUserSysId' => $customerid,
                    'RandomCode' => ' ',
                    'Gender' => '0',
                    'UserNickName' => ' ',
                    'UserPicPath' => '',
                    'ContactNo1' => '0',
                    'ContactNo2' => '0',
                    'HomePhone' => '0',
                    'SecondaryPhone' => '0',
                    'UserDetails' => ' ',
                    'Address' => ' ',
                    'CitySysId' => '0',
                    'StateOrZoneSysId' => '0',
                    'CountrySysId' => '0',
                    'PinCode' => '0',
                    'SecondaryAddress' => ' ',
                    'Fax' => '0',
                    'MacIp' => '0',
                    'SpeakingLangSysId' => '0',
                    'Signature' => ' ',
                    'UpdateDate' => $date,
                    'RegisterDate' => $date,
                    'IsApproved' => '1',
                    'IsActive' => '1',
                    'IsMarkForDelete' => '0'
                );

                $MemberSysId = $this->_agencycustomermemberObj->addCustomerMember($arrCustMem);

                /* if(count($chkcustomerMemberSelf)==0){
                  }else{
                  $arrCustMemUpdate = array(
                  'EmailId' => trim($emailId),
                  'Title' => trim($salutation),
                  'Contacts' => trim($mobilNo),
                  'FirstName' =>trim($firstName),
                  'LastName' =>trim($lastName),
                  'UpdateDate' => $date,
                  );
                  $whereMember = "CustomerSysId = " . $customerid." AND Relation=".$custrelation;
                  $MemberSysId=$this->_agencycustomermemberObj->updateCustomerMember($arrCustMemUpdate,$whereMember);
                  } */
                //echo "<pre>";print_r($memberRecod)."/".print_r($paxMembers);
            } else {
                $MemberSysId = $chkcustomerMember[0]['MemberSysId'];
                $arrCustMemUpdate = array(
                    'Relation' => trim($custrelation),
                    'UpdateDate' => $date,
                );
                $whereMember = "MemberSysId = " . $MemberSysId;
                //echo "<pre>";print_r($arrCustMemUpdate);die;
                $MemberSysId = $this->_agencycustomermemberObj->updateCustomerMember($arrCustMemUpdate, $whereMember);
            }
            $MemberSysId = isset($MemberSysId) ? $MemberSysId : $paxMembers['MemberSysId'];
            $arrCustMemPax = array(
                'TPSysId' => $leadId,
                'CustomerSysId' => $customerid,
                'MemberSysId' => ($MemberSysId) ? $MemberSysId : 0,
                'UpdateDate' => $date,
                'IsApproved' => '1',
                'IsActive' => '1',
                'IsMarkForDelete' => '0'
            );
            //print_r($arrCustMemPax);die;
            $paxRecod = $this->_travelPaxObj->addCustomerTravelPlanPax($arrCustMemPax);
            /* if(count($paxMembers)==0){
              $MemberSysId=$chkcustomerMember[0]['MemberSysId'];
              $arrCustMemPax = array(
              'TPSysId' => $leadId,
              'CustomerSysId' => $customerid,
              'MemberSysId' => $MemberSysId,
              'UpdateDate' => $date,
              'IsApproved' => '1',
              'IsActive' => '1',
              'IsMarkForDelete' => '0'
              );
              $paxRecod=$this->_travelPaxObj->addCustomerTravelPlanPax($arrCustMemPax);
              }else{
              $MemberSysId=$paxMembers['MemberSysId'];
              $arrCustMem = array(
              'MemberSysId' => $MemberSysId,
              'UpdateDate' => $date,
              );
              $whereMem = "TPSysId = " . $leadId;
              $paxRecod=$this->_travelPaxObj->UpdateCustomerTravelPlanPax($arrCustMem,$whereMem);
              } */
            echo json_encode(array('status' => 'success'));
            exit;
        } else {
            echo json_encode(array('status' => 'failed'));
            exit;
        }
        exit;
    }

    public function updateHotelExpiredSessionApiAction() {
        $this->view->layout()->disableLayout();
        $hotelCode = $this->getRequest()->getParam('hotelCode') ? $this->_HtmlPurifier->filter($this->getRequest()->getParam('hotelCode')) : '';
        $traceid = $this->getRequest()->getParam('traceid') ? $this->_HtmlPurifier->filter($this->getRequest()->getParam('traceid')) : '';
        $planId = $this->getRequest()->getParam('tpid') ? $this->_HtmlPurifier->filter($this->getRequest()->getParam('tpid')) : '';
        $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($planId);
        // echo "<pre>";print_r($travelPlanDetail);
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        // echo "<pre>";print_r($hotelSearchSession->hotelSearchSession);die;
        $tokenId = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->authenticateAPI();
        $memberDetails = $hotelSearchSession->hotelSearchSession[0]['memberDetails'];
        $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], true);
        $adultPax = 0;
        $childPax = 0;

        $arrMemberDetails = array();
        $i = 0;
        if (!empty($RoomMemInfoJson)) {
            foreach ($RoomMemInfoJson as $res) {
                $adultPax += $res['adult'];
                $childPax += $res['child']['childcount'];
                $arrMemberDetails[$i]['NoOfAdults'] = $res['adult'];
                $arrMemberDetails[$i]['NoOfChild'] = $res['child']['childcount'];
                if ($res['child']['childcount'] > 0) {
                    $arrChildAge = explode(",", $res['child']['childage']);
                    $arrMemberDetails[$i]['ChildAge'] = $arrChildAge;
                } else {
                    $arrMemberDetails[$i]['ChildAge'] = NULL;
                }
                $i++;
            }
        }

        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $currencySymbol = $customhelper->GetCurrencyByCurrencyType($travelPlanDetail[0]['CurrencyType']);

        $datah = array(
            "CheckInDate" => $travelPlanDetail[0]['StartDate']->format('d/m/Y'),
            "NoOfNights" => $travelPlanDetail[0]['hotelTotalNights'],
            "CountryCode" => "IN",
            "CityId" => '130443', //$travelPlanDetail[0]['hotelXrefCityId'],
            "ResultCount" => null,
            "PreferredCurrency" => trim($currencySymbol['Symbol']),
            "GuestNationality" => "IN",
            "NoOfRooms" => count($RoomMemInfoJson),
            "RoomGuests" => $arrMemberDetails,
            'PreferredHotel' => $travelPlanDetail[0]['hotelName'],
            'MaxRating' => $travelPlanDetail[0]['Stars'],
            'MinRating' => $travelPlanDetail[0]['Stars'],
            'ReviewScore' => null,
            'IsNearBySearchAllowed' => 'false',
            'EndUserIp' => $_SERVER['REMOTE_ADDR'],
            'TokenId' => $tokenId
        );

        //echo "<pre>";print_r($datah);
        $apiRes1 = array();
        $urlHotel = TBO_HOTEL_API_SEARCH_URL;

        $data_stringh = json_encode($datah);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $urlHotel);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_stringh);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($data_stringh)
        ));
        $outputH = curl_exec($ch);
        $response = json_decode($outputH, true);
        ///echo "<pre>";print_r($outputH);exit;
        $intResponseStatus = $response['HotelSearchResult']['ResponseStatus'];
        $intErrorCode = $response['HotelSearchResult']['Error']['ErrorCode'];

        if ($intResponseStatus == 1 && $intErrorCode == 0) {
            $objHotel = new Travel_Model_TblBuyHotel();
            $strTraceId = $response['HotelSearchResult']['TraceId'];
            $intAPICityId = $response['HotelSearchResult']['CityId'];
            $arrHotelResultsAll = $response['HotelSearchResult']['HotelResults'];
            //echo "<pre>";	print_r($arrHotelResultsAll);
            $matchKey = array_search($hotelCode, array_column($arrHotelResultsAll, 'HotelCode'));
            $arrHotelResults = $arrHotelResultsAll[$matchKey];
            $selectedHotelResults = new Zend_Session_Namespace('selectedHotelResults');
            $selectedHotelResults->selectedHotelResults = $arrHotelResults;

            //echo "<pre>";print_r($arrHotelResults);die;
            //echo "<pre>";print_r($arrHotelResults);die;
            $CreateDate = date('Y-m-d H:i:s');
            $intHotelCityId = $travelPlanDetail[0]['hotelXrefCityId'];
            if (trim($arrHotelResults["HotelCode"]) == $hotelCode) {
                $res = array('status' => 'success', 'resultIndex' => trim($arrHotelResults['ResultIndex']), 'hotelCode' => trim($arrHotelResults["HotelCode"]), 'tokenid' => trim($tokenId), 'traceid' => trim($strTraceId));
            } else {
                $res = array('status' => 'failed', 'ErrorCode' => @$ErrorCode, 'ErrorMessage' => 'Hotel not found or already booked', 'strTraceId' => $strTraceId, 'noOfRooms' => count($RoomMemInfoJson));
            }
            echo json_encode($res);
            exit;
        } else {
            $status = $response['HotelSearchResult']['ResponseStatus'];
            $ErrorCode = $response['HotelSearchResult']['Error']['ErrorCode'];
            $ErrorMessage = $response['HotelSearchResult']['Error']['ErrorMessage'];
            $strTraceId = $response['HotelSearchResult']['TraceId'];
            $res = array('status' => $status, 'ErrorCode' => @$ErrorCode, 'ErrorMessage' => $ErrorMessage, 'strTraceId' => $strTraceId, 'noOfRooms' => count($RoomMemInfoJson));
            echo json_encode($res);
            exit;
        }
    }

    public function makePublicPagePaymentAction() {

        //echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $intXRefTrxNo = $this->getRequest()->getParam('txnid');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $planId = $this->getRequest()->getParam('TpSysId');
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        $hotelGuestDetails = new Zend_Session_Namespace('hotelGuestDetails');
        $selectedHotelResults = new Zend_Session_Namespace('selectedHotelResults');
        $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
        $roomDetail = new Zend_Session_Namespace('roomDetail');
        $blockRoom = new Zend_Session_Namespace('blockRoom');
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetailsPax($planId);
        $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
        $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
        $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
        $uid = base64_encode($this->getEnc($uid));
        $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
        //echo "<pre>"; print_r($blockRoom->blockRoom);
        /* echo "<pre>";
          print_r($hotelSearchSession->hotelSearchSession);
          print_r($hotelGuestDetails->hotelGuestDetails);
          print_r($selectedHotelResults->selectedHotelResults);
          print_r($roomDetail->roomDetail);
          die; */
        $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
        //print_r($RoomMemInfoJson);
        $adultPax = 0;
        $childPax = 0;
        if (!empty($RoomMemInfoJson)) {
            for ($g = 1; $g <= count($RoomMemInfoJson); $g++) {
                $adultPax += $RoomMemInfoJson[$g]['adult'];
                $childPax += $RoomMemInfoJson[$g]['child']['childcount'];
            }
        }
        $totalPax = $adultPax + $childPax;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $createDate = date('Y-m-d H:i:s');
        //print_r($ARR_SALUTION);
        if ($travelPlanDetail[0]['Salutation'] > 0) {
            $strTitle = $ARR_SALUTION[trim($travelPlanDetail[0]['MEMBERTitle'])];
        } else {
            $strTitle = 'Mr.';
        }
        // if ($strTrxStatus == "success" && !empty($intXRefTrxNo)) {
        if ($API_SOURCE_ID == "4") { //echo "HI"; exit;
            if ($strTrxStatus == "success") {

                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['PAXES']['DETAILS']['TITLE'] = $strTitle;
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['PAXES']['DETAILS']['NAME'] = $travelPlanDetail[0]['MEMBERFirstName'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['PAXES']['DETAILS']['LASTNAME'] = $travelPlanDetail[0]['MEMBERLastName'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['PAXES']['DETAILS']['TYPE'] = "AD";

                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['TITLE'] = $strTitle;
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['NAME'] = $travelPlanDetail[0]['MEMBERFirstName'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['LASTNAME'] = $travelPlanDetail[0]['MEMBERLastName'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['EMAIL_ID'] = $travelPlanDetail[0]['EmailId'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['PHONE_NO'] = $travelPlanDetail[0]['Contacts'];
                $sessionPreBookingHotelDetails->params['GRN_PRE_BOOKING_DATA']['HOLDER']['DETAILS']['NATIONALITY'] = $travelPlanDetail[0]['Countries'];

                $roominfojson = isset($travelPlanDetail[0]['RoomMemInfoJson']) ? json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1) : array();
                $memberDetails = array();
                if (!empty($roominfojson)) {
                    for ($d = 1; $d <= count($roominfojson); $d++) {
                        $memberDetails[] = array('AdultPax' => $roominfojson[$d]['adult'], 'ChildPax' => $roominfojson[$d]['child']['childcount'], 'ChildsAge' => @$roominfojson[$d]['child']['childage']);
                    }
                }


                $sessionPreBookingHotelDetails->params['memberDetails'] = $memberDetails;
                //echo $strTrxStatus."<pre>";print_r($sessionPreBookingHotelDetails->params);

                $response = Zend_Controller_Action_HelperBroker::getStaticHelper("Hotel")->apiHotelBooking($sessionPreBookingHotelDetails->params);
                //echo "<pre>";print_r($travelPlanDetail);print_r($response);die;
                //echo "<pre>"; print_r($response); die;
                $ERROR_CODE = $response['ERROR']['CODE'];
                $ERROR_MESSAGE = $response['ERROR']['MESSAGE'];
                if (empty($ERROR_CODE) && empty($ERROR_MESSAGE)) {
                    $arrHotelBookingResponse = $response['BOOKING_RESPONSE'];
                    if (isset($arrHotelBookingResponse) && !empty($arrHotelBookingResponse)) {
                        $GRNBOOKING_DETAILS = new Zend_Session_Namespace('GRNBOOKING_DETAILS');
                        $GRNBOOKING_DETAILS->GRNBOOKING_DETAILS = $response;
                        //print_r($GRNBOOKING_DETAILS->GRNBOOKING_DETAILS);die;
                        $objBuyHotel = new Travel_Model_TblBuyHotel();
                        $dataBooking = array(
                            "APIBookingRes" => json_encode($arrHotelBookingResponse)
                        );

                        if (!empty($planId)) {
                            if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                                $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                                $disableAlltravelplan = array(
                                    'StatusType' => 10,
                                    'UpdateDate' => $createDate
                                );
                                $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                            }
                            $where = "TPSysId = " . $planId;
                            $updatetravelplan = array(
                                'StatusType' => 17,
                                'UpdateDate' => $createDate
                            );
                            $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                            // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                            $statusArray = $customHelper->changeQueryStatusByProposal();
                            $querystatus = $statusArray[17];
                            if (isset($querystatus) && !empty($querystatus)) {
                                $whereQuery = "TPSysId = " . $MasterTPSysId;
                                $updatetravelplanquery = array(
                                    'StatusType' => $querystatus,
                                    'UpdateDate' => $createDate
                                );
                                $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                            }

                            //update accom table with bookingid
                            $whereHotel = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                            $updatetravelplanHotel = array(
                                'XRefBookingId' => $response['BOOKING_RESPONSE']['booking_id'] . '/' . $response['BOOKING_RESPONSE']['booking_reference'],
                                'UpdateDate' => $createDate
                            );
                            $crmcusttravelplanAccomObj = new Travel_Model_CRM_CustomerTravelPlanAccom();
                            $updatetravelPlanHotel = $crmcusttravelplanAccomObj->UpdateTravelPlanAccom($updatetravelplanHotel, $whereHotel);
                        }
                        $msgArray = array('status' => $arrHotelBookingResponse['status'], "CODE" => $CODE, 'MESSAGE' => 'Your payment is success');
                        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                        $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                        if ($response['BOOKING_RESPONSE']['booking_id'] != '') {
                            //send email to customer
                            $html = new Zend_View();
                            $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                            //$URL='cid:'.$agencyCustomerDetails['CustomerSysId']."@@"."aid:".$agencysysID;
                            //$encryptData=$this->getEnc($URL);
                            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
                            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                            $html->assign('type', 'HotelBookingPaymentConfirmationEmail');
                            $html->assign('data', $travelPlanDetail);
                            $html->assign('getAgentDetail', $getAgentDetail);
                            $html->assign('agencyDetails', $getAgencyDetail);
                            $html->assign('ARR_SALUTION', $ARR_SALUTION);
                            $html->assign('bookingresponse', $response);
                            $html->assign('hotelsource', 4);
                            //$html->assign('URL', $encryptData);
                            $paymentconfirmText = $html->render('email-template.phtml');
                            $html->assign('type', 'HotelBookingConfirmationEmailText');
                            $html->assign('data', $travelPlanDetail);
                            $html->assign('getAgentDetail', $getAgentDetail);
                            $html->assign('agencyDetails', $getAgencyDetail);
                            $html->assign('ARR_SALUTION', $ARR_SALUTION);

                            $bookingConfirmText = $html->render('email-template.phtml');

                            $aConfig = $this->getInvokeArg('bootstrap')->getOptions();
                            $this->smtpUserName = $aConfig['smtpUserName'];
                            $this->smtpPassword = $aConfig['smtpPassword'];
                            $this->smtpPort = $aConfig['smtpPort'];
                            $this->smtpHost = $aConfig['smtpHost'];
                            $this->fromEmail = $aConfig['fromEmail'];
                            $this->fromName = $aConfig['fromName'];
                            $emailId = '' . trim($travelPlanDetail[0]['EmailId']) . '';
                            $emailData1 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                            $emailData2 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                            try {
                                //echo "success";
                                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                                $arrEmailStatistics = array(
                                    "TPSysId" => $planId,
                                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                                    "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                                    "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                                    "Title" => $paymentconfirmText,
                                    "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                                    "Status" => 0,
                                    "RefSysId" => "",
                                    "RefSysStatus" => "",
                                    "CreateDate" => date('Y-m-d H:i:s')
                                );
                                $arrEmailStatistics2 = array(
                                    "TPSysId" => $planId,
                                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                                    "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                                    "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                                    "Title" => $bookingConfirmText,
                                    "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                                    "Status" => 0,
                                    "RefSysId" => "",
                                    "RefSysStatus" => "",
                                    "CreateDate" => date('Y-m-d H:i:s')
                                );
                                $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                                $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                                $msg = "success";
                            } catch (Exception $err) {
                                //print_r($err, true);
                                $msg = "failed";
                            }
                            //end of send email to customer
                        }
                    } else {
                        /* if(isset($MasterTPSysId) && $MasterTPSysId > 0){	
                          $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                          $disableAlltravelplan = array(
                          'StatusType' => 10,
                          'UpdateDate' => $createDate
                          );
                          $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                          } */
                        $where = "TPSysId = " . $planId;
                        $updatetravelplan = array(
                            'StatusType' => 7,
                            'UpdateDate' => $createDate
                        );
                        $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                        // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:27 AM
                        $statusArray = $customHelper->changeQueryStatusByProposal();
                        $querystatus = $statusArray[7];
                        if (isset($querystatus) && !empty($querystatus)) {
                            $whereQuery = "TPSysId = " . $MasterTPSysId;
                            $updatetravelplanquery = array(
                                'StatusType' => $querystatus,
                                'UpdateDate' => $createDate
                            );
                            $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                        }


                        $msgArray = array('status' => 'failed', "CODE" => '', 'MESSAGE' => 'Your payment is success.Hotel Booking is pending.Please Wait');
                        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                        $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                    }
                    $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
                    exit;
                } else {
                    $msgArray = array('status' => "failed", "CODE" => $CODE, 'MESSAGE' => $ERROR_MESSAGE);
                    $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                    $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                    $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
                    exit;
                }
            } else {
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $msgArray = array('status' => "Payment unsuccessful");
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
                exit;
            }
        } else {
            if ($strTrxStatus == "success") {

                /* for ($i = 0; $i < 2; $i++) {
                  $hotelPassenger[] = array(
                  "Title" => $strTitle,
                  "FirstName" => trim($travelPlanDetail[0]['FirstName']),
                  "Middlename" => "",
                  "LastName" => trim($travelPlanDetail[0]['LastName']),
                  "Phoneno" => trim($travelPlanDetail[0]['Contacts']),
                  "Email" => trim($travelPlanDetail[0]['EmailId']),
                  "PaxType" => 1,
                  "LeadPassenger" => true,
                  "Age" => 0,
                  "PassportNo" => "J3578965",
                  "PassportIssueDate" => "0001-01-01T00:00:00",
                  "PassportExpDate" => "0001-01-01T00:00:00"
                  );
                  } */

                $noOfRooms = count($RoomMemInfoJson);
                $j = 0;
                $n = 1;
                //$rommwisePrice=(trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['RoomPrice'], ".\r\n")/$noOfRooms);
                for ($i = 0; $i < $noOfRooms; $i++) {

                    $hotelPassenger = array();
                    $adultPaxTotal = $RoomMemInfoJson[$n]['adult'];
                    $childPaxTotal = $RoomMemInfoJson[$n]['child']['childcount'];
                    $totalAdCh = $adultPaxTotal + $childPaxTotal;
                    for ($m = 0; $m < $adultPaxTotal; $m++) {
                        $hotelPassenger[] = array(
                            "Title" => $strTitle,
                            "FirstName" => trim($travelPlanDetail[0]['MEMBERFirstName']),
                            "Middlename" => "",
                            "LastName" => trim($travelPlanDetail[0]['MEMBERLastName']),
                            "Phoneno" => trim($travelPlanDetail[0]['Contacts']),
                            "Email" => trim($travelPlanDetail[0]['EmailId']),
                            "PaxType" => 1,
                            "LeadPassenger" => true,
                            "Age" => 0,
                            "PassportNo" => "J3578965",
                            "PassportIssueDate" => "0001-01-01T00:00:00",
                            "PassportExpDate" => "0001-01-01T00:00:00"
                        );
                    }
                    if ($childPaxTotal > 0) {
                        for ($m = 0; $m < $childPaxTotal; $m++) {
                            $hotelPassenger[] = array(
                                "Title" => $strTitle,
                                "FirstName" => trim($travelPlanDetail[0]['MEMBERFirstName']),
                                "Middlename" => "",
                                "LastName" => trim($travelPlanDetail[0]['MEMBERLastName']),
                                "Phoneno" => trim($travelPlanDetail[0]['Contacts']),
                                "Email" => trim($travelPlanDetail[0]['EmailId']),
                                "PaxType" => 2,
                                "LeadPassenger" => true,
                                "Age" => 0,
                                "PassportNo" => "J3578965",
                                "PassportIssueDate" => "0001-01-01T00:00:00",
                                "PassportExpDate" => "0001-01-01T00:00:00"
                            );
                        }
                    }


                    $rooms[] = array(
                        "RoomIndex" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['RoomIndex'], ".\r\n"),
                        "RoomTypeCode" => htmlspecialchars($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['RoomTypeCode']),
                        "RoomTypeName" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['RoomTypeName'], ".\r\n"),
                        "RatePlanCode" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['RatePlanCode'], ".\r\n"),
                        "BedTypeCode" => null,
                        "SmokingPreference" => "0",
                        "Supplements" => null,
                        'Price' => array(
                            "CurrencyCode" => "INR",
                            "RoomPrice" => (float) trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['RoomPrice'], ".\r\n"),
                            "Tax" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['Tax'], ".\r\n"),
                            "ExtraGuestCharge" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['ExtraGuestCharge'], ".\r\n"),
                            "ChildCharge" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['ChildCharge'], ".\r\n"),
                            "OtherCharges" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['OtherCharges'], ".\r\n"),
                            "Discount" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['Discount'], ".\r\n"),
                            "PublishedPrice" => (float) trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['PublishedPrice'], ".\r\n"),
                            "PublishedPriceRoundedOff" => (int) trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['PublishedPriceRoundedOff'], ".\r\n"),
                            "OfferedPrice" => (float) trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['OfferedPrice'], ".\r\n"),
                            "OfferedPriceRoundedOff" => (int) trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['OfferedPriceRoundedOff'], ".\r\n"),
                            "AgentCommission" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['AgentCommission'], ".\r\n"),
                            "AgentMarkUp" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['AgentMarkUp'], ".\r\n"),
                            "ServiceTax" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['ServiceTax'], ".\r\n"),
                            "TDS" => trim($blockRoom->blockRoom['BlockRoomResult']['HotelRoomsDetails'][$j]['Price']['TDS'], ".\r\n")
                        ),
                        "HotelPassenger" => $hotelPassenger
                    );
                    $n++;
                }

                //echo "<pre>";print_r($rooms);
                //call api for hotel room booking details created by Er amit kumar dubey on 22 nov 2016
                $tokenId = Zend_Controller_Action_HelperBroker::getStaticHelper('Flight')->authenticateAPI();
                $datahRoom = array(
                    "ResultIndex" => $selectedHotelResults->selectedHotelResults['ResultIndex'],
                    "HotelCode" => $selectedHotelResults->selectedHotelResults['HotelCode'],
                    "HotelName" => $selectedHotelResults->selectedHotelResults['HotelName'],
                    "GuestNationality" => 'IN',
                    "NoOfRooms" => count($RoomMemInfoJson),
                    "ClientReferenceNo" => 0,
                    "IsVoucherBooking" => true,
                    "HotelRoomsDetails" => $rooms,
                    "EndUserIp" => $_SERVER['REMOTE_ADDR'],
                    "TokenId" => $tokenId,
                    "TraceId" => $blockRoom->blockRoom['BlockRoomResult']['TraceId']
                );

                $objApi = new Travel_Model_ApiIntegration();
                $arrHotelBookingResponse = $objApi->bookRoom($datahRoom);
                //echo "<pre>";print_r($arrHotelBookingResponse);die;
                $objBuyHotel = new Travel_Model_TblBuyHotel();
                $dataBooking = array(
                    "APIBookingRes" => json_encode($arrHotelBookingResponse)
                );
                //print_r($arrHotelBookingResponse);die;
                $strBookingStatus = isset($arrHotelBookingResponse['BookResult']['HotelBookingStatus']) ? $arrHotelBookingResponse['BookResult']['HotelBookingStatus'] : '';
                $strBookingId = $arrHotelBookingResponse['BookResult']['BookingId'];
                $strBookingRef = $arrHotelBookingResponse['BookResult']['BookingRefNo'];
                ///if payment success then update travel plan
                $createDate = date('Y-m-d H:i:s');
                if (!empty($planId)) {
                    //$objBuyHotel->updateBookingDetails($dataBooking,$planId);
                    if ($strBookingStatus == 'Confirmed') {
                        if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                            $whereMaster = "MasterTPSysId = " . $MasterTPSysId;
                            $disableAlltravelplan = array(
                                'StatusType' => 10,
                                'UpdateDate' => $createDate
                            );
                            $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaster);
                        }

                        $where = "TPSysId = " . $planId;
                        $updatetravelplan = array(
                            'StatusType' => 17,
                            'UpdateDate' => $createDate
                        );
                        $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                        // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                        $statusArray = $customHelper->changeQueryStatusByProposal();
                        $querystatus = $statusArray[17];
                        if (isset($querystatus) && !empty($querystatus)) {
                            $whereQuery = "TPSysId = " . $MasterTPSysId;
                            $updatetravelplanquery = array(
                                'StatusType' => $querystatus,
                                'UpdateDate' => $createDate
                            );
                            $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                        }

                        //update accom table with bookingid
                        $whereHotel = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                        $updatetravelplanHotel = array(
                            'XRefBookingId' => $strBookingId . '/' . $strBookingRef,
                            'UpdateDate' => $createDate
                        );
                        $crmcusttravelplanAccomObj = new Travel_Model_CRM_CustomerTravelPlanAccom();
                        $updatetravelPlanHotel = $crmcusttravelplanAccomObj->UpdateTravelPlanAccom($updatetravelplanHotel, $whereHotel);
                        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                        $msgArray = array('status' => "success", 'MESSAGE' => 'Payment successful');
                        $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                        if ($strBookingId != '') {
                            //send email to customer
                            $html = new Zend_View();
                            $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                            //$URL='cid:'.$agencyCustomerDetails['CustomerSysId']."@@"."aid:".$agencysysID;
                            //$encryptData=$this->getEnc($URL);
                            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
                            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                            $html->assign('type', 'HotelBookingPaymentConfirmationEmail');
                            $html->assign('data', $travelPlanDetail);
                            $html->assign('getAgentDetail', $getAgentDetail);
                            $html->assign('agencyDetails', $getAgencyDetail);
                            $html->assign('ARR_SALUTION', $ARR_SALUTION);
                            $html->assign('bookingresponse', []);
                            $html->assign('hotelsource', 3);
                            //$html->assign('URL', $encryptData);
                            $paymentconfirmText = $html->render('email-template.phtml');
                            $html->assign('type', 'HotelBookingConfirmationEmailText');
                            $html->assign('data', $travelPlanDetail);
                            $html->assign('getAgentDetail', $getAgentDetail);
                            $html->assign('agencyDetails', $getAgencyDetail);
                            $html->assign('ARR_SALUTION', $ARR_SALUTION);

                            $bookingConfirmText = $html->render('email-template.phtml');

                            $aConfig = $this->getInvokeArg('bootstrap')->getOptions();
                            $this->smtpUserName = $aConfig['smtpUserName'];
                            $this->smtpPassword = $aConfig['smtpPassword'];
                            $this->smtpPort = $aConfig['smtpPort'];
                            $this->smtpHost = $aConfig['smtpHost'];
                            $this->fromEmail = $aConfig['fromEmail'];
                            $this->fromName = $aConfig['fromName'];
                            $emailId = '' . trim($travelPlanDetail[0]['EmailId']) . '';
                            $emailData1 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                            $emailData2 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                            try {
                                //echo "success";
                                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                                $arrEmailStatistics = array(
                                    "TPSysId" => $planId,
                                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                                    "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                                    "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                                    "Title" => $paymentconfirmText,
                                    "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                                    "Status" => 0,
                                    "RefSysId" => "",
                                    "RefSysStatus" => "",
                                    "CreateDate" => date('Y-m-d H:i:s')
                                );
                                $arrEmailStatistics2 = array(
                                    "TPSysId" => $planId,
                                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                                    "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                                    "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                                    "Title" => $bookingConfirmText,
                                    "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                                    "Status" => 0,
                                    "RefSysId" => "",
                                    "RefSysStatus" => "",
                                    "CreateDate" => date('Y-m-d H:i:s')
                                );
                                $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                                $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                                $msg = "success";
                            } catch (Exception $err) {
                                //print_r($err, true);
                                $msg = "failed";
                            }
                            //end of send email to customer
                        }
                    } else {
                        if (isset($arrHotelBookingResponse['BookResult']['Error']['ErrorMessage']) && !empty($arrHotelBookingResponse['BookResult']['Error']['ErrorMessage'])) {
                            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                            $msgArray = array('status' => "success", 'MESSAGE' => 'Some thing went wrong . ' . $arrHotelBookingResponse['BookResult']['Error']['ErrorMessage']);
                            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                        } else {
                            $where = "TPSysId = " . $planId;
                            $updatetravelplan = array(
                                'StatusType' => 7,
                                'UpdateDate' => $createDate
                            );
                            $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                            // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                            $statusArray = $customHelper->changeQueryStatusByProposal();
                            $querystatus = $statusArray[7];
                            if (isset($querystatus) && !empty($querystatus)) {
                                $whereQuery = "TPSysId = " . $MasterTPSysId;
                                $updatetravelplanquery = array(
                                    'StatusType' => $querystatus,
                                    'UpdateDate' => $createDate
                                );
                                $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                            }

                            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                            $msgArray = array('status' => "success", 'MESSAGE' => 'Payment successful . Booking Pending');
                            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                        }
                    }
                }

                //print_r($msgArray);
                $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
                //}
            } else {
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $msgArray = array('status' => "failed", 'MESSAGE' => 'Payment unsuccessful');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
                exit;
            }
        }
    }

    public function bookingConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $strdecode = @$this->getDec($uid);
        //if(isset($proposalId) && !empty($proposalId)){
        $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetailsPax($pid);
        //echo "<pre>";print_r($travelPlanDetail);
        $strdecode = explode(':', $strdecode);
        $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
        if ((@$strdecode[0] != intval($CRMCustSysId)) || (@$strdecode[1] != intval($pid)) || (@$strdecode[2] != intval($proposalId))) {
            echo "Please try again";
            die;
        }

        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        //customer detail
        $tpID = $pid;
        $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
        $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CRMCustSysId, $travelPlanDetail[0]['AgencySysId'], $tpID);
        $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
        $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
        $adultPax = 0;
        $childPax = 0;
        if (!empty($roomjsonarray)) {
            foreach ($roomjsonarray as $res) {
                $adultPax += $res['adult'];
                $childPax += $res['child']['childcount'];
            }
        }
        if ($API_SOURCE_ID == "3") {
            $intRoomPrice = 0;
            $intTax = 0;
            if (count($roomjsonarray) > 0 && !empty($roomjsonarray)) {

                //foreach ($arrHotelRoomsDetails as $roomsDetailsVal){
                $strCurrencyCode = 'INR';
                //$strCurrencyCode = $travelPlanDetail['Price']['CurrencyCode'];
                $intRoomPrice += $travelPlanDetail[0]['NetCost'];
                $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                //}
            }

            $this->view->intRoomPrice = $intRoomPrice = round($intRoomPrice);
            $this->view->intTax = $intTax = !empty($intTax) ? round($intTax) : 0;
            $this->view->intRoomCount = $intRoomCount = 1;
            //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
            $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
            $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
            $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
            $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
            $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
            $this->view->intTotalGTXTaxAmount = $intTotalGTXTaxAmount = $travelPlanDetail[0]['Taxes']; //gtx total tax included all markup taxes;
            $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
            //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
            $this->view->intGrandPayableAmount = $intGrandPayableAmount = $intTotalAmountForApplicableNights + $intTax + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $intTotalGTXTaxAmount;
        } else if ($API_SOURCE_ID == "4") {
            $NO_OF_ROOMS = count($roomjsonarray);
            $ARR_ROOMPRICE = $travelPlanDetail[0]['NetCost'];

            $NO_OF_CHILD = $childPax;
            $NO_OF_ADULTS = $adultPax;

            if (count($ARR_ROOMPRICE) > 0 && !empty($ARR_ROOMPRICE)) {
                $intRoomPrice = 0;
                $intTax = 0;
                $intServiceFee = 0;
                for ($i = 1; $i <= $NO_OF_ROOMS; $i++) {
                    $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                    $intRoomPrice += $travelPlanDetail[0]['NetCost'];
                    $intTax += $travelPlanDetail[0]['XServiceTaxAmount'];
                }
            }
            $this->view->intRoomPrice = $intRoomPrice = round($intRoomPrice);
            $this->view->intTax = $intTax = !empty($intTax) ? round($intTax) : 0;
            //$this->view->intRoomCount =  $intRoomCount = count($roomjsonarray);
            $this->view->intRoomCount = $intRoomCount = 1;
            $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
            $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
            $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
            $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
            $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
            $this->view->intTotalGTXTaxAmount = $intTotalGTXTaxAmount = $travelPlanDetail[0]['Taxes']; //gtx total tax included all markup taxes;
            //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
            $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
            $this->view->intGrandPayableAmount = $intGrandPayableAmount = $intTotalAmountForApplicableNights + $intTax + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $intTotalGTXTaxAmount;
        }



        if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
            $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpID);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($tpID);
            $getCustomerDetail['userChatExist'] = (is_array($checkCustomerChatExist)) ? count($checkCustomerChatExist) : 0;
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $tpID;
                $chatSenderDetails['AgencySysId'] = $getLeadlist[0]['AgencySysId'];
                $chatSenderDetails['CRMCustSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $getLeadlist[0]['AgentSysId'];
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                $agentDetail = $objAgencyStaff->getUserDetailsById($getLeadlist[0]['AgentSysId']);
                $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $agencyStaffObj = new Travel_Model_TblAgencyStaff();
        $agentDetail = $agencyStaffObj->getUserDetailsById($getLeadlist[0]['AgentSysId']);
        $AgencySysId = $getLeadlist[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $this->view->uid = $uid;
    }

    public function hotelViewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $strdecode = @$this->getDec($uid);
        //if(isset($proposalId) && !empty($proposalId)){
        $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetailsTrx($pid);
        //print_r($travelPlanDetail);die;
        $strdecode = explode(':', $strdecode);
        $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
        if ((@$strdecode[0] != intval($CRMCustSysId)) || (@$strdecode[1] != intval($pid)) || (@$strdecode[2] != intval($mid))) {
            echo "Please try again";
            die;
        }

        //customer detail
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if (isset($CustomerSysId) && !empty($CustomerSysId)) {
            $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($pid);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $pid) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($pid);
            $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($pid, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $pid;
                $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                $chatSenderDetails['CustomerSysId'] = $travelPlanDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $agencyStaffObj = new Travel_Model_TblAgencyStaff();
        $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
    }

    public function hotelVoucherAction() {
        die('coming soon....');
        $this->_helper->layout->disableLayout();
        $mid = (base64_decode($this->getRequest()->getParam('mid')));
        $pid = (base64_decode($this->getRequest()->getParam('pid')));
        $uid = (base64_decode($this->getRequest()->getParam('uid')));
        $HotelProposal = new Gtxwebservices_Model_HotelProposal();
        $HotelVoucher = $HotelProposal->HotelVoucher(['TPSysId' => $pid, 'MasterTPSysId' => $mid]);
        $AgencySysId = $HotelVoucher['HotelData']['AgencySysId'];

        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $this->view->HotelVoucher = $HotelVoucher;
        // echo "<pre>";
        // print_r($HotelVoucher);
        // die;
    }

    public function hotelVoucherNewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));

        $GetHotelBookingDetails = $this->_crmcusttravelplan->GetHotelBookingDetails($pid);

        $AgentSysId = $GetHotelBookingDetails['AgentSysId'];
        $AgencySysId = $GetHotelBookingDetails['AgencySysId'];
        $TPIntSysId = $GetHotelBookingDetails['TPIntSysId'];
        $TPSysId = $GetHotelBookingDetails['TPSysId'];
        $GetHotelBookingRooms = $this->_crmcusttravelplan->GetHotelBookingRooms($TPIntSysId);
        $CustomerMemberDetail = $this->_crmcusttravelplan->getProposalCustomerMemberDetail($TPSysId);

        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($AgentSysId);
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->GetHotelBookingDetails = $GetHotelBookingDetails;
        $this->view->GetHotelBookingRooms = $GetHotelBookingRooms;
        $this->view->CustomerMemberDetail = $CustomerMemberDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        // echo "<pre>";
        // print_r($agentDetail);
        // echo "<pre>";
        // print_r($getAgencyDetail);
        // die;
    }

    public function hotelInvoiceAction() {
        $this->_helper->layout->disableLayout();

        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $strdecode = @$this->getDec($uid);
        //if(isset($proposalId) && !empty($proposalId)){
        $GetTravelPlanType = $this->_crmcusttravelplan->GetTravelPlanType($pid);

        if (isset($GetTravelPlanType['IsHotelOnlyPackage']) && $GetTravelPlanType['IsHotelOnlyPackage'] == 1) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetailsTrx($pid, 'P');
        } else {
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetailsTrx($pid);
        }
        // echo "<pre>";print_r($travelPlanDetail);die;
        $strdecode = explode(':', $strdecode);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if ((@$strdecode[0] != intval($CustomerSysId)) || (@$strdecode[1] != intval($pid)) || (@$strdecode[2] != intval($mid))) {
            echo "Please try again";
            die;
        }
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        //echo "<pre>";print_r($getAgencyDetail);die;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $this->view->getallstatustype = $customhelper->getAllStatusType();
    }

    public function getPackagePdfAction() {
        require_once 'library/tcpdf/tcpdf.php';
        // create new PDF document
        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        // set document information
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('TripsBank');
        $pdf->SetTitle('Package Report');
        $pdf->SetSubject('Package Report');
        $pdf->SetKeywords('TCPDF, PDF, package, tripsbank, proposal');
        // set default header data
        //$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
        // set header and footer fonts
        $pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
        // set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        // set margins
        $pdf->SetMargins(10, 10, 10, true);
        //$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
        // set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        // set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        // set some language-dependent strings (optional)
        if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) {
            require_once(dirname(__FILE__) . '/lang/eng.php');
            $pdf->setLanguageArray($l);
        }
        // ---------------------------------------------------------
        // set font
        //$pdf->SetFont('helvetica', 'B', 10);
        // add a page
        $pdf->AddPage();
        //$pdf->Write(0, 'Total Purchase report', '', 0, 'L', true, 1, false, false, 0);
        //$pdf->SetFont('helvetica', '', 10);
        // -----------------------------------------------------------------------------
        // Table with rowspans and THEAD
        /* 		$tbl = <<<EOD
          EOD;
         */
        $html = new Zend_View();
        $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
        //$html->assign('customerDetails', $getCustomerDetail);
        $bodyText = $html->render('pdf-package.phtml');
        $pdf_folder_path = 'public/pdf/package/'; // path to save the generated PDF
        $pdf->writeHTML($bodyText, true, false, false, false, '');
        // -----------------------------------------------------------------------------
        ob_end_clean();
        //Close and output PDF document
        $pdf->Output($pdf_folder_path . 'package.pdf', 'F'); // for save direct in folder
        //$pdf->Output('test.pdf', 'I'); // for direct open
        //$pdf->Output('test.pdf', 'D'); // for select to save or open
        ob_end_flush();
        echo "Pdf Sent Successfully";
        exit;
        //============================================================+
        // END OF FILE
        //============================================================+
    }

    public function createPackagePdfAction() {
        $this->_helper->layout->disableLayout();
        $TPSysId = $this->_HtmlPurifier->filter($this->_request->getParam('pid'));
        $TPSysId = base64_decode($TPSysId);
        if ($TPSysId > 0) {
            $objPackage = new Travel_Model_TblPackage();
            $flexiPackageList = $objPackage->getFlexiPackageList($TPSysId);
            if (!empty($flexiPackageList)) {
                $flexiPackageItenList = $objPackage->getFlexiPackageItenList($TPSysId);
                // $this->view->flexiPackageList = $flexiPackageList;
                $inclusionMastArray = $objPackage->getPackageInclusionListOrderById();
                //echo "<pre>";print_r($flexiPackageList);die;
                $inclusionArr = $objPackage->getMasking($flexiPackageList['InclMask'], $inclusionMastArray, 'InclId');
                $flexiPackageList['inclusionDetails'] = $inclusionArr;
                // echo "<pre>";print_r($inclusionArr);die;
                //get hotel details
                $hotelarr = $objPackage->getFlexiPackageFinalHotels($TPSysId);

                //for tnc details
                $packageTncList = $objPackage->getPackageTncList($TPSysId);

                //for agency details
                $crmcustomerObj = new Travel_Model_CRM_Customer();
                $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($flexiPackageList['AgencySysId']);

                // for agent/supplier details 
                //$objAgencyStaff   =	new Travel_Model_TblAgencyStaff();
                //$agentDetail=$objAgencyStaff->getUserDetailsById($flexiPackageList['SupplierSysId']);
                $objSupplier = new Travel_Model_TblSupplier();
                $supplierDetails = $objSupplier->getSupplierById($flexiPackageList['SupplierSysId']);

                //echo "<pre>";print_r($supplierDetails);die;

                $flexiPackageList['agencyDetails'] = $getAgencyDetail;
                $flexiPackageList['tncDetails'] = $packageTncList;
                $flexiPackageList['supplierDetails'] = $supplierDetails;
                //echo "<pre>";print_r($flexiPackageList);die;
                //echo "<pre>";print_r($hotelarr);die;
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('flexiPackageList', $flexiPackageList);
                $html->assign('flexiPackageItenList', $flexiPackageItenList);
                $html->assign('hotelDetails', $hotelarr);
                $bodyText = $html->render('create-package-pdf.phtml');
                echo $bodyText;
                exit;
            } else {
                echo "Something went wrong";
                die;
            }
        }
    }

    public function getApiHotelRoomInfoAction() {

        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();

        if ($this->_request->isXmlHttpRequest()) {

            $intAccomSysId = trim($this->getRequest()->getParam('intAccomSysId'));
            $price = $this->_HtmlPurifier->filter($this->getRequest()->getParam('price'));
            $TPSysId = $this->_HtmlPurifier->filter($this->getRequest()->getParam('TPSysId'));
            $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
            $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
            $tabId = $this->getRequest()->getParam('tabId');
            $strdecode = @$this->getDec($uid);
            $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
            $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetails($TPSysId);
            $strdecode = explode(':', $strdecode);
            $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
            if ((@$strdecode[0] != intval($CRMCustSysId)) || (@$strdecode[2] != intval($travelPlanDetail[0]['MasterTPSysId']))) {
                echo "Please try again";
                die;
            }
            $this->view->uid = $uid;
            $this->view->proposalId = $mid;

            $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
            //echo "<pre>";print_r($hotelSearchSession->hotelSearchSession[0]);
            //echo "<pre>";print_r($travelPlanDetail);
            $travellerDetailArr = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            //echo "<pre>";print_r($this->travelPlanDetail);die;
            $adultPax = 0;
            $childPax = 0;
            $arrMemberDetails = array();
            $getApiRooms = array();
            if (!empty($travellerDetailArr)) {
                $g = 0;
                foreach ($travellerDetailArr as $res) {
                    $adultPax += $res['adult'];
                    $childPax += $res['child']['childcount'];
                    $arrMemberDetails[$g]['AdultPax'] = $res['adult'];
                    $arrMemberDetails[$g]['ChildPax'] = $res['child']['childcount'];
                    //$arrMemberDetails[$i]['NoOfChild'] = $memberDetails[$i]['ChildPax'];
                    if ($res['child']['childcount'] > 0) {
                        $arrChildAge = explode(",", $res['child']['childage']);
                        // $arrMemberDetails[$g]['ChildsAge'] = $arrChildAge;
                        $arrMemberDetails[$g]['ChildsAge'] = $res['child']['childage'];
                    }
                    $g++;
                }
            }
            //echo "<pre>";print_r($arrMemberDetails);
            //$this->view->hotelCityTitle = $travelPlanDetail[0]['hotelCityTitle'];
            $getApiRooms['hotelTotalRooms'] = count($travellerDetailArr);
            $getApiRooms['hotelTotalNights'] = $travelPlanDetail[0]['hotelTotalNights'];
            $getApiRooms['hotelFromDateSession'] = $travelPlanDetail[0]['hotelFromDate']->format('d-M-y');
            $getApiRooms['hotelToDateSession'] = $travelPlanDetail[0]['hotelToDate']->format('d-M-y');
            $getApiRooms['selectNationality'] = $travelPlanDetail[0]['Countries'];
            $getApiRooms['countryCode'] = $travelPlanDetail[0]['Countries'];
            $getApiRooms['hotelXrefCityId'] = $travelPlanDetail[0]['hotelXrefCityId'];
            $getApiRooms['hidden_selected_hotel_id'] = $travelPlanDetail[0]['hotelXrefCityId'];
            $getApiRooms['totalMemberCount']['AdultPax'] = $adultPax;
            $getApiRooms['totalMemberCount']['ChildPax'] = $childPax;
            $getApiRooms['totalMemberCount']['ChildsAge'] = '';
            $getApiRooms['memberDetails'] = $arrMemberDetails;
            $getApiRooms['hotelStarRating'] = $travelPlanDetail[0]['hotelStarRating'];
            $getApiRooms['apiSourceSysId'] = $travelPlanDetail[0]['ICSourceSysId'];
            $getApiRooms['strTraceId'] = $strTraceId = $travelPlanDetail[0]['TraceId'];
            $getApiRooms['strHotelCode'] = $strHotelCode = $travelPlanDetail[0]['ShortName'];

            //echo "<pre>"; print_r($hotelSearchSession->hotelSearchSession); exit;
            $arrResponseData = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiHotelRoomInfo($getApiRooms);
            //echo "<pre>"; print_r($arrResponseData); die;

            if (!empty($arrResponseData)) {
                $this->view->strTraceId = isset($arrResponseData['search_id']) ? $arrResponseData['search_id'] : '';
                $this->view->strErrorMessage = !empty($arrResponseData['errors'][0]['messages'][0]) ? $arrResponseData['errors'][0]['messages'][0] : '';
                $this->view->arrResponseData = !empty($arrResponseData['hotels'][0]['rates']) ? $arrResponseData['hotels'][0]['rates'] : '';
            } else {
                $this->view->strTraceId = '';
                $this->view->strErrorMessage = 'No rooms available.';
                $this->view->arrResponseData = '';
            }


            if (isset($arrResponseData['hotels'][0]['rates']) && count($arrResponseData['hotels'][0]['rates']) > 0) {
                $I = 1;
                $v = 0;
                $getCurrencyObj = new Travel_Model_TblCurrency();
                $getAccomRoomInfoObj = new Travel_Model_TblICAccomdationRoom();
                $updatedate = date('Y-m-d H:i:s');
                // echo "<pre>";print_r($arrResponseData['hotels'][0]['rates']);
                foreach ($arrResponseData['hotels'][0]['rates'] as $roomInfo) {
                    $fetchRoomResult = $getAccomRoomInfoObj->GetAccomRoomDetail($travelPlanDetail[0]['hotelAccoSysId'], $roomInfo['rooms'][0]['room_type'], $I);
                    //echo count($fetchRoomResult);die;
                    if (count($fetchRoomResult) == 0) {
                        $getCurrencyObj->strCurrencySymbol = $roomInfo['currency'];
                        $HelperCurrency = $getCurrencyObj->getCurrencyTypes();
                        $CurrencyType = $HelperCurrency[0]['CurrencyType'];
                        $AccomRoomInfoArray = array(
                            'AccomSysId' => $travelPlanDetail[0]['hotelAccoSysId'],
                            'SourceSysId' => $travelPlanDetail[0]['ICSourceSysId'],
                            'Title' => !empty($roomInfo['rooms'][0]['description']) ? $roomInfo['rooms'][0]['description'] : '',
                            'TokenId' => $travelPlanDetail[0]['TokenId'],
                            'TraceId' => $travelPlanDetail[0]['TraceId'],
                            'RoomIndex' => $I,
                            'Amenities' => $arrResponseData['hotels'][0]['facilities'],
                            'RoomNumber' => !empty($roomInfo['rooms'][0]['room_type']) ? $roomInfo['rooms'][0]['room_type'] : '',
                            'Qty' => !empty($roomInfo['no_of_rooms']) ? $roomInfo['no_of_rooms'] : '0',
                            'CurrencyType' => !empty($CurrencyType) ? $CurrencyType : '',
                            'PublishedFare' => !empty($roomInfo['price']) ? $roomInfo['price'] : '0',
                            'Commission' => 0,
                            'RoomType' => 0,
                            'EconomyType' => 0,
                            'BedType' => 0,
                            'PaxCount' => 0,
                            'IsPetAllow' => 0,
                            'Location' => '',
                            'MaxPetAllow' => 0,
                            'AllowChild' => 0,
                            'AllowInfant' => 0,
                            'MaxPaxCount' => 0,
                            'MaxAllowChild' => 0,
                            'MaxAllowInfant' => 0,
                            'MealPlanType' => 0,
                            'AminitiesMask' => '',
                            'InclustionOptionsMask' => '',
                            'OtherDetails' => !empty($roomInfo['other_inclusions']) ? json_encode($roomInfo['other_inclusions']) : '',
                            'RoomTypeCode' => !empty($roomInfo['room_code']) ? $roomInfo['room_code'] : '',
                            'RatePlanCode' => !empty($roomInfo['rate_key']) ? $roomInfo['rate_key'] : '',
                            'RatePlanName' => !empty($roomInfo['rate_type']) ? $roomInfo['rate_type'] : '',
                            'CancellationPolicy' => '',
                            'UpdatedDate' => $updatedate,
                            'CreateDate' => $updatedate,
                            'IsApproved' => 1,
                            'IsActive' => 1,
                            'IsDelete' => 0
                        );
                        //echo "<pre>";print_r($AccomRoomInfoArray);die;
                        $getAccomRoomInfoObj->addAccomRoomInfo($AccomRoomInfoArray);
                    } else {

                        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
                        $currencySymbol = $customhelper->GetCurrencyTypeByCurrency($roomInfo['currency']);
                        $CurrencyType = $currencySymbol['CurrencyType'];

                        $AccomRoomInfoArrayUpdate = array(
                            'Title' => !empty($roomInfo['rooms'][0]['description']) ? $roomInfo['rooms'][0]['description'] : '',
                            'Amenities' => $arrResponseData['hotels'][0]['facilities'],
                            'TokenId' => $travelPlanDetail[0]['TokenId'],
                            'TraceId' => $travelPlanDetail[0]['TraceId'],
                            'Qty' => !empty($roomInfo['no_of_rooms']) ? $roomInfo['no_of_rooms'] : '0',
                            'CurrencyType' => !empty($CurrencyType) ? $CurrencyType : '',
                            'PublishedFare' => !empty($roomInfo['price']) ? trim($roomInfo['price']) : '0',
                            'OtherDetails' => !empty($roomInfo['other_inclusions'][0]) ? $roomInfo['other_inclusions'][0] : '',
                            'RoomTypeCode' => !empty($roomInfo['room_code']) ? trim($roomInfo['room_code']) : '',
                            'RatePlanCode' => !empty($roomInfo['rate_key']) ? trim($roomInfo['rate_key']) : '',
                            'RatePlanName' => !empty($roomInfo['rate_type']) ? trim($roomInfo['rate_type']) : '',
                            'UpdatedDate' => $updatedate,
                        );
                        //echo "<pre>";print_r($AccomRoomInfoArrayUpdate);die;
                        $where = "AccomSysId = " . $travelPlanDetail[0]['hotelAccoSysId'] . " AND RoomIndex=" . $I . " AND RoomNumber='" . $roomInfo['rooms'][0]['room_type'] . "'";
                        $lastId = $getAccomRoomInfoObj->updateAccomRoomInfo($AccomRoomInfoArrayUpdate, $where);
                    }

                    $I++;
                    $v++;
                }
            }
            //echo $lastId.'/'.$travelPlanDetail[0]['hotelAccoSysId'];
            // For Hotel Basic Details From DB...
            $objHotel = new Travel_Model_TblBuyHotel();
            //$intAccomSysId = $objHotel->getHotelInfoByShortCode($strHotelCode,$strTraceId);exit;
            $intImagesCount = $objHotel->countApiHotelsImages(trim($strHotelCode));
            if ($intImagesCount < 2) {
                //Get Grn Hotel Images...
                $arrResponseData = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiHotelRoomImages($strHotelCode);
                if ($arrResponseData['errors'] == 0) {
                    if (!empty($arrResponseData['images'])) {
                        $CreateDate = date('Y-m-d H:i:s');
                        $objHotel = new Travel_Model_TblBuyHotel();
                        $intAccomSysId = $objHotel->getHotelInfoByShortCode($strHotelCode, $strTraceId);
                        $intGTXCityId = $travelPlanDetail[0]['hotelXrefCityId'];
                        $Seq = 1;
                        foreach ($arrResponseData['images'] as $imgValue) {
                            $imgPath = GRN_HOTEL_IMAGES_CDN_URL . "/" . $imgValue['path'];

                            $imgData = array(
                                'AccomSysId' => $intAccomSysId,
                                'Seq' => $Seq,
                                'ImgType' => 2,
                                'HotelCode' => trim($strHotelCode),
                                'CitySysId' => $intGTXCityId,
                                'TagTitle' => 'FullImage',
                                'Details' => $imgPath,
                                'UpdateDate' => $CreateDate,
                                'CreateDate' => $CreateDate,
                                'IsActive' => 1,
                                'IsMarkForDel' => 0,
                            );
                            $objHotel->insertApiHotelsImages($imgData);
                            $Seq++;
                        }
                    }
                }
            }

            //Get Grn Hotel Images...
            // For Hotel Basic Details From DB...
            $this->view->AgentMarkUp = $hotelMarkUp = ($travelPlanDetail[0]['hotelMarkUp'] > 0) ? trim($travelPlanDetail[0]['hotelMarkUp']) : 0;
            $this->view->AgencyMarkUp = $AgencyMarkUp = ($travelPlanDetail[0]['AgencyMarkUp'] > 0) ? trim($travelPlanDetail[0]['AgencyMarkUp']) : 0;
            $this->view->GTXMarkUp = $GTXMarkup = ($travelPlanDetail[0]['GTXMarkup'] > 0) ? trim($travelPlanDetail[0]['GTXMarkup']) : 0;
            $this->view->NetCost = $NetCost = ($travelPlanDetail[0]['NetCost'] > 0) ? trim($travelPlanDetail[0]['NetCost']) : 0;
            $this->view->Taxes = $Taxes = ($travelPlanDetail[0]['Taxes'] > 0) ? trim($travelPlanDetail[0]['Taxes']) : 0;
            $this->view->XServiceTaxAmount = $XServiceTaxAmount = ($travelPlanDetail[0]['XServiceTaxAmount'] > 0) ? trim($travelPlanDetail[0]['XServiceTaxAmount']) : 0;
            $priceArray = array(
                'hotelMarkUp' => trim($travelPlanDetail[0]['hotelMarkUp']),
                'AgencyMarkUp' => trim($travelPlanDetail[0]['AgencyMarkUp']),
                'GTXMarkup' => trim($travelPlanDetail[0]['GTXMarkup']),
                'NetCost' => trim($travelPlanDetail[0]['NetCost']),
                'TotalCost' => trim($travelPlanDetail[0]['TotalCost']),
                'XServiceTaxAmount' => trim($travelPlanDetail[0]['XServiceTaxAmount']),
                'GTXServiceTaxAmount' => trim($travelPlanDetail[0]['GTXServiceTaxAmount']),
                'AgentServiceTaxAmount' => trim($travelPlanDetail[0]['AgentServiceTaxAmount']),
                'AgentsCustomServiceTaxAmount' => trim($travelPlanDetail[0]['AgentsCustomServiceTaxAmount']),
                'Taxes' => trim($travelPlanDetail[0]['Taxes']),
            );

            // For Hotel Basic Details From DB...
            $arrHotelDetails = $objHotel->getHotelInfoById($intAccomSysId);
            $this->view->arrHotelDetails = $arrHotelDetails;

            // For Hotel Basic Details From DB...
            // For Hotel Basic Details From DB...
            $arrHotelImages = $objHotel->getAccomdationImagesByAccomSysId($intAccomSysId);
            $this->view->arrHotelImages = $arrHotelImages;
            //echo "<pre>";print_r($arrHotelImages);exit;
            // For Hotel Basic Details From DB...
            //$arrHotelAminity = $objHotel->getHotelMappedAmenities($strHotelCode);
            $this->view->arrhotelAminity = []; //$arrHotelAminity;
            // For Hotel Basic Details From DB...
            $this->view->getApiRooms = $getApiRooms;
            $this->view->tabId = $tabId;
            $this->view->TPSysId = $TPSysId;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->priceArray = $priceArray;

            $this->render('api-room-detail-info');
        }
    }

    //for grn hotel details SourceSysID=4
    public function getApiHotelRateInfoAction() { // rechecking checking rates 
        ini_set("display_errors", 0);
        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();

        if ($this->_request->isXmlHttpRequest()) {

            $sessionhotelDirectSearchData = new Zend_Session_Namespace('sessionhotelDirectSearchData');
            $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
            $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
            $roomDetail = new Zend_Session_Namespace('roomDetail');
            // echo "<pre>";print_r($roomDetail->roomDetail);

            $intApiSource = trim($this->getRequest()->getParam('apiSource'));
            $cancellationPolicy = trim(base64_decode($this->getRequest()->getParam('cancellationPolicy')));
            $RoomIndex = trim($this->getRequest()->getParam('index'));
            $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));

            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            $getCurrencyObj = new Travel_Model_TblCurrency();
            //echo "<pre>";print_r($HelperCurrency);
            $strTraceId = trim($this->getRequest()->getParam('strTraceId'));
            $strRoomRateKey = trim($this->getRequest()->getParam('strRoomRateKey'));
            $strRoomGroupCode = trim($this->getRequest()->getParam('strRoomGroupCode'));

            $data = array(
                "apiSource" => $intApiSource,
                "strTraceId" => $strTraceId,
                "strRoomRateKey" => $strRoomRateKey,
                "strRoomGroupCode" => $strRoomGroupCode,
                "strCheckInDate" => $travelPlanDetail[0]['hotelFromDate']->format('Y-m-d'),
                "strCheckOutDate" => $travelPlanDetail[0]['hotelToDate']->format('Y-m-d')
            );

            $arrResponseData = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiHotelRateInfo($data);
            $sessionPreBookingHotelDetails->params = $arrResponseData;
            $arrResponseData['HOTELAPITYPE'] = 'GRN';
            //echo "<pre>";print_r($arrResponseData);die;


            if (count($arrResponseData > 0) && empty($arrResponseData['ERROR']['MESSAGE'])) {


                $arrayHotel = array();
                $arrayHotelRoomInfo = array();
                $arrayHotel['hotelInfo']['HotelInfoResult']['ResponseStatus'] = $arrResponseData['ERROR']['CODE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['Error']['ErrorCode'] = $arrResponseData['ERROR']['CODE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['Error']['ErrorMessage'] = $arrResponseData['ERROR']['MESSAGE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['TraceId'] = '';
                // $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']=$arrResponseData['ERROR']['MESSAGE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelCode'] = $arrResponseData['HOTELINFO']['HOTEL_CODE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelName'] = $arrResponseData['HOTELINFO']['HOTEL_NAME'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['StarRating'] = '';
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelURL'] = $arrResponseData['HOTELINFO']['HOTEL_IMAGE'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['Description'] = $arrResponseData['HOTELINFO']['HOTEL_DESC'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['HotelPolicy'] = '';
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['SpecialInstructions'] = '';
                $arrayHotel['hotelInfo']['HotelInfoResult']['HotelDetails']['Address'] = $arrResponseData['HOTELINFO']['HOTEL_ADDRESS'];
                $arrayHotel['hotelInfo']['tpid'] = $hotelSearchSession->hotelSearchSession[0]['TPSysId'];
                $arrayHotel['hotelInfo']['HotelInfoResult']['hotelRoomD']['GetHotelRoomResult']['ResponseStatus'] = $arrResponseData['ERROR']['MESSAGE'];

                $arrayHotelRoomInfo['Price']['RoomPriceWithMarkUp'] = $arrResponseData['ROOMPRICE']['PRICE'];
                ;
                $arrResponseData['Price']['RoomPriceDb'] = $travelPlanDetail[0]['NetCost'];
                $arrayHotelRoomInfo['ChildCount'] = $arrResponseData['ROOMINFO']['NO_OF_CHILD'];
                $arrayHotelRoomInfo['RoomTypeName'] = $arrResponseData['ROOMINFO']['ROOM_DESC'];
                $arrayHotelRoomInfo['Amenities'][0] = $arrResponseData['ROOMINFO']['ROOM_INCLUSIONS'];
                $arrayHotelRoomInfo['CancellationPolicy'] = $arrResponseData['ROOMCANCELATIONS']['TAX_INFO'];
                $arrayHotelRoomInfo['CancellationPolicies'] = $arrResponseData['ROOMCANCELATIONS']['POLICY'];
                $arrayHotelRoomInfo['CancellationPolicies'][0]['FromDate'] = $arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['from'];
                $arrayHotelRoomInfo['CancellationPolicies'][0]['ToDate'] = @$arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['to'];
                $selectedroomDetails = new Zend_Session_Namespace('selectedroom_hotelinfo');
                $selectedroomDetails->selectedroom_hotelinfo = $arrayHotelRoomInfo;
                //echo "<pre>";print_r($arrResponseData['ROOMCANCELATIONS']);die;
                if ($intApiSource == '4') {
                    $cancellationPolicyDecode = json_decode($cancellationPolicy, true);
                    // print_r($cancellationPolicyDecode);
                    // $chargeType=(isset($cancellationPolicyDecode[0]['percent']) && !empty($cancellationPolicyDecode[0]['percent']))?2:1;
                    $chargeType = (isset($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['percent']) && ($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['percent'] > 0)) ? 2 : 1;
                    $getCurrencyObj->strCurrencySymbol = isset($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['currency']) ? $arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['currency'] : '';
                    $HelperCurrency = $getCurrencyObj->getCurrencyTypes();
                    //echo "<pre>";print_r($HelperCurrency);die;
                    $Currency = $HelperCurrency[0]['CurrencyType'];
                    $Charge = isset($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['flat_fee']) ? $arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['flat_fee'] : 0;
                    $Fromdate = (isset($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['from']) && !empty($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['from'])) ? date('Y-m-d H:i:s', strtotime($arrResponseData['ROOMCANCELATIONS']['POLICY']['details'][0]['from'])) : '';
                    $Todate = '';
                    $ItemSysId = 0;
                    $strApiSource = "GRN";
                } else {
                    $strApiSource = "TBO";
                }

                $roomDetail->roomDetail = $arrayHotel;
                //print_r($arrResponseData['ROOMCANCELATIONS']['POLICY']);
                //add/edit cancellation policy
                $HotelNorms = $arrResponseData['ROOMINFO']['ROOM_INSTRUCTIONS_SPL'];
                $RoomType = $arrResponseData['ROOMINFO']['ROOM_TYPE'];
                $HotelInclusions = $arrResponseData['ROOMINFO']['ROOM_INCLUSIONS'];
                $cancellationPolicyObj = new Travel_Model_TblICAccomdationRoomCancellationPolicy();
                $valExistRT = $cancellationPolicyObj->ChkCancellationPolicyExist($travelPlanDetail[0]['hotelAccoSysId'], $RoomIndex);
                //update in accom selected room table
                $getAccomRoomInfoObj = new Travel_Model_TblICAccomdationRoom();
                $AccomRoomInfoArrayUpdate = array(
                    'HotelNorms' => (isset($HotelNorms) && !empty($HotelNorms)) ? trim($HotelNorms) : '',
                    'UpdatedDate' => date('Y-m-d H:i:s'),
                );
                //echo "<pre>";print_r($AccomRoomInfoArrayUpdate);
                $where = "AccomSysId = " . $travelPlanDetail[0]['hotelAccoSysId'] . " AND RoomIndex=" . $RoomIndex . " AND RoomNumber='" . $RoomType . "'";
                $lastId = $getAccomRoomInfoObj->updateAccomRoomInfo($AccomRoomInfoArrayUpdate, $where);

                //end of update in accom selected room table
                //update room index in accom table
                $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                $updatetravelplan = array(
                    'RoomIndex' => $RoomIndex,
                    'UpdateDate' => date('Y-m-d H:i:s')
                );
                $updatetravelPlanAccom = $this->_crmcusttravelplanAccom->UpdateTravelPlanAccomData($updatetravelplan, $where);
                //end of update room index in accom table


                if (count($valExistRT) == 0) {
                    if (!empty($chargeType)) {
                        $arrayCancelPlo = array(
                            'AccoSysid' => $travelPlanDetail[0]['hotelAccoSysId'],
                            'ItemSysId' => $ItemSysId,
                            'roomindex' => $RoomIndex,
                            'ChargeType' => $chargeType,
                            'Currency' => $Currency,
                            'RoomNumber' => $RoomType,
                            'Charge' => $Charge,
                            'Fromdate' => $Fromdate,
                            'Todate' => $Todate,
                            'createdOn' => date('Y-m-d H:i:s'),
                            'UpdatedOn' => date('Y-m-d H:i:s'),
                            'IsActive' => '1',
                            'IsMarkForDel' => '0'
                        );
                        //echo "";print_r($arrayCancelPlo);
                        $cancellationPolicyObj->addRoomCancellationPolicy($arrayCancelPlo);
                    }
                } else {
                    if (!empty($chargeType)) {
                        $arrayCancelPlo = array(
                            'ItemSysId' => $ItemSysId,
                            'ChargeType' => $chargeType,
                            'Currency' => $Currency,
                            'RoomNumber' => $RoomType,
                            'Charge' => $Charge,
                            'Fromdate' => $Fromdate,
                            'Todate' => $Todate,
                            'UpdatedOn' => date('Y-m-d H:i:s')
                        );
                        $whereCn = "AccoSysid='" . $travelPlanDetail[0]['hotelAccoSysId'] . "' AND roomindex='" . $RoomIndex . "'";
                        $cancellationPolicyObj->UpdateRoomCancellationPolicy($arrayCancelPlo, $whereCn);
                    }
                }
                $sessionhotelDirectSearchData->params = $arrResponseData;
                $response = array('success' => true, 'msg' => '');
                echo json_encode($response);
                exit;
            } else {
                $response = array('success' => false, 'msg' => 'there might be some technical error:' . $arrResponseData['ERROR']['MESSAGE']);
                echo json_encode($response);
                exit;
            }
        }
    }

    //hotel detail for grn api
    public function displaySelectedRoomDetailsAction() {
        $this->view->layout()->disableLayout();

        $selectedroomDetails = new Zend_Session_Namespace('selectedroom_hotelinfo');
        $sessionhotelDirectSearchData = new Zend_Session_Namespace('sessionhotelDirectSearchData');
        $roomDetail = new Zend_Session_Namespace('roomDetail');
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        //HOTELAPITYPE

        $planId = $hotelSearchSession->hotelSearchSession[0]['TPSysId'];
        if (isset($planId) && !empty($planId)) {
            $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
            $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetails($planId);
            $travelPlanItenObj = new Travel_Model_CRM_CustomerTravelItenary();
            $travelPlanItenaryId = $travelPlanItenObj->GetItenaryId($planId);
            //$travelPlanAccomObj=new Travel_Model_TblCustomerTravelAccom();
            //$travelPlanAccomId=$travelPlanAccomObj->GetAccomId($travelPlanAccomObj[0]['TPIntSysId']);
            $this->view->travelPlanAccomId = $travelPlanItenaryId['TPIntSysId'];
            //echo "<pre>"; print_r($travelPlanDetail);
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $hotelGuestDetails = new Zend_Session_Namespace('hotelGuestDetails');
            $hotelGuestDetails->hotelGuestDetails = $guestDetails;
            //echo "<pre>";print_r($guestDetails);die;
            //$guestDetails=$crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //customer detail
            $tpID = $planId;
            $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
            if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpID);

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CRMCustSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->hotelInfo = $sessionhotelDirectSearchData->params;
            $this->view->hotelSearchInfo = $hotelSearchSession->hotelSearchSession;
            $this->view->guestDetail = $guestDetails;
            $this->view->selectedroom_hotelinfo = $selectedroomDetails->selectedroom_hotelinfo;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
    }

    //function for encryptdata created by Er amit kumar dubey on 2 february 2017 at 6:17 PM
    /* public static function getDecUser($input){
      $filter = new Zend_Filter_Decrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
      $filter->setVector(self::VECTOR);
      $decoded = pack('H*', $input);
      $decrypted = $filter->filter($decoded);
      return $decrypted;
      }
      public static function getEncUser($input){
      $filter = new Zend_Filter_Encrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
      $filter->setVector(self::VECTOR);
      $encrypted = $filter->filter($input);
      return bin2hex($encrypted); //hints: rawurlencode(..) works
      return $encrypted;
      } */
    public function previewHotelResultViewAction() {
        ini_set("display_errors", "1");
        //error_reporting(E_ALL);
        $this->_helper->layout->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $pid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode(trim($this->getRequest()->getParam('uid'))));
        $type = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('type')));
        $strdecode = $this->getDec($uid);
        if (isset($proposalId) && !empty($proposalId)) {
            if (isset($type) && !empty($type)) {
                $typedecode = @$this->getDec($type);
                $proposalList = $this->_crmcusttravelplan->GetPublicProposalWithHotListByStaus($proposalId, $pid);
            } else {
                $proposalList = $this->_crmcusttravelplan->GetPublicProposalWithHotListByStaus($proposalId, '');
            }
            $strdecode = explode(':', $strdecode);
            $CRMCustSysId = @$proposalList[0]['CustomerSysId'];
            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($proposalId) . '/pid/' . base64_encode($pid) . '/uid/' . base64_encode($uid) . '');
                exit;
            }
            //echo $strdecode[0]."/".intval($CRMCustSysId).":".$strdecode[2]."/".intval($proposalId);
            $this->view->uid = $uid;

            $sessionLogin_user = new Zend_Session_Namespace('sessionLogin_user');
            //echo "<pre>";print_r($proposalList);die;
            //$sessionLogin_user->intLoggedinUserAgencySysId=$proposalList[0]['AgencySysId'];  please remove comment from this lime and comment next line to remove static data
            $sessionLogin_user->intLoggedinUserAgencySysId = $proposalList[0]['AgencySysId'];
            $objHotel = new Travel_Model_TblBuyHotel();
            $this->view->markupAgency = $objHotel->getAgencyMarkup($proposalList[0]['AgencySysId']);
            //$sessionLogin_user->intLoggedinUserAgencySysId='';
            //print_r($sessionLogin_user->intLoggedinUserAgencySysId);
            $this->view->proposalList = $proposalList;
            $this->view->proposalId = $proposalId;
            //$leadId=$proposalId;

            $leadId = $proposalList[0]['TPSysId'];
            //code for hotel modify search
            $getLeadlist = $this->_crmcusttravelplan->GetPublicPageLeadListForView($CRMCustSysId, $proposalList[0]['AgencySysId'], $leadId);
            //echo "<pre>"; print_r($getLeadlist);die;
            if (isset($getLeadlist[0]['hotelFromDate']) && !empty($getLeadlist[0]['hotelToDate'])) {
                $fromDate = $getLeadlist[0]['hotelFromDate']->format('Y-m-d');
                $toDate = $getLeadlist[0]['hotelToDate']->format('Y-m-d');
                // input format should be 206-03-25
                $totalDays = Zend_Controller_Action_HelperBroker::getStaticHelper('DateFormat')->calculateNoOfDays($fromDate, $toDate);
            }

            $roomjsonarray = (isset($getLeadlist[0]['RoomMemInfoJson']) && !empty($getLeadlist[0]['RoomMemInfoJson'])) ? json_decode($getLeadlist[0]['RoomMemInfoJson'], 1) : array();
            //echo "<pre>";print_r($roomjsonarray);die;
            for ($d = 1; $d <= count($roomjsonarray); $d++) {
                $getLeadlist[0]['hotelTotalRooms'] = count($roomjsonarray);
                $getLeadlist[0]['memberDetails'][] = array('AdultPax' => $roomjsonarray[$d]['adult'], 'ChildPax' => $roomjsonarray[$d]['child']['childcount'], 'ChildsAge' => @$roomjsonarray[$d]['child']['childage']);
            }
            $getLeadlist[0]['searchType'] = 'CRMHOTELSEARCH';
            $getLeadlist[0]['TPSysId'] = $leadId;
            $getLeadlist[0]['TPIntSysId'] = isset($getLeadlist[0]['TPIntSysId']) ? $getLeadlist[0]['TPIntSysId'] : '';

            $objCity = new Travel_Model_TblCity();
            $objCity->intCityId = isset($getLeadlist[0]['hotelXrefCityId']) ? $getLeadlist[0]['hotelXrefCityId'] : '';
            $cityList = array();
            if ($objCity->intCityId) {
                $cityList = $objCity->getCityList();
            }
            $hoteltbbcityid = '';
            //print_r($cityList);die;
            if (!empty($cityList)) {
                $hoteltbbcityid = $cityList[0]['TBBCityId'];
            }

            $getLeadlist[0]['hidden_selected_hotel_id'] = $hoteltbbcityid;
            $getLeadlist[0]['hotelFromDateSession'] = isset($getLeadlist[0]['hotelFromDate']) ? $getLeadlist[0]['hotelFromDate']->format('d-M-y') : '';
            $getLeadlist[0]['customername'] = isset($getCustomerDetail['FullName']) ? $getCustomerDetail['FullName'] : '';
            $getLeadlist[0]['emailID'] = isset($getCustomerDetail['EmailId']) ? $getCustomerDetail['EmailId'] : '';
            $getLeadlist[0]['customerId'] = $CRMCustSysId;
            $getLeadlist[0]['hotelToDateSession'] = isset($getLeadlist[0]['hotelToDate']) ? $getLeadlist[0]['hotelToDate']->format('d-M-y') : '';
            $getLeadlist[0]['hotelCountryCode'] = isset($getLeadlist[0]['Countries']) ? $getLeadlist[0]['Countries'] : '';
            $getLeadlist[0]['totalDays'] = isset($totalDays) ? $totalDays : 0;
            //echo "<pre>";print_r($getLeadlist);die;
            /* $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
              $hotelSearchSession->hotelSearchSession=$getLeadlist; */
            $this->view->leadDetail = $getLeadlist;
            //end of code for modify
            //create session for grn hotel search query
            $memberDetails = isset($getLeadlist[0]['memberDetails']) ? $getLeadlist[0]['memberDetails'] : array();
            $totalMemberCount = Zend_Controller_Action_HelperBroker::getStaticHelper('ArrayCalculation')->calculateArrayValues($memberDetails);
            /* $searchData = array('hotelCityTitle' => $getLeadlist[0]['hotelCityTitle'],
              'hotelFromDateSession' => isset($getLeadlist[0]['hotelFromDate']) ? $getLeadlist[0]['hotelFromDate']->format('d-M-y') : '',
              'hotelToDateSession' => isset($getLeadlist[0]['hotelToDate']) ? $getLeadlist[0]['hotelToDate']->format('d-M-y') : '',
              'hotelTotalNights' => $getLeadlist[0]['hotelTotalNights'],
              'selectNationality' => (trim($getLeadlist[0]['hotelCountryCode'])!='')?$getLeadlist[0]['hotelCountryCode']:'IN',
              'countryCode' => (trim($getLeadlist[0]['hotelCountryCode'])!='')?$getLeadlist[0]['hotelCountryCode']:'IN',
              'leadRemark' => '',
              'customername' => isset($getCustomerDetail['FullName'])?$getCustomerDetail['FullName']:'',
              'emailID' => isset($getCustomerDetail['EmailId'])?$getCustomerDetail['EmailId']:'',
              'searchType' => $getLeadlist[0]['searchType'],
              'customerId' => $getLeadlist[0]['CustomerSysId'],
              'TPSysId' => isset($getLeadlist[0]['TPSysId'])?$getLeadlist[0]['TPSysId']:'',
              'TPIntSysId' => isset($getLeadlist[0]['TPIntSysId'])?$getLeadlist[0]['TPIntSysId']:'',
              'hotelTotalRooms' => $getLeadlist[0]['hotelTotalRooms'],
              'hotelStarRating' => $this->_HtmlPurifier->filter($this->getRequest()->getPost('selectStarRating')),
              'hotelXrefCityId' => isset($getLeadlist[0]['hotelXrefCityId'])?$getLeadlist[0]['hotelXrefCityId']:'',
              'hidden_selected_hotel_id' => isset($getLeadlist[0]['hotelXrefCityId'])?$getLeadlist[0]['hotelXrefCityId']:'',
              'totalMemberCount' => $totalMemberCount,
              'memberDetails' => $getLeadlist[0]['memberDetails']);
              //print_r($searchData);die;
              $sessionhotelDirectSearchData = new Zend_Session_Namespace('sessionHotelDirectSearchData');
              $sessionhotelDirectSearchData->params = $searchData; */

            //end of grn hotel session
            //customer detail
            $tpID = $leadId;
            if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($tpID);

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($tpID);
                $getCustomerDetail['userChatExist'] = !empty($checkCustomerChatExist) ? count($checkCustomerChatExist) : 0;
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $getLeadlist[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($proposalList[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($proposalList[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
    }

    //create new version of proposal in travelplan table created by Er Amit Kumar Dubey on 13 february 2017 at 4:00 PM
    public function saveHotelProposalAction() {

        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();

        if ($this->_request->isXmlHttpRequest()) {

            $intAccomSysId = trim($this->getRequest()->getParam('intAccomSysId'));
            $price = $this->_HtmlPurifier->filter($this->getRequest()->getParam('price'));
            $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
            $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
            $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
            $netChangeBasePrice = $this->_HtmlPurifier->filter(($this->getRequest()->getParam('netChangeBasePrice')));
            $netChangeBasePriceTax = $this->_HtmlPurifier->filter(($this->getRequest()->getParam('netChangeBasePriceTax')));
            $strdecode = @$this->getDec($uid);
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            //echo "<pre>";print_r($travelPlanDetail);die;
            $strdecode = explode(':', $strdecode);
            $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
            if ((@$strdecode[0] != intval($CRMCustSysId)) || (@$strdecode[2] != intval($travelPlanDetail[0]['MasterTPSysId']))) {
                echo "Please try again";
                die;
            }
            $this->view->uid = $uid;
            $this->view->proposalId = $mid;
            $XServiceTaxAmount = $netChangeBasePriceTax;
            $basePrice = $netChangeBasePrice;

            //add service tax amount
            if ($travelPlanDetail[0]['SupplierSysId'] == 3) {
                $serviceTaxApiType = 8;
            } else if ($travelPlanDetail[0]['SupplierSysId'] == 4) {
                $serviceTaxApiType = 9;
            } else {
                $serviceTaxApiType = 9;
            }
            //service tax for base fare
            $arrServiceTaxOnNetPayable = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiServiceTax($basePrice, "H", $serviceTaxApiType);
            $netPriceArrayServiceTax = !empty($arrServiceTaxOnNetPayable['serviceTaxAmount']) ? $arrServiceTaxOnNetPayable['serviceTaxAmount'] : 0;
            //service tax for GTX MarkUp
            $arrServiceTaxOnNetPayable = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiServiceTax($travelPlanDetail[0]['GTXMarkup'], "H", $serviceTaxApiType);
            $GTXMarkupArrayServiceTax = !empty($arrServiceTaxOnNetPayable['serviceTaxAmount']) ? $arrServiceTaxOnNetPayable['serviceTaxAmount'] : 0;
            //service tax for Agency MarkUp
            $arrServiceTaxOnNetPayable = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiServiceTax($travelPlanDetail[0]['AgencyMarkUp'], "H", $serviceTaxApiType);
            $AgencyMarkupArrayServiceTax = !empty($arrServiceTaxOnNetPayable['serviceTaxAmount']) ? $arrServiceTaxOnNetPayable['serviceTaxAmount'] : 0;
            //service tax for Agent MarkUp
            $arrServiceTaxOnNetPayable = Zend_Controller_Action_HelperBroker::getStaticHelper('Hotel')->getApiServiceTax($travelPlanDetail[0]['hotelMarkUp'], "H", $serviceTaxApiType);
            $MarkupArrayServiceTax = !empty($arrServiceTaxOnNetPayable['serviceTaxAmount']) ? $arrServiceTaxOnNetPayable['serviceTaxAmount'] : 0;
            //end of service tax 
            //echo $netPriceArrayServiceTax."/".$GTXMarkupArrayServiceTax."/".$AgencyMarkupArrayServiceTax."/".$MarkupArrayServiceTax;
            //if click on confirm then changed all other proposal status to on-hold BY neeraj sir on 17 april 2017 at 6:37 PM
            $wheremaster = "MasterTPSysId = " . $mid;
            $updatetravelplan = array(
                'StatusType' => 12,
                'UpdateDate' => date('Y-m-d H:i:s')
            );
            $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $wheremaster);
            //end of update


            $Taxes = 0;
            $totalamount = $basePrice + $travelPlanDetail[0]['hotelMarkUp'] + $travelPlanDetail[0]['GTXMarkup'] + $travelPlanDetail[0]['AgencyMarkUp'] + $Taxes + $netPriceArrayServiceTax + $GTXMarkupArrayServiceTax + $AgencyMarkupArrayServiceTax + $MarkupArrayServiceTax;
            $createDate = date('Y-m-d H:i:s');
            $existLeadDetail = $this->_crmcusttravelplan->CheckCustomerWithLeadId($TPSysId);
            $nextVersionId = $existLeadDetail[0]['VersionId'] + 1;
            $data = array(
                'PlanBookingId' => $this->_HtmlPurifier->filter($travelPlanDetail[0]['PlanBookingId']),
                'MasterTPSysId' => $mid,
                'VersionId' => $nextVersionId,
                'SupplierSysId' => trim($travelPlanDetail[0]['SupplierSysId']) > 0 ? trim($travelPlanDetail[0]['SupplierSysId']) : 4,
                'CurrencyType' => trim($travelPlanDetail[0]['CurrencyType']),
                'InventoryType' => 2,
                'CreatorSysId' => 0,
                'IsHotelFromAPI' => $travelPlanDetail[0]['IsHotelFromAPI'],
                'AgencySysId' => $travelPlanDetail[0]['AgencySysId'],
                'AgentSysId' => $travelPlanDetail[0]['AgentSysId'],
                'IsCardChrgToCustomer' => $travelPlanDetail[0]['IsCardChrgToCustomer'],
                'StatusType' => 5,
                'PlanType' => 2,
                'CustomerSysId' => $travelPlanDetail[0]['CustomerSysId'],
                'RoomInfoJson' => $travelPlanDetail[0]['RoomInfoJson'],
                'AdditionalReq' => $travelPlanDetail[0]['AdditionalReq'],
                'StartDate' => $travelPlanDetail[0]['StartDate']->format('Y-m-d'),
                'ValidTill' => $travelPlanDetail[0]['ValidTill']->format('Y-m-d'),
                'Cities' => $travelPlanDetail[0]['Cities'],
                'Countries' => $travelPlanDetail[0]['Countries'],
                'CreateDate' => $createDate,
                'Price' => $basePrice,
                'NetPrice' => $totalamount,
                //'MarkUp' => $MarkupArray[$i],
                'UpdateDate' => $createDate,
                'IsActive' => 1,
                'IsAprooved' => 1,
            );
            $lastID = $this->_crmcusttravelplan->addCustomerTravelPlan($data);
            if ($lastID) {
                $travelitenary = array(
                    'TPSysId' => $lastID,
                    'AgencySysId' => $travelPlanDetail[0]['AgencySysId'],
                    'StartDate' => $createDate,
                    'IsActive' => 1,
                    'Sequence' => 1,
                    'CreateDate' => $createDate,
                );

                $lasttravelitenaryID = $this->_crmcustomertravelItenary->addCustomerTravelItenary($travelitenary);
            }

            ########### End Add Data in Travel Hotel Table ###################
            $hotelData = array(
                'TPIntSysId' => $lasttravelitenaryID,
                'SeqId' => 1,
                'AccoBookingId' => 0,
                'XRefBookingId' => 0,
                'AccoSysId' => $travelPlanDetail[0]['AccoSysId'],
                'SourceSysId' => $travelPlanDetail[0]['ICSourceSysId'],
                'SupplierSysId' => trim($travelPlanDetail[0]['SupplierSysId']) > 0 ? trim($travelPlanDetail[0]['SupplierSysId']) : 4,
                'IsfromAPI' => $travelPlanDetail[0]['IsfromAPI'],
                'Title' => $travelPlanDetail[0]['hotelCityTitle'],
                'AgencySysId' => $travelPlanDetail[0]['AgencySysId'],
                'RoomMemInfoJson' => $travelPlanDetail[0]['RoomMemInfoJson'],
                'CreateDate' => $createDate,
                'UpdateDate' => $createDate,
                'FromDate' => $travelPlanDetail[0]['hotelFromDate'],
                'ToDate' => $travelPlanDetail[0]['hotelToDate'],
                'TotalNights' => $travelPlanDetail[0]['hotelTotalNights'],
                'StarRating' => $travelPlanDetail[0]['hotelStarRating'],
                'AdultPax' => $travelPlanDetail[0]['adultsinHotel'],
                'ChildPax' => $travelPlanDetail[0]['childsinHotel'],
                'ChildsAge' => $travelPlanDetail[0]['hotelChildsAge'],
                'InfantPax' => $travelPlanDetail[0]['infentinHotel'],
                'CurrencyType' => $travelPlanDetail[0]['CurrencyType'],
                'Discounts' => $travelPlanDetail[0]['Discounts'],
                'Taxes' => $travelPlanDetail[0]['Taxes'],
                'XServiceTaxAmount' => $netPriceArrayServiceTax,
                'GTXServiceTaxAmount' => $GTXMarkupArrayServiceTax,
                'AgentServiceTaxAmount' => $AgencyMarkupArrayServiceTax,
                'AgentsCustomServiceTaxAmount' => $MarkupArrayServiceTax,
                'NetCost' => $basePrice,
                'TotalCost' => $totalamount,
                'MarkUp' => $travelPlanDetail[0]['hotelMarkUp'],
                'GTXMarkup' => $travelPlanDetail[0]['GTXMarkup'],
                'AgencyMarkUp' => $travelPlanDetail[0]['AgencyMarkUp'],
                'PetPax' => 0,
                'TotalPax' => $travelPlanDetail[0]['TotalPax'],
                'XrefCityId' => $travelPlanDetail[0]['hotelXrefCityId'],
                'IsMarkForDel' => 0,
                'IsSelectedOnPkg' => 1,
                'IsActive' => 1,
            );

            $lastairID = $this->_crmcusttravelplanHotel->addCustomerTravelPlanHotel($hotelData);
            $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $lastID . ':' . $mid;
            $uid = $this->getEnc($uid);
            if (isset($lastairID) && $lastairID > 0) {
                $response = array('status' => 'success', 'tpid' => base64_encode($lastID), 'pid' => base64_encode($mid), 'uid' => base64_encode($uid), 'redirectionURL' => true);
            } else {
                $response = array('status' => 'failed', 'TPSysId' => '');
            }
            echo json_encode($response);
        }
    }

    public function getCustomerDetailAction() {
        $this->view->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $email = $this->_HtmlPurifier->filter($this->_request->getParam('emailID'));
        $mobilenum = $this->_HtmlPurifier->filter($this->_request->getParam('mobilenum'));
        $CRMCustSysId = $this->_HtmlPurifier->filter(base64_decode($this->_request->getParam('CRMCustSysId')));
        $AgencySysId = $this->_HtmlPurifier->filter(base64_decode($this->_request->getParam('AgencySysId')));
        //echo $mobilenum;
        if (isset($email) && !empty($email)) {
            $customerDetails = $this->_crmcustomerObj->ChkEmailWithResponse($email, $AgencySysId);
        }
        if (isset($mobilenum) && !empty($mobilenum)) {
            $customerDetails = $this->_crmcustomerObj->ChkMobileWithResponse($mobilenum, $AgencySysId, '', $CRMCustSysId);
        }
        if ($customerDetails) {
            $status = 'success';
        } else {
            $status = 'failure';
        }
        $detail['status'] = $status;
        //$detail['customerDetails']=$customerDetails;
        $detail['CustomerSysId'] = (isset($customerDetails['CustomerSysId']) && !empty($customerDetails['CustomerSysId'])) ? base64_encode($customerDetails['CustomerSysId']) : '';
        $detail['CRMCustSysId'] = (isset($customerDetails['CRMCustSysId']) && !empty($customerDetails['CRMCustSysId'])) ? base64_encode($customerDetails['CRMCustSysId']) : '';
        echo json_encode($detail);
    }

    //function used when message sent to customer chat
    public function sendEmailToAgentAction() {
        $this->_helper->layout->disableLayout();
        $result = '';
        if ($this->getRequest()->isPost()) {
            $this->_agencyuserObj = new Travel_Model_CRM_AgencyUserInbox();
            $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('planId')));
            $SenderSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('senderId')));
            $RcvSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('recieverId')));
            $AgencySysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('agencyId')));
            $emailid = $this->_HtmlPurifier->filter($this->getRequest()->getParam('emailid'));
            $isAgent = $this->_HtmlPurifier->filter($this->getRequest()->getParam('isAgent'));
            $message = $this->getRequest()->getParam('message');
            $message = $this->_HtmlPurifier->filter($message);
            if (isset($isAgent) && !empty($isAgent)) {
                $isAgent = 1;
            } else {
                $isAgent = 0;
            }
            // query for insert data in db created by amit kumar dubey on 16 august 2016 at 12:40 PM
            $date = date('Y-m-d H:i:s');
            $messageArray = array(
                'ModuleType' => 1,
                'RefSysId' => $TPSysId,
                'SenderSysId' => $SenderSysId,
                'UserSysId' => $RcvSysId,
                'AgencySysId' => $AgencySysId,
                'Message' => addslashes($message),
                'MsgType' => 1,
                'isAgent' => $isAgent,
                'Accepted' => 0,
                'Rejected' => 0,
                'RejectReason' => 0,
                'OtherInfo' => 0,
                'UpdateDate' => $date,
                'CreatedDate' => $date,
                'IsActive' => 1,
                'IsMarkForDel' => '0'
            );
            //echo "<pre>";print_r($messageArray);
            $customerRcord = $this->_agencyuserObj->addNotification($messageArray);
            //return $customerRcord; 
            $result = "success";
            // update notification in travel plan is viewd
            $where = "TPSysId = " . $TPSysId;
            $this->_crmcusttravelplan = new Travel_Model_CRM_CustomerTravelPlan();
            $data = array(
                'UpdateDate' => date('Y-m-d H:i:s'),
                'isPlanViewed' => 0
            );
            $updateViewdInCustomerTravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            //end of notification
            //send email to agent for notify
            $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            //echo "<pre>";print_r($travelPlanDetail); die;
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
            $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $link = '';
            $title = '';
            $startDate = '';
            $validTill = '';
            $type = 'preview';
            $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $travelPlanDetail[0]['TPSysId'] . ':' . $travelPlanDetail[0]['MasterTPSysId'];
            $uid = base64_encode($this->getEnc($uid));

            $returndate = '';
            $departuredate = '';
            $paxTOtalArr = json_decode($travelPlanDetail[0]['RoomInfoJson']);
            if (!empty($paxTOtalArr)) {
                foreach ($paxTOtalArr as $PaxTotal) {
                    $departuredate = @$PaxTotal->departuredate;
                    $returndate = trim(@$PaxTotal->returndate);
                }
            }

            if ($travelPlanDetail[0]['PlanType'] == 1) {
                $link = $this->view->baseUrl("/proposal-flight-booking/flight-booking-view/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/pid/" . base64_encode($travelPlanDetail[0]['TPSysId']) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type));
                $title = trim(stripslashes($travelPlanDetail[0]['hotelCityTitle']));
                $startDate = $travelPlanDetail[0]['hotelFromDate'];
                $validTill = $travelPlanDetail[0]['hotelToDate'];
            }
            if ($travelPlanDetail[0]['PlanType'] == 2) {
                $link = $this->view->baseUrl("/proposal/preview-hotel-result/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/pid/" . base64_encode($travelPlanDetail[0]['TPSysId']) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type));
                $title = trim(stripslashes($travelPlanDetail[0]['hotelCityTitle']));
                $startDate = $travelPlanDetail[0]['hotelFromDate'];
                $validTill = $travelPlanDetail[0]['hotelToDate'];
            }
            if ($travelPlanDetail[0]['PlanType'] == 5) {
                $secureCode = Catabatic_ValidateCustomer::secureCode(base64_encode($travelPlanDetail[0]['TPSysId']), 1);
                $link = $this->view->baseUrl("/publicpackage/view-customer-final-package/id/" . base64_encode($travelPlanDetail[0]['TPSysId']) . '/code/' . $secureCode);
                $title = trim(stripslashes($travelPlanDetail[0]['Title']));
                $startDate = $travelPlanDetail[0]['StartDate'];
                $validTill = $travelPlanDetail[0]['ValidTill'];
            }
            if ($travelPlanDetail[0]['PlanType'] == 6) { //for visa
                $link = $this->view->baseUrl("/proposal/booking-visa-review-customer/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/tpid/" . base64_encode($travelPlanDetail[0]['TPSysId']));
                $title = trim(stripslashes($travelPlanDetail[0]['Title']));
                $departuredate = explode("/", $departuredate);
                $departuredate_res = $departuredate[2] . "-" . $departuredate[1] . "-" . $departuredate[0];
                $startDate = new DateTime($departuredate_res);
                $validTill = '';
            }
            if ($travelPlanDetail[0]['PlanType'] == 7) { // for forex
                $link = $this->view->baseUrl("/proposal/booking-forex-review-customer/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/tpid/" . base64_encode($travelPlanDetail[0]['TPSysId']));
                $title = trim(stripslashes($travelPlanDetail[0]['Title']));
                $departuredate = explode("/", $departuredate);
                $departuredate_res = $departuredate[2] . "-" . $departuredate[1] . "-" . $departuredate[0];
                $startDate = new DateTime($departuredate_res);
                $validTill = '';
            }
            if ($travelPlanDetail[0]['PlanType'] == 8) { // for activity
                $link = $this->view->baseUrl("/proposal/booking-activity-review-customer/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/tpid/" . base64_encode($travelPlanDetail[0]['TPSysId']));
                $title = trim(stripslashes($travelPlanDetail[0]['Title']));
                $departuredate = explode("/", $departuredate);
                $departuredate_res = $departuredate[2] . "-" . $departuredate[1] . "-" . $departuredate[0];
                $startDate = new DateTime($departuredate_res);
                $validTill = '';
            }
            if ($travelPlanDetail[0]['PlanType'] == 9) { // for sigtseeing
                $link = $this->view->baseUrl("/proposal/booking-sightseeing-review-customer/mid/" . base64_encode($travelPlanDetail[0]['MasterTPSysId']) . "/tpid/" . base64_encode($travelPlanDetail[0]['TPSysId']));
                $title = trim(stripslashes($travelPlanDetail[0]['Title']));
                $departuredate = explode("/", $departuredate);
                $departuredate_res = $departuredate[2] . "-" . $departuredate[1] . "-" . $departuredate[0];
                $startDate = new DateTime($departuredate_res);
                $validTill = '';
            }
            $emailSendId = trim($getAgentDetail['EmailId']);
            $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
            if ($isAgent == 1) {
                $emailId = trim($travelPlanDetail[0]['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/customer/');
                //$URL='cid:'.$agencyCustomerDetails['CustomerSysId']."@@"."aid:".$agencysysID;
                //$encryptData=$this->getEnc($URL);
                $html->assign('type', 'SendEmailToCustomer');
                $html->assign('data', $travelPlanDetail);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('link', $link);
                $html->assign('StartDate', $startDate);
                $html->assign('ValidTill', $validTill);
                $html->assign('Title', $title);
                $html->assign('message', trim($message));
                $html->assign('agencyDetails', $getAgencyDetail);
                $bodyText = $html->render('email-template.phtml');
                //echo $bodyText;die('111');
            } else {
                $emailId = trim($getAgentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/customer/');
                //$URL='cid:'.$agencyCustomerDetails['CustomerSysId']."@@"."aid:".$agencysysID;
                //$encryptData=$this->getEnc($URL);
                $html->assign('type', 'SendEmailToAgent');
                $html->assign('data', $travelPlanDetail);
                $html->assign('Title', $title);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('link', $link);
                $html->assign('StartDate', $startDate);
                $html->assign('ValidTill', $validTill);
                $html->assign('message', trim($message));
                $html->assign('agencyDetails', $getAgencyDetail);
                $bodyText = $html->render('email-template.phtml');
                //echo $bodyText;die('111');
                //$bodyText = "New message recieved from Customer(".trim($travelPlanDetail[0]['EmailId']).") : " ;
            }
            //$emailId = 'amit.k@catpl.co.in';
            $bodyText = $bodyText;
            $emailData = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => 'Proposal Message received', 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
            try {
                //echo "success";
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $travelPlanDetail[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                    "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 7 For Misc
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);
                "success";
            } catch (Exception $err) {
                print_r($err, true);
                "failed";
            }
            //end of send email to agent
        }
        $status = array('response' => $result);
        return $this->_helper->json($status);
    }

    public function getSentSmsDetailsApiAction() {
        $this->view->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->_crmsentsmsObj = new Travel_Model_CRM_SentSms();
        $smsDetails = $this->_crmsentsmsObj->GetSentSmsDetail($TPSysId);
        if (!empty($smsDetails)) {
            $smsDetails['status'] = 'success';
            $response = json_encode($smsDetails);
        } else {
            $smsDetails['status'] = 'failed';
            $response = json_encode($smsDetails);
        }
        echo $response;
        exit;
    }

    //for visa preview
    public function previewVisaResultAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        if (isset($mid) && !empty($mid)) {
            $proposalList = $this->_crmcusttravelplan->GetCustomerVisaProposal($mid);
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($mid);
            //print_r($proposalList);die;
            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-visa-confirmation/mid/' . base64_encode($mid) . '/tpid/' . base64_encode($proposalList[0]['TPSysId']));
                exit;
            }
            $CustomerSysId = $getCustomerDetail[0]['CustomerSysId'];
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $mid, trim($proposalList[0]['AgentSysId'])) : array();
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($mid, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);

            //query for get customer chat history
            $chatSenderDetails = array();
            $AgentSysId = $proposalList[0]['AgentSysId'];
            $AgencySysId = $proposalList[0]['AgencySysId'];
            $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($AgentSysId);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getCustomerDetail[0]['TPSysId'] = $proposalList[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $AgencySysId;
            $getCustomerDetail[0]['AgentSysId'] = $AgentSysId;
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $mid;
                    $chatSenderDetails['AgencySysId'] = $intLoggedinUserAgencySysId;
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($mid);
            //echo "<pre>";print_r($isPlanViewed);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                $emailId = trim($getAgentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/preview-visa-result/mid/" . base64_encode($mid));
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification
                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    //"URL" => "proposal/preview-visa-result/mid/" . base64_encode($mid),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetail['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetail['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($getAgentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $mid;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $AgencySysId;
                $params['AgentSysId'] = $AgentSysId;
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $AgentFirstName = trim($getAgentDetail['FirstName']) . ' ' . trim($getAgentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                //$massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;
                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $mid,
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrSMSStatisticsType[0], // 2 For Resend
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );

                // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $mid;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end


            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->leadDetail = $proposalList;
            $this->view->proposalList = $proposalList;
            $this->view->mid = $mid;
            $encydataForTnc = $this->getEnc($proposalList[0]['TPSysId'] . ":" . $proposalList[0]['AgencySysId'] . ":" . $proposalList[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        }
    }

    public function bookingVisaReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "6";
        $this->view->strTrxType = "V";
        $sessionAgencyUser = new Zend_Session_Namespace('AgencyUser');
        $isAgentLoggedIn = (isset($sessionAgencyUser->user) && !empty($sessionAgencyUser->user)) ? 1 : 0;
        $TblVisa = new Travel_Model_TblVisa();
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerVisaleadDetail($TPSysId);

            if (@$travelPlanDetail[0]['PlanType'] != 6) {
                echo "Something went wrong.";
                exit;
            }
//            if ($travelPlanDetail[0]['StatusType'] == 17 || $travelPlanDetail[0]['StatusType'] == 16) {
//                $this->_redirect('/proposal/booking-visa-confirmation/mid/' . base64_encode($mid) . '/tpid/' . base64_encode($TPSysId));
//                exit;
//            }
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            $InvnVisaAllSysId = $travelPlanDetail[0]['InvnVisaAllSysId'];
            $this->view->VisaInventoryVisaDocumentList = $VisaInventoryVisaDocumentList = $TblVisa->VisaInventoryVisaDocumentList($InvnVisaAllSysId, $travelPlanDetail[0]['AgencySysId']);

            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $objAgency = new Travel_Model_TblAgency();
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
            $getCustomerDetail[0]['TPSysId'] = $travelPlanDetail[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
            $getCustomerDetail[0]['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $this->view->getAgencyTnCDetails = $getAgencyTnCDetails = $objAgency->getAgencyTnCDetails($AgencySysId);
            // for wallet use
            $this->view->strReturnURL = Catabatic_Helper::getSiteUrl() . "proposal/make-visa-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->strErrorURL = Catabatic_Helper::getSiteUrl() . "proposal/make-visa-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == 6) { // 
                $strCurrencyCode = 'INR';
                $Price = $travelPlanDetail[0]['Price'];
                $NetPrice = $travelPlanDetail[0]['NetPrice'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = 0; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $DiscountVal = $travelPlanDetail[0]['DiscountVal'];
                // $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($DiscountVal + $customDiscount + $serviceTaxOnCustomDiscount));
                $objPackage = new Travel_Model_TblPackage();
                //echo "<pre>";print_r($travelPlanDetail);echo "</pre>";die;
                $rate = $objPackage->currencyExchangeRate($travelPlanDetail[0]['CurrencyType'], 1, $travelPlanDetail[0]['AgencySysId']);
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round($NetPrice * $rate);
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = count($roomjsonarray);
                $markuparray['SupplierSourceStr'] = 'VISA';
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['DiscountVal']; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
                $markuparray['MarketPlaceId'] = ($travelPlanDetail[0]['IsB2BProposal'] == 1) ? 2 : 1;
            }
            //echo "<pre>";print_r($markuparray);echo "</pre>";
            $this->view->guid = $this->GUID();
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($AgencySysId, $this->view->guid);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //end of customer detail
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (is_array($checkCustomerChatExist) && count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $IsB2CSite = $getAgentDetail['IsB2CSite'];
            $IsPaymentGateway = $getAgentDetail['IsPaymentGateway'];
            //print_r($getAgentDetail);
            if (!empty($IsB2CSite) && !empty($IsPaymentGateway)) {
                $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay-by-agency";
            } else {
                if (!empty($IsPaymentGateway)) {
                    $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay-by-agency";
                } else {
                    $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
                }
            }
            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($TPSysId);
//            echo "<pre>";print_r($isPlanViewed);
//            echo $isAgentLoggedIn;
            if ($isPlanViewed['IsPlanViewed'] == 0 && $isAgentLoggedIn == 0) {
                $objAgentStaff = new Travel_Model_TblAgencyStaff();
                $fieldName = array('SMSOpenAlert', 'EmailOpenAlert');
                $manageNotifications = $objAgentStaff->getAgencyWiseQueryAcknowledgement($isPlanViewed['AgencySysId'], $fieldName);

                $proposalList = $this->_crmcusttravelplan->GetCustomerVisaProposal($mid);
                //echo "<pre>";print_r($manageNotifications);
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                //$emailId = 'amit.k@catpl.co.in';
                $emailId = trim($getAgentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/booking-visa-review-customer/mid/" . base64_encode($mid) . "/tpid/" . base64_encode($TPSysId));
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                if (in_array('EmailOpenAlert', $manageNotifications)) {
                    $rt = $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);
                    //echo "<pre>";print_r($rt);
                }

                // Proposal Open Alert Mobile Notification

                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetail['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetail['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($getAgentDetail['ContactNo1']);
                //                $mobile_no = '8604853815';
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $TPSysId;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $AgentFirstName = trim($getAgentDetail['FirstName']) . ' ' . trim($getAgentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;

                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $TPSysId,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrSMSStatisticsType[0], // 2 For Resend
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                if (in_array('SMSOpenAlert', $manageNotifications)) {
                    // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                    //echo "<pre>";print_r($resultVal);
                    $resultVal['status'] = 'OK';
                    if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                        $errorMessage = "";
                    } else {
                        $errorMessage = "Oops! Please try again";
                    }
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $TPSysId;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }

            //#end
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;
				 
            $markupMdl = new Markup_Model_Markup();
            $isDisplayTax = $markupMdl->getDetailsAgencyCurrencyDeatil("TB_Agency", $travelPlanDetail[0]['AgencySysId']);
            $this->view->isDisplayTax = $isDisplayTax['TaxLabelId'];
            $this->view->tpid = $TPSysId;
            $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function makeVisaPaymentAction() {

        //echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $objAgency = new Travel_Model_TblAgency();
        $intXRefTrxNo = $this->getRequest()->getParam('TrxId');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $GUID = $this->getRequest()->getParam('GUID');
        $planId = $this->getRequest()->getParam('TpSysId');
        $AgencySysId = $this->getRequest()->getParam('udf2');
        $MasterTPSysId = '';
        $arrVisaPaxType = Zend_Controller_Action_HelperBroker::getStaticHelper('General')->getVisaPaxType();
        //echo "<pre>";print_r($arrVisaPaxType);die;
        $createDate = date('Y-m-d H:i:s');
        if ($planId != '') { //echo "HI"; exit;
            if ($strTrxStatus == "success") {
                $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
                $travelPlanDetail = $travelplanObj->GetVisaCustomerDetailsPax($planId);
                $ProposalCustomerMemberDetail = $travelplanObj->getProposalCustomerMemberDetail($planId);
                $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
                $visaSupportContact = $objAgency->checkSupportContact($AgencySysId, 6, 0, 0);
                //echo "<pre>";print_r($ProposalCustomerMemberDetail);die;
                $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
                $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
                $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
                $uid = base64_encode($this->getEnc($uid));
                $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
                $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
                $totalPax = count($RoomMemInfoJson);
                $roominfojson = isset($travelPlanDetail[0]['RoomMemInfoJson']) ? json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1) : array();
                $memberDetails = array();
                if (!empty($roominfojson)) {
                    for ($d = 1; $d <= count($roominfojson); $d++) {
                        $paxType = $arrVisaPaxType[$roominfojson[$d]['PaxType']];
                        $memberDetails[] = array('FirstName' => $roominfojson[$d]['FirstName'], 'LastName' => $roominfojson[$d]['LastName'], 'PaxType' => $paxType);
                    }
                }

                if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                    $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                    $disableAlltravelplan = array(
                        'StatusType' => 10,
                        'UpdateDate' => $createDate
                    );
                    $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                }
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 17,
                    'UpdateDate' => $createDate
                );
                //echo "<pre>";print_r($updatetravelplan);die;
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[17];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }

                //update accom table with bookingid
                $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                $updateQuery = array(
                    'XRefVoucherNo' => $intXRefTrxNo . "/" . $GUID,
                    'XRefBookingId' => $GUID,
                    'UpdateDate' => $createDate
                );
                $objCurd = new Visa_Model_Visa();
                $visaQueryPrposalTravelPlanId = $objCurd->updateTable("TB_Agency_Customer_TravelPlan_Visa", $updateQuery, $where);
                $msgArray = array('status' => 'success', 'msg' => 'Your payment is success');
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                $visaModel = new Visa_Model_Visa();
                $planFeesArray = $visaModel->GetAgencyVisaPlanFee($travelPlanDetail[0]['AgencySysId']);
                $planFeesArrayData = array();
                foreach ($planFeesArray as $pfkey => $pfVal) {
                    $planFeesArrayData[$pfVal['VisaPlanSysId']] = $pfVal;
                }
                //                echo "<pre>";print_r($planFeesArray);die;
                //send email to customer
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                if (isset($visaSupportContact) && !empty($visaSupportContact) && isset($visaSupportContact[0]['UserSysId'])) {
                    $AgentSysId = $visaSupportContact[0]['UserSysId'];
                }
                $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
                $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                //echo "<pre>";print_r($getAgencyDetail);die;
                $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
                $travelPlanDetail = $travelplanObj->GetVisaCustomerDetailsPax($planId);
                $html->assign('type', 'VisaBookingPaymentConfirmationEmail');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('getAgencyDetail', $getAgencyDetail);
                $html->assign('planFeesArrayData', $planFeesArrayData);
                $html->assign('ProposalCustomerMemberDetail', $ProposalCustomerMemberDetail);

                //$html->assign('URL', $encryptData);
                $paymentconfirmText = $html->render('email-template.phtml');
                $html->assign('type', 'VisaBookingConfirmationEmailText');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('getAgencyDetail', $getAgencyDetail);

                $bookingConfirmText = $html->render('email-template.phtml');
                //echo $bookingConfirmText;die;
                //$emailId ='amit.k@catpl.co.in';
                $emailId = trim($travelPlanDetail[0]['ProposalEmailTo']);
                $emailSendId = trim($getAgentDetail['EmailId']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                if ($emailId != '') {
                    $emailData1 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => trim($travelPlanDetail[0]['DestinationPlaces']) . ' Visa Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                    $emailData2 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => trim($travelPlanDetail[0]['DestinationPlaces']) . ' Visa Application Detail', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                    try {
                        //echo "success";
                        $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                        $arrEmailStatistics = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $paymentconfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $arrEmailStatistics2 = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $bookingConfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $msg = "success";
                    } catch (Exception $err) {
                        //print_r($err, true);
                        $msg = "failed";
                    }
                }
                //end of send email to customer
            }
            if ($strTrxStatus == "failure") {
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 7,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:27 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[7];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }
                $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful' . $$this->getRequest()->getParam('error_Message'));
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                exit;
            }
        } else {
            $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful Id Mismatch');
            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
        }
        $paymentGateway = new Payment_Model_Payment();
        $checkPaymentSetting = $paymentGateway->checkPaymentgatewaySetting($AgencySysId);
        if (!empty($checkPaymentSetting) && ($checkPaymentSetting['IsB2CSite'] == true)) {
            $udf5ReturnURL = Catabatic_Helper::getSiteUrl() . "/proposal/booking-visa-confirmation/mid/" . base64_encode($MasterTPSysId) . "/tpid/" . base64_encode($planId);
            $udf5ReturnURL1 = $checkPaymentSetting['Url'] . "detail/index/view/id/" . base64_encode($udf5ReturnURL);
            $this->_redirect($udf5ReturnURL1);
            exit;
        } else {
            $this->_redirect("/proposal/booking-visa-confirmation/mid/" . base64_encode($MasterTPSysId) . "/tpid/" . base64_encode($planId));
            exit;
        }
    }

    public function bookingVisaConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        if ($TPSysId == '') {
            $this->view->error = 1;
        } else {
            $this->view->error = 0;
            $travelPlanDetail = $this->_crmcusttravelplan->GetVisaCustomerDetailsPax($TPSysId);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            if ($AgencySysId == 4250) {
                $paymentGateway = new Payment_Model_Payment();
                $checkPaymentSetting = $paymentGateway->checkPaymentgatewaySetting($AgencySysId);
                $secureCode = $this->secureCode($TPSysId, "GTX1234");
                $udf5ReturnURL1 = $checkPaymentSetting['Url'] . '/visa/payment-status/TPSysId/' . $TPSysId . '/code/' . $secureCode;
                echo "<script>top.window.location = '" . $udf5ReturnURL1 . "'</script>";
                die;
            }
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getCustomerDetail = $this->_crmcustomerObj->ChkAgencyUser($CustomerSysId);

            $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
            $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CustomerSysId, $AgencySysId, $TPSysId);
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == "6") {
                $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
            }

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (!empty($checkCustomerChatExist)) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //echo "<pre>";print_r($chatSenderDetails);
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $getCustomerDetail[0]['TPSysId'] = $travelPlanDetail[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
            $getCustomerDetail[0]['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        }
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
    }

    public function visaVoucherAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetVisaCustomerDetailsTrx($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->getAgencyDetail = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
    }

    public function visaInvoiceAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $trxid = $this->_HtmlPurifier->filter(intval(base64_decode($this->getRequest()->getParam('trxid'))));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $customerTravelPlanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $packageDetails = $travelPlanDetail = $this->_crmcusttravelplan->GetVisaCustomerDetailsTrx($TPSysId);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
        //$getAgencyDetail['fullAddress']=isset($agencyAddress['CityName'])?$agencyAddress['CityName'].$agencyState.$agencyCountry:'';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->getAgencyDetail = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $arrPaymentHistory = $objTrx->getTrasactionProposalByTPSysId($TPSysId, $trxid);
        $packageDetails['InvoiceId'] = $arrPaymentHistory[0]['InvoiceId'];
        $arrInvoiceDate = (array) $arrPaymentHistory[0]['TrxDate'];
        $arrInvoiceDate = explode(" ", $arrInvoiceDate['date']);
        $InvoiceDate = $arrInvoiceDate[0];

        $packageDetails['InvoiceDate'] = $InvoiceDate;
        $getAdvancedBalance = $customerTravelPlanObj->getAdvancedBalance($TPSysId);
        $TotalAmountPaid = isset($getAdvancedBalance[0]['TotalAmountPaid']) ? $getAdvancedBalance[0]['TotalAmountPaid'] : 0;
        $adultPax = 0;
        $childPax = 0;
        $departuredate = '';

        $RoomInfoJson = json_decode($packageDetails[0]['RoomInfoJson']);
        foreach ($RoomInfoJson as $res) {
            $adultPax += $res->Adult;
            $childPax += $res->Child;
            $departuredate = $res->departuredate;
        }

        $packageDetails['adultPax'] = $adultPax;
        $packageDetails['childPax'] = $childPax;
        $BasePrice = $arrPaymentHistory[0]['NetAmount'];
        $packageDetails['BaseCost'] = $BasePrice;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $getPlanTypeArray = $customhelper->getPlanTypeName();
        $planName = strtolower($getPlanTypeArray[$packageDetails[0]['PlanType']]);
        $isShareWithFlight = false;
        $invoiceData = array(
            'ProposalID' => $packageDetails[0]['TPSysId'] . "/V" . $packageDetails[0]['VersionId'],
            'TPSysId' => $packageDetails[0]['TPSysId'],
            'MasterTPSysId' => $packageDetails[0]['MasterTPSysId'],
            'GSTSharedMode' => $packageDetails[0]['GSTSharedMode'],
            'AgentSysId' => $packageDetails[0]['AgentSysId'],
            'CustomerSysId' => $packageDetails[0]['CustomerSysId'],
            'SACCode' => $packageDetails[0]['SACCode'],
            'Title' => $packageDetails[0]['Title'],
            'InvoiceDate' => $packageDetails['InvoiceDate'],
            'Price' => $packageDetails[0]['Price'],
            'DiscountVal' => 0,
            'MarkUp' => $packageDetails[0]['MarkUp'],
            'AgencyMarkUp' => $packageDetails[0]['AgencyMarkUp'],
            'GTXMarkup' => $packageDetails[0]['GTXMarkup'],
            'TotalMarkUpApply' => (($packageDetails[0]['MarkUp'] + $packageDetails[0]['GTXMarkup'] + $packageDetails[0]['AgencyMarkUp']) - ((float) $packageDetails[0]['DiscountVal'] + (float) $packageDetails[0]['CustomDiscount'])),
            'TotalAdvancedBalance' => $TotalAmountPaid,
            'BaseCost' => $packageDetails['BaseCost'],
            'NETTOTAL' => $packageDetails[0]['Price'],
            'adultPax' => $packageDetails['adultPax'],
            'childPax' => $packageDetails['childPax'],
            'description' => $packageDetails[0]['Title'] . ". Adult:-" . $packageDetails['adultPax'] . " Child:-" . $packageDetails['childPax'] . " Departure Date:-" . $departuredate,
            'departuredate' => $departuredate,
            'InvoiceType' => isset($planName) ? $planName : 'package',
            'isShareWithFlight' => $isShareWithFlight,
            'misItemsFlightName' => 'Flight',
            'Items_SAC_Code2' => '440063',
            'description2' => "Flight",
            'rates2' => isset($flightArray['totalcost_wom']) ? $flightArray['totalcost_wom'] : 0,
            'markup2' => isset($flightArray['total_markup']) ? $flightArray['total_markup'] : 0,
            'markup_type2' => 1,
            'servicefeetotal2' => 2,
            'GSTPercentage2' => 18
        );

        $sessionInvoiceData = new Zend_Session_Namespace('sessionInvoiceData');
        $sessionInvoiceData->params = $invoiceData;
        $this->_redirect('finance/miscellaneous/newinvoice');
    }

    public function visaViewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }

        $travelPlanDetail = $this->_crmcusttravelplan->GetVisaCustomerDetailsTrx($TPSysId);
        //customer detail
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if (isset($CustomerSysId) && !empty($CustomerSysId)) {
            $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $TPSysId) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($TPSysId);
            $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $TPSysId;
                $chatSenderDetails['AgencySysId'] = $AgencySysId;
                $chatSenderDetails['CustomerSysId'] = $travelPlanDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $AgentSysId;
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
        $this->view->encid = $encydataForTnc;
    }

    //for other services preview
    public function previewSightseeingResultAction() {
        $this->_helper->layout->disableLayout();
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        if (isset($TPSysId) && !empty($TPSysId)) {
            $proposalList = $this->_crmcusttravelplan->GetCustomerSightSeeingProposal($TPSysId);
            $leadDetail = $this->_crmcusttravelplan->GetTravelPlanByCustomer($TPSysId);

            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($TPSysId));
                exit;
            }
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($leadDetail[0]['CustomerSysId']);
            //print_r($getCustomerDetail);
            $CustomerSysId = $getCustomerDetail[0]['CustomerSysId'];
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($proposalList[0]['AgentSysId'])) : array();
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);

            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($proposalList[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $intLoggedinUserAgencySysId;
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($proposalList[0]['AgentSysId']);
            $AgencySysId = $proposalList[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($TPSysId);
            //echo "<pre>";print_r($proposalList);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                //$emailId = 'amit.k@catpl.co.in';
                $emailId = trim($agentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $agentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/preview-sightseeing-result/mid/" . base64_encode($TPSysId) . "/type/");
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $leadDetail[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $leadDetail[0]['AgencySysId'],
                    "AgentSysId" => $leadDetail[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification
                $getAgentDetails = $this->_crmcusttravelplan->getAgentDetails(trim($proposalList[0]['AgentSysId']));

                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetails['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetails['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($agentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $TPSysId;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $AgentFirstName = trim($agentDetail['FirstName']) . ' ' . trim($agentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                //$massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;

                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $TPSysId,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => $leadDetail[0]['AgencySysId'],
                    "AgentSysId" => $leadDetail[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );

                // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $TPSysId;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->leadDetail = $leadDetail;
            $this->view->proposalList = $proposalList;
            $this->view->mid = $TPSysId;
        }
    }

    public function bookingSightseeingReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "2";
        $this->view->strTrxType = "H";
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerSightSeeingleadDetail($TPSysId);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);

            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);

            // for wallet use
            $this->view->strReturnURL = Catabatic_Helper::getSiteUrl() . "proposal/make-sightseeing-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->strErrorURL = Catabatic_Helper::getSiteUrl() . "proposal/make-sightseeing-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == 9) { // 
                $strCurrencyCode = 'INR';
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = count($roomjsonarray);
                $markuparray['SupplierSourceStr'] = 'VISA';
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['DiscountVal']; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
            }
            $this->view->guid = $this->GUID();
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($this->intLoggedinUserAgencySysId, $this->view->guid);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //end of customer detail
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;

            $this->view->tpid = $TPSysId;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function makeSightseeingPaymentAction() {

        // echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $intXRefTrxNo = $this->getRequest()->getParam('txnid');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $planId = $this->getRequest()->getParam('TpSysId');
        $MasterTPSysId = '';
        $createDate = date('Y-m-d H:i:s');
        if ($planId != '') { //echo "HI"; exit;
            if ($strTrxStatus == "success") {
                $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
                $travelPlanDetail = $travelplanObj->GetSightSeeingCustomerDetailsPax($planId);
                //echo "<pre>";print_r($travelPlanDetail);die;
                $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
                $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
                $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
                $uid = base64_encode($this->getEnc($uid));
                $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
                $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
                $totalPax = count($RoomMemInfoJson);
                $roominfojson = isset($travelPlanDetail[0]['RoomMemInfoJson']) ? json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1) : array();
                $memberDetails = array();
                if (!empty($roominfojson)) {
                    for ($d = 1; $d <= count($roominfojson); $d++) {
                        $memberDetails[] = array('FirstName' => $roominfojson[$d]['FirstName'], 'LastName' => $roominfojson[$d]['LastName'], 'DOB' => @$roominfojson[$d]['DOB']);
                    }
                }

                if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                    $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                    $disableAlltravelplan = array(
                        'StatusType' => 10,
                        'UpdateDate' => $createDate
                    );
                    $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                }
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 17,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[17];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }

                //update accom table with bookingid
                $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                $updateQuery = array(
                    'XRefVoucherNo' => $planId,
                    'UpdateDate' => $createDate
                );
                $objCurd = new Visa_Model_Visa();
                $visaQueryPrposalTravelPlanId = $objCurd->updateTable("TB_Agency_Customer_TravelPlan_SightSeeing", $updateQuery, $where);
                $msgArray = array('status' => 'success', 'msg' => 'Your payment is success');
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                //send email to customer
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                //$agentDetail=$agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($travelPlanDetail[0]['AgentSysId']);
                //$getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'],'AgentContact'=>$agentDetail['ContactNo1'],'AgentEmail'=>$agentDetail['EmailId']);
                $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                //echo "<pre>";print_r($getAgencyDetail);die;
                $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                $html->assign('type', 'SightSeeingBookingPaymentConfirmationEmail');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                //$html->assign('URL', $encryptData);
                $paymentconfirmText = $html->render('email-template.phtml');
                $html->assign('type', 'SightSeeingBookingConfirmationEmailText');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $bookingConfirmText = $html->render('email-template.phtml');
                //$emailId ='amit.k@catpl.co.in';
                $emailId = trim($travelPlanDetail[0]['ProposalEmailTo']);
                $emailSendId = trim($getAgentDetail['EmailId']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                if ($emailId != '') {
                    $emailData1 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => stripslashes($travelPlanDetail[0]['VisaName']) . ' Trip Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                    $emailData2 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => stripslashes($travelPlanDetail[0]['VisaName']) . ' Trip Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                    try {
                        //echo "success";
                        $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                        $arrEmailStatistics = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $paymentconfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $arrEmailStatistics2 = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $bookingConfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $msg = "success";
                    } catch (Exception $err) {
                        //print_r($err, true);
                        $msg = "failed";
                    }
                }
                //end of send email to customer
            }
            if ($strTrxStatus == "failure") {
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 7,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:27 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[7];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }
                $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful' . $$this->getRequest()->getParam('error_Message'));
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                exit;
            }
        } else {
            $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful Id Mismatch');
            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
        }
        $this->_redirect("/proposal/booking-sightseeing-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId));
        exit;
    }

    public function bookingSightseeingConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        if ($TPSysId == '') {
            $this->view->error = 1;
            //echo "Please try again";
            //die;
        } else {
            $this->view->error = 0;
            $travelPlanDetail = $this->_crmcusttravelplan->GetSightseeingCustomerDetailsPax($TPSysId);
            //echo "<pre>";print_r($travelPlanDetail);die;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getCustomerDetail = $this->_crmcustomerObj->ChkAgencyUser($CustomerSysId);
            //echo "<pre>";print_r($getCustomerDetail);
            //customer detail
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CustomerSysId, $travelPlanDetail[0]['AgencySysId'], $TPSysId);
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == "9") {
                $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
            }

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;

                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //echo "<pre>";print_r($chatSenderDetails);
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($getLeadlist[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
    }

    public function sightseeingVoucherAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetSightSeeingCustomerDetailsTrx($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
    }

    public function sightseeingInvoiceAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetSightSeeingCustomerDetailsTrx($TPSysId);
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        //echo "<pre>";print_r($getAgencyDetail);die;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $this->view->getallstatustype = $customhelper->getAllStatusType();
    }

    public function sightseeingViewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }

        $travelPlanDetail = $this->_crmcusttravelplan->GetSightseeingCustomerDetailsTrx($TPSysId);
        //customer detail
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $travelPlanDetail = $travelplanObj->GetSightSeeingCustomerDetailsPax($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if (isset($CustomerSysId) && !empty($CustomerSysId)) {
            $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerDetails($TPSysId);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $TPSysId) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($TPSysId);
            $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $TPSysId;
                $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                $chatSenderDetails['CustomerSysId'] = $travelPlanDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $agencyStaffObj = new Travel_Model_TblAgencyStaff();
        $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
    }

    //for other services preview activity
    public function previewActivityResultAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        if (isset($mid) && !empty($mid)) {
            $proposalList = $this->_crmcusttravelplan->GetCustomerActivityProposal($mid);
            //echo "<pre>";print_r($proposalList);die;
            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-activity-confirmation/mid/' . base64_encode($TPSysId) . '/tpid/' . base64_encode($proposalList[0]['TPSysId']));
                exit;
            }
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($proposalList[0]['CustomerSysId']);
            //print_r($getCustomerDetail);
            $CustomerSysId = $getCustomerDetail[0]['CustomerSysId'];
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $mid, trim($proposalList[0]['AgentSysId'])) : array();
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($mid, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);

            //query for get customer chat history
            $chatSenderDetails = array();
            $AgentSysId = $proposalList[0]['AgentSysId'];
            $AgencySysId = $proposalList[0]['AgencySysId'];
            $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($AgentSysId);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getCustomerDetail[0]['TPSysId'] = $proposalList[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $AgencySysId;
            $getCustomerDetail[0]['AgentSysId'] = $AgentSysId;
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $mid;
                    $chatSenderDetails['AgencySysId'] = $AgencySysId;
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($mid);
            //echo "<pre>";print_r($proposalList);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                //$emailId = 'amit.k@catpl.co.in';
                $emailId = trim($getAgentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/preview-activity-result/mid/" . base64_encode($mid));
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification
                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetail['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetail['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($getAgentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $mid;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $AgentFirstName = trim($getAgentDetail['FirstName']) . ' ' . trim($getAgentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                //$massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;

                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $mid,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrSMSStatisticsType[0], // 2 For Resend
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );

                // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $mid;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->leadDetail = $proposalList;
            $this->view->proposalList = $proposalList;
            $this->view->mid = $mid;
            $encydataForTnc = $this->getEnc($proposalList[0]['TPSysId'] . ":" . $proposalList[0]['AgencySysId'] . ":" . $proposalList[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        }
    }

    public function bookingActivityReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));

        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "8";
        $this->view->strTrxType = "A";
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerActivityleadDetail($TPSysId);
//            echo "<pre>";
//            print_r($travelPlanDetail);
//            die;
            if ($travelPlanDetail[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-activity-confirmation/mid/' . base64_encode($mid) . '/tpid/' . base64_encode($TPSysId));
                exit;
            }
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);
            //echo "<pre>";print_r($getCustomerDetail);die;
            //get detail for activity overview
            $objActivity = new Activity_Model_Activity();
            $arrActivityDetails = $objActivity->activityDetailById($travelPlanDetail[0]['InvnItemSysId']);
            //echo "<pre>";print_r($travelPlanDetail);die;
            //#end of get detail for activity overview
            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
            $getCustomerDetail[0]['TPSysId'] = $travelPlanDetail[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
            $getCustomerDetail[0]['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
            $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($AgentSysId);
            //$getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'],'AgentContact'=>$agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            //print_r($guestDetails);die;
            // for wallet use
            $this->view->strReturnURL = Catabatic_Helper::getSiteUrl() . "proposal/make-activity-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->strErrorURL = Catabatic_Helper::getSiteUrl() . "proposal/make-activity-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $AgentSysId;
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == 8) { // 
                $strCurrencyCode = 'INR';
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $DiscountVal = $travelPlanDetail[0]['DiscountVal'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($DiscountVal + $customDiscount + $serviceTaxOnCustomDiscount));
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = count($roomjsonarray);
                $markuparray['SupplierSourceStr'] = 'ACTIVITY';
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['DiscountVal']; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
                $markuparray['MarketPlaceId'] = ($travelPlanDetail[0]['IsB2BProposal'] == 1) ? 2 : 1;
            }
            //echo "<pre>";print_r($markuparray);
            $this->view->guid = $this->GUID();
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($AgencySysId, $this->view->guid);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //end of customer detail
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($mid);
            //echo "<pre>";print_r($getAgentDetail);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $proposalList = $this->_crmcusttravelplan->GetCustomerActivityProposal($mid);
                //echo "<pre>";print_r($proposalList);die;
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                //$emailId = 'amit.k@catpl.co.in';
                $emailId = trim($getAgentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/booking-activity-review-customer/mid/" . base64_encode($mid) . "/tpid/" . base64_encode($TPSysId));
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification

                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetail['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetail['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($getAgentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $TPSysId;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $AgentFirstName = trim($getAgentDetail['FirstName']) . ' ' . trim($getAgentDetail['LastName']);
                $custPhone = trim($getCustomerDetail[0]['Contacts']);
                $massage = "Dear " . trim($AgentFirstName) . ",\n" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . " has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . " using link " . $link . ". Call at " . $custPhone . " to help in trip planning.\nHappy Selling\nTRVCRM";
                //                $massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;

                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $TPSysId,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrSMSStatisticsType[0], // 2 For Resend
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );

                // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $mid;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end


            $IsB2CSite = $getAgentDetail['IsB2CSite'];
            $IsPaymentGateway = $getAgentDetail['IsPaymentGateway'];
            //print_r($getAgentDetail);
            if (!empty($IsB2CSite) && !empty($IsPaymentGateway)) {
                $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay-by-agency";
            } else {
                if (!empty($IsPaymentGateway)) {
                    $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay-by-agency";
                } else {
                    $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
                }
            }
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->arrActivityDetails = $arrActivityDetails;
            $objThings = new Cityprofiling_Model_TblCityprofiling();
            $this->view->arrThingsToCarryList = $objThings->getThingsToCarryList();
            //Get Activities Group Type List 
            $objActivities = new Travel_Model_TblActivities();
            $this->view->arrActivitiesGroupTypeList = $objActivities->getAllActivityGroupTypeList();

            //echo "<pre>";print_r($arrActivityDetails);die;

            $this->view->tpid = $TPSysId;

            $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function makeActivityPaymentAction() {

        //echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $intXRefTrxNo = $this->getRequest()->getParam('TrxId');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $GUID = $this->getRequest()->getParam('GUID');
        $planId = $this->getRequest()->getParam('TpSysId');
        $MasterTPSysId = '';
        $createDate = date('Y-m-d H:i:s');
        $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $travelPlanDetail = $travelplanObj->GetActivityCustomerDetailsPax($planId);
        $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
        if ($planId != '') { //echo "HI"; exit;
            if ($strTrxStatus == "success") {
                //echo "<pre>";print_r($travelPlanDetail);die;
                $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
                $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
                $uid = base64_encode($this->getEnc($uid));
                $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
                $totalPax = count($RoomMemInfoJson);
                $roominfojson = isset($travelPlanDetail[0]['RoomMemInfoJson']) ? json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1) : array();
                $memberDetails = array();
                if (!empty($roominfojson)) {
                    for ($d = 1; $d <= count($roominfojson); $d++) {
                        $memberDetails[] = array('FirstName' => $roominfojson[$d]['FirstName'], 'LastName' => $roominfojson[$d]['LastName'], 'DOB' => @$roominfojson[$d]['DOB']);
                    }
                }

                if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                    $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                    $disableAlltravelplan = array(
                        'StatusType' => 10,
                        'UpdateDate' => $createDate
                    );
                    $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                }
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 17,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[17];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }

                //update accom table with bookingid
                $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                //$XRefVoucherNo=$planId."/".$intXRefTrxNo;
                $updateQuery = array(
                    'XRefVoucherNo' => $intXRefTrxNo . "/" . $GUID,
                    'XRefBookingId' => $GUID,
                    'UpdateDate' => $createDate
                );
                $objCurd = new Activity_Model_Activity();
                $visaQueryPrposalTravelPlanId = $objCurd->updateTable("TB_Agency_Customer_TravelPlan_Itenary_Events", $updateQuery, $where);
                $msgArray = array('status' => 'success', 'msg' => 'Your payment is success');
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                //send email to customer
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                //$agentDetail=$agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                //$getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'],'AgentContact'=>$agentDetail['ContactNo1'],'AgentEmail'=>$agentDetail['EmailId'],'Signature'=>trim($agentDetail['Signature']));
                $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($travelPlanDetail[0]['AgentSysId']);
                $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                $objActivity = new Activity_Model_Activity();
                $arrActivityDetails = $objActivity->activityDetailById($travelPlanDetail[0]['InvnItemSysId']);
                //echo "<pre>";print_r($getAgencyDetail);die;
                $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                $html->assign('type', 'ActivityBookingPaymentConfirmationEmail');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $html->assign('arrActivityDetails', $arrActivityDetails);

                //$html->assign('URL', $encryptData);
                $paymentconfirmText = $html->render('email-template.phtml');
                $html->assign('type', 'ActivityBookingConfirmationEmailText');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $html->assign('arrActivityDetails', $arrActivityDetails);
                $bookingConfirmText = $html->render('email-template.phtml');
                //$emailId ='amit.k@catpl.co.in';
                $emailId = trim($travelPlanDetail[0]['ProposalEmailTo']);
                $emailSendId = trim($getAgentDetail['EmailId']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                if ($emailId != '') {
                    $emailData1 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => stripslashes($travelPlanDetail[0]['Title']) . ' Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                    $emailData2 = array('fromEmail' => $emailSendId, 'fromName' => $fromName, 'subject' => stripslashes($travelPlanDetail[0]['Title']) . ' Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                    try {
                        $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                        $arrEmailStatistics = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $paymentconfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $arrEmailStatistics2 = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $bookingConfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        //echo "success";
                        $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $msg = "success";
                    } catch (Exception $err) {
                        //print_r($err, true);
                        $msg = "failed";
                    }
                }
                //end of send email to customer
            }
            if ($strTrxStatus == "failure") {
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 7,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:27 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[7];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }
                $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful' . $this->getRequest()->getParam('error_Message'));
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                //exit;
            }
        } else {
            $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful Id Mismatch');
            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
        }
        $this->_redirect("/proposal/booking-activity-confirmation/mid/" . base64_encode($MasterTPSysId) . "/tpid/" . base64_encode($planId));
        exit;
    }

    public function bookingActivityConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        if ($TPSysId == '') {
            $this->view->error = 1;
            //echo "Please try again";
            //die;
        } else {
            $this->view->error = 0;
            $travelPlanDetail = $this->_crmcusttravelplan->GetActivityCustomerDetailsPax($TPSysId);
            //echo "dddddddddd"."<pre>";print_r($travelPlanDetail);die;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getCustomerDetail = $this->_crmcustomerObj->ChkAgencyUser($CustomerSysId);
            //echo "<pre>";print_r($getCustomerDetail);
            //customer detail
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CustomerSysId, $travelPlanDetail[0]['AgencySysId'], $TPSysId);
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == "8") {
                $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
            }

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            if (is_array($checkCustomerChatExist) && (count($checkCustomerChatExist) > 0)) {
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            } else if (is_array($getChatHistoryDetail)) {
                $getCustomerDetail['userChatExist'] = count($getChatHistoryDetail);
            } else {
                
            }
            // $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;

                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $getAgentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //echo "<pre>";print_r($chatSenderDetails);
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($getLeadlist[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getCustomerDetail[0]['TPSysId'] = $getLeadlist[0]['TPSysId'];
            $getCustomerDetail[0]['AgencySysId'] = $getLeadlist[0]['AgencySysId'];
            $getCustomerDetail[0]['AgentSysId'] = $getLeadlist[0]['AgentSysId'];
            //$getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'],'AgentContact'=>$agentDetail['ContactNo1'],'AgentEmail'=>$agentDetail['EmailId']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
            $this->view->encid = $encydataForTnc;
        }
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
    }

    public function activityVoucherAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetActivityCustomerDetailsTrx($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
        $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $objActivity = new Activity_Model_Activity();
        $arrActivityDetails = !empty($travelPlanDetail[0]['InvnItemSysId']) ? $objActivity->activityDetailById($travelPlanDetail[0]['InvnItemSysId']) : '';
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->getAgencyDetail = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $this->view->arrActivityDetails = $arrActivityDetails;
    }

    public function activityInvoiceAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetActivityCustomerDetailsTrx($TPSysId);
        //echo "<pre>";print_r($travelPlanDetail);die;
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($travelPlanDetail[0]['AgentSysId']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $objActivity = new Activity_Model_Activity();
        $arrActivityDetails = !empty($travelPlanDetail[0]['InvnItemSysId']) ? $objActivity->activityDetailById($travelPlanDetail[0]['InvnItemSysId']) : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $this->view->arrActivityDetails = $arrActivityDetails;
        //echo "<pre>";print_r($getAgencyDetail);die;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $this->view->getallstatustype = $customhelper->getAllStatusType();
    }

    public function activityViewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }

        $travelPlanDetail = $this->_crmcusttravelplan->GetActivityCustomerDetailsTrx($TPSysId);

        //customer detail
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        //$travelPlanDetail=$travelplanObj->GetActivityCustomerDetailsPax($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if (isset($CustomerSysId) && !empty($CustomerSysId)) {
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $TPSysId) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($TPSysId);
            $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $TPSysId;
                $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                $chatSenderDetails['CustomerSysId'] = $travelPlanDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $getAgentDetail = $this->_crmcusttravelplan->GetAgentDetails($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        //$getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'],'AgentContact'=>$agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $encydataForTnc = $this->getEnc($travelPlanDetail[0]['TPSysId'] . ":" . $travelPlanDetail[0]['AgencySysId'] . ":" . $travelPlanDetail[0]['CustomerSysId']);
        $this->view->encid = $encydataForTnc;
    }

    //for other services preview insurance
    public function previewInsuranceResultAction() {
        $this->_helper->layout->disableLayout();
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        if (isset($TPSysId) && !empty($TPSysId)) {
            $proposalList = $this->_crmcusttravelplan->GetCustomerInsuranceProposal($TPSysId);
            $leadDetail = $this->_crmcusttravelplan->GetTravelPlanByCustomer($TPSysId);
            //echo "<pre>";print_r($proposalList);die;
            if ($proposalList[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($TPSysId));
                exit;
            }
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($leadDetail[0]['CustomerSysId']);
            //print_r($getCustomerDetail);
            $CustomerSysId = $getCustomerDetail[0]['CustomerSysId'];
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($proposalList[0]['AgentSysId'])) : array();
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);

            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($proposalList[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $intLoggedinUserAgencySysId;
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $proposalList[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($proposalList[0]['AgentSysId']);
            $AgencySysId = $proposalList[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

            //send email to agent when customer open proposal
            $isPlanViewed = $this->_crmcusttravelplan->GetTravelPlanType($TPSysId);
            //echo "<pre>";print_r($proposalList);die;
            if ($isPlanViewed['IsPlanViewed'] == 0) {
                $emailSendId = trim($getAgencyDetail['PrimaryEmail']);
                $fromName = (isset($getAgencyDetail['DisplayName']) && !empty($getAgencyDetail['DisplayName'])) ? trim($getAgencyDetail['DisplayName']) : trim(trim($getAgencyDetail['Title']));
                //$emailId = 'amit.k@catpl.co.in';
                $emailId = trim($agentDetail['EmailId']);
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $html->assign('type', 'OtherServicesViewSendEmailToAgent');
                $html->assign('customerDetails', $getCustomerDetail);
                $html->assign('agentDetails', $agentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $link = $this->view->baseUrl("/proposal/preview-sightseeing-result/mid/" . base64_encode($TPSysId) . "/type/");
                $html->assign('link', $link);
                $html->assign('data', $proposalList);
                //$html->assign('data', $hotelValues);
                $bodyText = $html->render('email-template.phtml');
                $subject = 'HelloGTX - Proposal Open Alert !';
                if ($getAgencyDetail['IsDisplayHelloGTX'] == 1) {
                    $subject = $fromName . ' - Proposal Open Alert !';
                }
                $emailData = array('fromEmail' => trim($emailSendId), 'fromName' => trim($fromName), 'subject' => $subject, 'to' => array(trim($emailId)), 'bodyHtml' => $bodyText, 'bodyText' => '');
                $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                $arrEmailStatistics = array(
                    "TPSysId" => $proposalList[0]['TPSysId'],
                    "TypeSysId" => 1, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $bodyText,
                    "Source" => $arrEmailStatisticsType[2], // 3 For Resend proposal
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );
                $this->mailSentByElastice($emailData, $arrEmailStatistics, 0, 0);

                // Proposal Open Alert Mobile Notification
                $getAgentDetails = $this->_crmcusttravelplan->GetAgentDetails($proposalList[0]['AgentSysId']);

                $countrycode = (strpos($getCustomerDetail[0]['countrycode'], '+') !== false) ? $getCustomerDetail[0]['countrycode'] : "+" . $getCustomerDetail[0]['countrycode'];
                $CustomerMobileNumber = Trim($countrycode) . '' . trim($getCustomerDetail[0]['Contacts']);
                $customerFirstName = trim($getCustomerDetail[0]['FirstName']);
                $destination = trim(stripslashes($proposalList[0]['DestinationPlaces']));
                $postData = array(
                    "UserSysId" => trim($proposalList[0]['AgentSysId']),
                    // "IsSchedule" => False,
                    "schedule_time" => "",
                    "title" => "Proposal Open Alert",
                    "body" => "Boom! Proposal Unlocked! $customerFirstName just opened the $destination proposal.",
                    //"IsButton" => True,
                    // "URL" => "proposal/preview-hotel-result/mid/" . base64_encode($mid) . "/pid/" . base64_encode($pid) . "/uid/" . base64_encode($uid) . "/type/" . base64_encode($type),
                    "IsCall" => true,
                    "mobileNo" => trim($CustomerMobileNumber)
                );
                if (isset($getAgentDetails['SecurityKey'])) {
                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                        CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_HTTPHEADER => array(
                            'securitykey:' . trim($getAgentDetails['SecurityKey']),
                        //'Content-Type: application/json'
                        ),
                    ));
                    $response = curl_exec($curl);
                    curl_close($curl);
                }
                // Proposal Open Alert Mobile Notification
                //send sms
                $mobile_no = trim($agentDetail['ContactNo1']);
                $updateData = new Payment_Model_Checkotp();
                //$massage = "Your Customer(".trim($getcustomerDetail[0]['Contacts']).") has just opened the proposal. Team HelloGTX";
                $params['TPSysId'] = $TPSysId;
                $params['shared_url'] = $link;
                $params['AgencySysId'] = $proposalList[0]['AgencySysId'];
                $params['AgentSysId'] = $proposalList[0]['AgentSysId'];
                $shorturl_response = Zend_Controller_Action_HelperBroker::getStaticHelper('ShortUrl')->url_get($params);
                if (isset($shorturl_response['status_code']) && $shorturl_response['status_code'] == 200) {
                    $link = $shorturl_response['data']['short_url'];
                }
                $massage = "Your Customer(" . trim($getCustomerDetail[0]['FirstName']) . " " . trim($getCustomerDetail[0]['LastName']) . "-" . trim($getCustomerDetail[0]['Contacts']) . ") has just opened the proposal for " . trim(stripslashes($proposalList[0]['DestinationPlaces'])) . ",Click: " . $link . " to view and assist for finalizing.";
                $this->postFields = "";
                $this->postFields .= "&method=$this->SMSMETHOD";
                $this->postFields .= "&api_key=$this->SMSAPIKEY";
                $this->postFields .= "&to=$mobile_no";
                $this->postFields .= "&sender=$this->SMSSENDER";
                $this->postFields .= "&message=$massage";
                $this->postFields .= "&format=$this->SMSFORMAT";
                $postURL = $this->SMSURL;

                $arrSMSStatisticsType = array_keys(unserialize(ARR_SMS_STATISTICS_TYPE));
                $arrSMSStatistics = array(
                    "TPSysId" => $TPSysId,
                    "TypeSysId" => 2, // 1 For Email 2 For SMS
                    "AgencySysId" => $proposalList[0]['AgencySysId'],
                    "AgentSysId" => $proposalList[0]['AgentSysId'],
                    "Title" => $massage,
                    "Source" => $arrSMSStatisticsType[0], // 2 For Resend
                    "Status" => 0,
                    "RefSysId" => "",
                    "RefSysStatus" => "",
                    "CreateDate" => date('Y-m-d H:i:s')
                );

                // $resultVal = $updateData->sendSmsDetails($postURL, $this->postFields, $arrSMSStatistics);
                $resultVal['status'] = 'OK';
                if (isset($resultVal['status']) && $resultVal['status'] == 'OK') {
                    $errorMessage = "";
                } else {
                    $errorMessage = "Oops! Please try again";
                }
                //end of send sms

                $data = array(
                    'isPlanViewed' => 1,
                    'UpdateDate' => date('Y-m-d H:i:s'),
                );
                $where = "TPSysId = " . $TPSysId;
                $updatetravelplanrecord = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($data, $where);
            }
            //#end
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->leadDetail = $leadDetail;
            $this->view->proposalList = $proposalList;
            $this->view->mid = $TPSysId;
        }
    }

    public function bookingInsuranceReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "2";
        $this->view->strTrxType = "H";
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerInsuranceleadDetail($TPSysId);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);

            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);

            // for wallet use
            $this->view->strReturnURL = Catabatic_Helper::getSiteUrl() . "proposal/make-insurance-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->strErrorURL = Catabatic_Helper::getSiteUrl() . "proposal/make-insurance-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == 4) { // 
                $strCurrencyCode = 'INR';
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = count($roomjsonarray);
                $markuparray['SupplierSourceStr'] = 'VISA';
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['DiscountVal']; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
            }
            $this->view->guid = $this->GUID();
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($this->intLoggedinUserAgencySysId, $this->view->guid);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //end of customer detail
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;

            $this->view->tpid = $TPSysId;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function makeInsurancePaymentAction() {

        // echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $intXRefTrxNo = $this->getRequest()->getParam('txnid');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $planId = $this->getRequest()->getParam('TpSysId');
        $MasterTPSysId = '';
        $createDate = date('Y-m-d H:i:s');
        if ($planId != '') { //echo "HI"; exit;
            if ($strTrxStatus == "success") {
                $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
                $travelPlanDetail = $travelplanObj->GetInsuranceCustomerDetailsPax($planId);
                //echo "<pre>";print_r($travelPlanDetail);die;
                $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
                $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
                $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
                $uid = base64_encode($this->getEnc($uid));
                $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
                $RoomMemInfoJson = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
                $totalPax = count($RoomMemInfoJson);
                $roominfojson = isset($travelPlanDetail[0]['RoomMemInfoJson']) ? json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1) : array();
                $memberDetails = array();
                if (!empty($roominfojson)) {
                    for ($d = 1; $d <= count($roominfojson); $d++) {
                        $memberDetails[] = array('FirstName' => $roominfojson[$d]['FirstName'], 'LastName' => $roominfojson[$d]['LastName'], 'DOB' => @$roominfojson[$d]['DOB']);
                    }
                }

                if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                    $whereMaste = "MasterTPSysId = " . $MasterTPSysId;
                    $disableAlltravelplan = array(
                        'StatusType' => 10,
                        'UpdateDate' => $createDate
                    );
                    $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaste);
                }
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 17,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[17];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }

                //update accom table with bookingid
                $where = "TPIntSysId = " . $travelPlanDetail[0]['TPIntSysId'];
                $updateQuery = array(
                    'XRefVoucherNo' => $planId,
                    'UpdateDate' => $createDate
                );
                $objCurd = new Visa_Model_Visa();
                $visaQueryPrposalTravelPlanId = $objCurd->updateTable("TB_Agency_Customer_TravelPlan_Insurance", $updateQuery, $where);
                $msgArray = array('status' => 'success', 'msg' => 'Your payment is success');
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                //send email to customer
                $html = new Zend_View();
                $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
                $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                //echo "<pre>";print_r($getAgencyDetail);die;
                $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                $html->assign('type', 'InsuranceBookingPaymentConfirmationEmail');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                //$html->assign('URL', $encryptData);
                $paymentconfirmText = $html->render('email-template.phtml');
                $html->assign('type', 'InsuranceBookingConfirmationEmailText');
                $html->assign('data', $travelPlanDetail);
                $html->assign('getAgentDetail', $getAgentDetail);
                $html->assign('agencyDetails', $getAgencyDetail);
                $bookingConfirmText = $html->render('email-template.phtml');
                $aConfig = $this->getInvokeArg('bootstrap')->getOptions();
                $this->smtpUserName = $aConfig['smtpUserName'];
                $this->smtpPassword = $aConfig['smtpPassword'];
                $this->smtpPort = $aConfig['smtpPort'];
                $this->smtpHost = $aConfig['smtpHost'];
                $this->fromEmail = $aConfig['fromEmail'];
                $this->fromName = $aConfig['fromName'];
                //$emailId ='amit.k@catpl.co.in';
                $emailId = trim($travelPlanDetail[0]['ProposalEmailTo']);
                if ($emailId != '') {
                    $emailData1 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['VisaName']) . ' Trip Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                    $emailData2 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['VisaName']) . ' Trip Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                    try {
                        $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                        $arrEmailStatistics = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $paymentconfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $arrEmailStatistics2 = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $bookingConfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        //echo "success";
                        $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $msg = "success";
                    } catch (Exception $err) {
                        //print_r($err, true);
                        $msg = "failed";
                    }
                }
                //end of send email to customer
            }
            if ($strTrxStatus == "failure") {
                $where = "TPSysId = " . $planId;
                $updatetravelplan = array(
                    'StatusType' => 7,
                    'UpdateDate' => $createDate
                );
                $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:27 AM
                $statusArray = $customHelper->changeQueryStatusByProposal();
                $querystatus = $statusArray[7];
                if (isset($querystatus) && !empty($querystatus)) {
                    $whereQuery = "TPSysId = " . $MasterTPSysId;
                    $updatetravelplanquery = array(
                        'StatusType' => $querystatus,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                }
                $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful' . $$this->getRequest()->getParam('error_Message'));
                $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                exit;
            }
        } else {
            $msgArray = array('status' => 'failed', 'msg' => 'Your payment is unsuccessful Id Mismatch');
            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
        }
        $this->_redirect("/proposal/booking-insurance-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId));
        exit;
    }

    public function bookingInsuranceConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        if ($TPSysId == '') {
            $this->view->error = 1;
            //echo "Please try again";
            //die;
        } else {
            $this->view->error = 0;
            $travelPlanDetail = $this->_crmcusttravelplan->GetInsuranceCustomerDetailsPax($TPSysId);
            //echo "<pre>";print_r($travelPlanDetail);die;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getCustomerDetail = $this->_crmcustomerObj->ChkAgencyUser($CustomerSysId);
            //echo "<pre>";print_r($getCustomerDetail);
            //customer detail
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CustomerSysId, $travelPlanDetail[0]['AgencySysId'], $TPSysId);
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == "8") {
                $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
            }

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;

                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //echo "<pre>";print_r($chatSenderDetails);
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($getLeadlist[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
    }

    public function insuranceViewAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }

        $travelPlanDetail = $this->_crmcusttravelplan->GetInsuranceCustomerDetailsTrx($TPSysId);
        //customer detail
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $travelPlanDetail = $travelplanObj->GetInsuranceCustomerDetailsPax($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];

        if (isset($CustomerSysId) && !empty($CustomerSysId)) {
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $TPSysId) : array();
            $getversiondetails = $this->_crmcusttravelplan->GetVersionInfo($TPSysId);
            $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
        }
        //end of customer detail
        //query for get customer chat history
        $chatSenderDetails = array();
        if ($getCustomerDetail['userChatExist'] > 0) {
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
                $this->view->chatHistoryDetail = $getChatHistoryDetail;
                $chatSenderDetails['TPSysId'] = $TPSysId;
                $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                $chatSenderDetails['CustomerSysId'] = $travelPlanDetail[0]['CustomerSysId'];
                $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                //print_r($agentDetail);
            }
        }
        //end of customer chat history
        $agencyStaffObj = new Travel_Model_TblAgencyStaff();
        $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->getcustomerDetail = $getCustomerDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
    }

    public function insuranceVoucherAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetInsuranceCustomerDetailsTrx($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
    }

    public function insuranceInvoiceAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetInsuranceCustomerDetailsTrx($TPSysId);
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
        //echo "<pre>";print_r($getAgencyDetail);die;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $this->view->getallstatustype = $customhelper->getAllStatusType();
    }

    public function agencyTncDataAction() {
        $this->_helper->layout->disableLayout();
        $encid = $this->getRequest()->getParam("encid") ? $this->getRequest()->getParam("encid") : '';
        $error = 1;
        $getRecord = array();
        if ($encid != '') {
            $data = @$this->getDec($encid); //data in current format ==> planid:agencysysid:customersysid
            $data_Exp = explode(":", $data);
            if (count($data_Exp) == 3) {
                $TPSysId = trim($data_Exp[0]);
                $AgencySysId = trim($data_Exp[1]);
                $CustomerSysId = trim($data_Exp[2]);
                $checkRecordExist = $this->_crmcusttravelplan->CheckCustomerWithLeadId($TPSysId);
                //echo "<pre>";print_r($checkRecordExist);
                if (count($checkRecordExist) > 0 && $checkRecordExist[0]['CustomerSysId'] == $CustomerSysId) {
                    $objAgency = new Travel_Model_TblAgency();

                    $getRecord = $objAgency->getAgencyTnCDetails($AgencySysId);

                    $error = 0;
                    $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                    //echo "<pre>";print_r($getRecord);
                    $this->view->agencyDetails = $getAgencyDetail;
                    $this->view->agencyTncData = $getRecord;
                }
            } else {
                $error = 1;
            }
        } else {
            $error = 1;
        }
        //echo $error;
        if ($error == 1) {
            echo "Something went wrong";
            exit;
        }
        $this->view->encid = $encid;
    }

    public function downloadVisaCoveringLetterAction() {
        $InvnVisaAllSysId = $this->getRequest()->getParam("id") ? base64_decode($this->getRequest()->getParam("id")) : '';
        $type = $this->getRequest()->getParam("type") ? $this->getRequest()->getParam("type") : '';
        $ICSourceSysId = $this->getRequest()->getParam("icId") ? base64_decode($this->getRequest()->getParam("icId")) : '';
        if ($InvnVisaAllSysId > 0) {
            $objVisa = new Travel_Model_TblVisa();
            $VisaDetailList = $objVisa->VisaInventoryDeList($InvnVisaAllSysId, $ICSourceSysId);

            if (!empty($VisaDetailList)) {
                $filename = $VisaDetailList['DocFileName' . $type];
                if ($filename != '') {
                    $data = array(
                        'AgencySysId' => $ICSourceSysId,
                        'folderName' => 'doc/' . $ICSourceSysId . '/visa/document/' . $filename
                    );

                    $responseArr = Zend_Controller_Action_HelperBroker::getStaticHelper('FileUpload')->getFileFromAWS($data);
                    $document = isset($responseArr[0]['document']) ? trim($responseArr[0]['document']) : '';
                    if (!empty($document)) {

                        $this->_redirect($document);
                        die;
                    } else {
                        echo "some error . please try after some time.";
                    }
                } else {
                    echo "some error . please try after some time.";
                }
            }
        } else {
            echo "something went wrong";
        }
        exit;
    }

    public function viewHotelDetailsAction() {
        /* Disable Layout */
        $this->_helper->layout->disableLayout();
        if (!$this->_request->isXmlHttpRequest()) {
            $this->view->layoutType = 'browser';
            $AccomSysId = base64_decode($this->getRequest()->getParam('hotelid'));
        } else {
            $AccomSysId = $this->getRequest()->getParam('hotelid');
        }

        $this->view->price = $this->getRequest()->getParam('price');
        $this->view->AllowBooking = $this->getRequest()->getParam('AllowBooking');
        $this->view->TPSysId = $this->getRequest()->getParam('TPSysId');
        $this->view->MasterTPSysId = $this->getRequest()->getParam('MasterTPSysId');
        $this->view->intAccomSysId = $this->getRequest()->getParam('intAccomSysId');
        $this->view->InvnItemSysId = $this->getRequest()->getParam('InvnItemSysId');
        $this->view->HotelSource = !empty($this->getRequest()->getParam('HotelSource')) ? $this->getRequest()->getParam('HotelSource') : '';

        $objAccom = new Travel_Model_TblICAccomdation();
        $objAccImg = new Travel_Model_TblAccomoImg();
        $accomoDetailArr = $objAccom->getAccomodation($AccomSysId);
        $this->view->accomoDetailsArr = $accomoDetailArr;
        //        echo '<pre>'; print_r($accomoDetails);
        $accImgArr = $objAccImg->getAccomoImage($AccomSysId);
        $this->view->accImgArr = $accImgArr;
    }

    public function viewHotelDetailsSearchAction() {
        /* Disable Layout */
        $this->_helper->layout->disableLayout();
        if (!$this->_request->isXmlHttpRequest()) {
            $this->view->layoutType = 'browser';
            $AccomSysId = $this->getRequest()->getParam('hotelid');
        } else {
            $AccomSysId = $this->getRequest()->getParam('hotelid');
        }
        //  echo $AccomSysId; exit;


        $objAccom = new Travel_Model_TblICAccomdation();
        $objAccImg = new Travel_Model_TblAccomoImg();
        $accomoDetailArr = $objAccom->getAccomodation($AccomSysId);
        $this->view->accomoDetailsArr = $accomoDetailArr;
        //        echo '<pre>'; print_r($accomoDetails);
        $accImgArr = $objAccImg->getAccomoImage($AccomSysId);
        $this->view->accImgArr = $accImgArr;
    }

    public function getInventoryHotelDetailsAction() {
        /* Disable Layout */
        $this->_helper->layout->disableLayout();
        if ($this->_request->isXmlHttpRequest()) {
            $price = $this->getRequest()->getParam('price');
            $AllowBooking = $this->getRequest()->getParam('AllowBooking');
            $TPSysId = $this->getRequest()->getParam('TPSysId');
            $MasterTPSysId = $this->getRequest()->getParam('MasterTPSysId');
            $intAccomSysId = $this->getRequest()->getParam('AccomSysId');
            $InvnItemSysId = $this->getRequest()->getParam('InvnItemSysId');
            $HotelSource = !empty($this->getRequest()->getParam('HotelSource')) ? $this->getRequest()->getParam('HotelSource') : 'API';

            if ($AllowBooking) {

                $redirectUrl = "/proposal/display-selected-room-inv/tpid/" . base64_encode($TPSysId) . "/mid/" . base64_encode($MasterTPSysId) . "/src/" . base64_encode($HotelSource);
                echo json_encode(['success' => true, 'msg' => 'success', 'url' => $redirectUrl, 'redirect' => true]);
                exit;
            }
        }
    }

    public function displaySelectedRoomInvAction() {


        $this->view->layout()->disableLayout();

        $tpid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $this->view->HotelSource = $HotelSource = !empty($this->getRequest()->getParam('src')) ? base64_decode($this->getRequest()->getParam('src')) : 'API';

        //HOTELAPITYPE
        //echo "<pre>"; print_r($selectedroomDetails->selectedroom_hotelinfo);die;
        $planId = $tpid;

        if (isset($planId) && !empty($planId)) {
            $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
            //$travelPlanDetail=$travelplanObj->GetTravelPlanCustomerDetails($planId);
            //
            if ($HotelSource == 'INV') {
                $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerInvHotelDetails($planId);
            } else {
                $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetailsPax($planId);
            }

            //echo "<pre>";print_r($travelPlanDetail);echo "</pre>";
            if ($travelPlanDetail[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($mid) . '/pid/' . base64_encode($tpid) . '/htype/inv');
                exit;
            }

            $this->view->uid = $uid;
            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $this->view->tpid = $tpid;

            $travelPlanItenObj = new Travel_Model_CRM_CustomerTravelItenary();
            $travelPlanItenaryId = $travelPlanItenObj->GetItenaryId($planId);
            $this->view->travelPlanAccomId = $travelPlanItenaryId['TPIntSysId'];
            //echo "<pre>"; print_r($travelPlanDetail);
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $hotelGuestDetails = new Zend_Session_Namespace('hotelGuestDetails');
            $hotelGuestDetails->hotelGuestDetails = $guestDetails;
            //echo "<pre>";print_r($guestDetails);die;
            //$guestDetails=$crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }

            //customer detail
            $tpID = $planId;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            if (isset($CustomerSysId) && !empty($CustomerSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                $getCustomerDetail = $travelPlanDetail;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail



            /* Travel Plan Pax Details */
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            //echo "<pre>";print_r($roomjsonarray);exit;
            $adultPax = 0;
            $childPax = 0;
            if (!empty($roomjsonarray)) {
                foreach ($roomjsonarray as $res) {
                    $adultPax += $res['adult'];
                    $childPax += $res['child']['childcount'];
                }
            }
            /* Travel Plan Pax Details Ends */



            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history



            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->hotelInfo = @$roomDetail->roomDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->selectedroom_hotelinfo = @$selectedroomDetails->selectedroom_hotelinfo;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->markuparray = @$markuparray;
            $this->view->travelPlanDetail = $travelPlanDetail;
        }
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $this->view->ARR_SALUTION = $ARR_SALUTION;
        $ARR_CUSTOMER_RELATION = unserialize(ARR_CUSTOMER_RELATION);
        $this->view->ARR_CUSTOMER_RELATION = $ARR_CUSTOMER_RELATION;
    }

    public function updateRequestBookingStatusAction() {
        /* Disable Layout */
        $this->_helper->layout->disableLayout();
        if ($this->_request->isXmlHttpRequest()) {
            $TPSysId = $this->getRequest()->getParam('TPSysId');
            $MasterTPSysId = $this->getRequest()->getParam('MasterTPSysId');

            //update accom table with bookingid
            $where = " TPSysId = " . $TPSysId . " AND MasterTPSysId = " . $MasterTPSysId;
            $updateQuery = array(
                'StatusType' => 61 // for request booking...
            );
            $objCurd = new Visa_Model_Visa();
            $visaQueryPrposalTravelPlanId = $objCurd->updateTable("TB_Agency_Customer_TravelPlan", $updateQuery, $where);

            echo json_encode(['success' => true, 'msg' => 'Your request for booking has been submitted successfully.']);
            exit;
        }
    }

    public function hotelReviewCustomAction() {
        $this->view->layout()->disableLayout();

        $uid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('uid')));
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $tpid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->HotelSource = $HotelSource = !empty($this->getRequest()->getParam('src')) ? base64_decode($this->getRequest()->getParam('src')) : 'API';

        $selectedroomDetails = new Zend_Session_Namespace('selectedroom_hotelinfo');
        $sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
        $roomDetail = new Zend_Session_Namespace('roomDetail');
        $hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "2";
        $this->view->strTrxType = "H";
        //echo "<pre>"; print_r($hotelSearchSession->hotelSearchSession);die;
        $planId = $tpid;
        if (isset($planId) && !empty($planId)) {
            $travelPlanItenObj = new Travel_Model_CRM_CustomerTravelItenary();
            $travelPlanItenaryId = $travelPlanItenObj->GetItenaryId($planId);
            $travelPlanAccomObj = new Travel_Model_CRM_CustomerTravelPlanAccom();
            $travelPlanAccomDetail = $travelPlanAccomObj->GetAccomDetailById($travelPlanItenaryId['TPIntSysId']);
            $this->view->travelPlanAccomDetail = $travelPlanAccomDetail['SpecialRequest'];

            $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
            //$travelPlanDetail=$travelplanObj->GetTravelPlanCustomerDetails($planId);
            //$travelPlanDetail=$travelplanObj->GetTravelPlanCustomerDetailsPax($planId);

            if ($HotelSource == 'INV') {
                $travelPlanDetail = $this->_crmcusttravelplan->GetTravelPlanCustomerInvHotelDetails($planId);
            } else {
                $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetailsPax($planId);
            }



            //echo "<pre>"; print_r($travelPlanDetail);
            if (isset($travelPlanDetail[0]['StatusType']) && $travelPlanDetail[0]['StatusType'] == 17) {
                $this->_redirect('/proposal/booking-confirmation/mid/' . base64_encode($mid) . '/pid/' . base64_encode($tpid) . '/uid/' . base64_encode($uid) . '');
                exit;
            }

            //			$strdecode=$this->getDec($uid);
            //			$strdecode=explode(':',$strdecode);
            //			if( (@$strdecode[0] != intval(@$travelPlanDetail[0]['CustomerSysId'])) || (@$strdecode[2]!=intval($mid)) || (count($travelPlanDetail)==0)){
            //				echo "Please try again";
            //				die;
            //			}
            $this->view->uid = $uid;
            $this->view->tpid = $tpid;
            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];

            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);

            // for wallet use
            $this->view->strReturnURL = "http://" . $_SERVER['SERVER_NAME'] . "/proposal/custom-hotel-booking/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanItenaryId['TPIntSysId']);
            $this->view->strErrorURL = "http://" . $_SERVER['HTTP_HOST'] . "/proposal/custom-hotel-booking/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanItenaryId['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = isset($travelPlanDetail[0]['IsCardChrgToCustomer']) ? $travelPlanDetail[0]['IsCardChrgToCustomer'] : '';
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomMemInfoJson'], 1);
            $adultPax = 0;
            $childPax = 0;
            if (!empty($roomjsonarray)) {
                foreach ($roomjsonarray as $res) {
                    $adultPax += $res['adult'];
                    $childPax += $res['child']['childcount'];
                }
            }


            $arrHotelRoomsDetails = $selectedroomDetails->selectedroom_hotelinfo;

            $this->view->intRoomPrice = $intRoomPrice = isset($travelPlanDetail[0]['TotalCost']) ? $travelPlanDetail[0]['TotalCost'] : 0;
            $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
            $this->view->intRoomCount = $intRoomCount = 1;
            $this->view->intNigthsCount = $intNigthsCount = $travelPlanDetail[0]['hotelTotalNights'];
            $this->view->intTotalAmount = $intTotalAmount = $intRoomPrice * $intRoomCount;
            $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['hotelMarkUp']; //$markupAgency->markupAg;
            $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
            $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
            $this->view->intTotalAmountForApplicableNights = $intTotalAmountForApplicableNights = $intTotalAmount * 1;
            //$this->view->intTotalAmountForApplicableNights =  $intTotalAmountForApplicableNights = $intTotalAmount * $intNigthsCount;
            $XServiceTaxAmount = $travelPlanDetail[0]['Taxes'];
            $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
            $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
            $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];

            $this->view->intGrandPayableAmount = $intGrandPayableAmount = $travelPlanDetail[0]['NetCost'];

            $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
            $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
            $markuparray['intGTXMarkUpAmount'] = 0;
            $markuparray['intTotalAmount'] = $intTotalAmount;
            $markuparray['intTax'] = $XServiceTaxAmount;
            $markuparray['GTXServiceTaxAmount'] = 0;
            $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
            $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
            $markuparray['Pax'] = $adultPax + $childPax;
            $markuparray['SupplierSourceStr'] = 'INV';
            $markuparray['MarketPlaceId'] = 1; //b2b or b2c
            $markuparray['TotalDiscount'] = $travelPlanDetail[0]['Discounts'];
            ; //0
            $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];

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





            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->guid = $this->GUID();

            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($this->intLoggedinUserAgencySysId, $this->view->guid);
            //end of wallet use
            //echo "<pre>";print_r($guestDetails);die;
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //customer detail
            $tpID = $planId;
            $CRMCustSysId = $travelPlanDetail[0]['CustomerSysId'];
            if (isset($CRMCustSysId) && !empty($CRMCustSysId)) {
                $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
                //$getCustomerDetail = $this->_crmcustomerObj->GetCustomerById($CRMCustSysId);
                $getCustomerDetail = $travelPlanDetail;

                //echo "<pre>";print_r($getCustomerDetail);die;
                $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
                $checkCustomerChatExist = $getCustomerDetail[0]['CustomerSysId'] > 0 ? $objAgencyUser->CheckCustomerMsgCount($getCustomerDetail[0]['CustomerSysId'], $tpID) : array();
                $getCustomerDetail['userChatExist'] = count($checkCustomerChatExist);
            }
            //end of customer detail
            //query for get customer chat history
            $chatSenderDetails = array();
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($tpID, $getCustomerDetail[0]['CustomerSysId'], 'DESC');
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $tpID;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CRMCustSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    //$chatSenderDetails['EmailId']=$getcustomerDetail[0]['EmailId'];
                    $objAgencyStaff = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->hotelInfo = $roomDetail->roomDetail;
            $this->view->hotelSearchInfo = $hotelSearchSession->hotelSearchSession;
            $this->view->guestDetail = $guestDetails;
            $this->view->selectedroom_hotelinfo = $selectedroomDetails->selectedroom_hotelinfo;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $ARR_SALUTION = unserialize(ARR_SALUTION);
            $ARR_CUSTOMER_RELATION = unserialize(ARR_CUSTOMER_RELATION);
            $this->view->ARR_CUSTOMER_RELATION = $ARR_CUSTOMER_RELATION;
            $this->view->ARR_SALUTION = $ARR_SALUTION;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function customHotelBookingAction() {

        //echo "<pre>";print_r($_REQUEST);die;
        $objTrx = new Travel_Model_TblAgencyCustomerTrx();
        $intXRefTrxNo = $this->getRequest()->getParam('txnid');
        $strTrxStatus = $this->getRequest()->getParam('status');
        $planId = $this->getRequest()->getParam('TpSysId');
        //		$hotelSearchSession = new Zend_Session_Namespace('hotelSearchSession');
        //		$hotelGuestDetails = new Zend_Session_Namespace('hotelGuestDetails');
        //		$selectedHotelResults = new Zend_Session_Namespace('selectedHotelResults');
        //		$sessionPreBookingHotelDetails = new Zend_Session_Namespace('sessionPreBookingHotelDetails');
        //		$roomDetail=new Zend_Session_Namespace('roomDetail');
        //		$blockRoom = new Zend_Session_Namespace('blockRoom');
        $travelplanObj = new Travel_Model_CRM_CustomerTravelPlan();
        $travelPlanDetail = $travelplanObj->GetTravelPlanCustomerDetailsPax($planId);
        $API_SOURCE_ID = $travelPlanDetail[0]['ICSourceSysId'];
        $MasterTPSysId = $travelPlanDetail[0]['MasterTPSysId'];
        $uid = $travelPlanDetail[0]['CustomerSysId'] . ':' . $planId . ':' . $MasterTPSysId;
        $uid = base64_encode($this->getEnc($uid));
        $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");

        //		$RoomMemInfoJson=json_decode($travelPlanDetail[0]['RoomMemInfoJson'],1);
        //		//print_r($RoomMemInfoJson);
        //		$adultPax =0;
        //		$childPax =0;
        //		if(count($RoomMemInfoJson) > 0){
        //			for($g=1;$g<=count($RoomMemInfoJson);$g++){
        //				$adultPax += $RoomMemInfoJson[$g]['adult'];
        //				$childPax += $RoomMemInfoJson[$g]['child']['childcount'];
        //			}
        //		}
        //		$totalPax=$adultPax+$childPax;
        //		$ARR_SALUTION = unserialize(ARR_SALUTION);
        //		 $createDate = date('Y-m-d H:i:s');
        //		//print_r($ARR_SALUTION);
        //		if($travelPlanDetail[0]['Salutation'] > 0){
        //			$strTitle=$ARR_SALUTION[trim($travelPlanDetail[0]['MEMBERTitle'])];
        //		}else{
        //			$strTitle='Mr.';
        //		}

        if ($strTrxStatus == "success") {




            $objApi = new Travel_Model_ApiIntegration();
            $arrHotelBookingResponse = $objApi->bookRoom($datahRoom);
            //echo "<pre>";print_r($arrHotelBookingResponse);die;
            $objBuyHotel = new Travel_Model_TblBuyHotel();
            $dataBooking = array(
                "APIBookingRes" => json_encode($arrHotelBookingResponse)
            );
            ///if payment success then update travel plan
            $createDate = date('Y-m-d H:i:s');
            if (!empty($planId)) {
                //$objBuyHotel->updateBookingDetails($dataBooking,$planId);
                if ($strBookingStatus == 'Confirmed') {
                    if (isset($MasterTPSysId) && $MasterTPSysId > 0) {
                        $whereMaster = "MasterTPSysId = " . $MasterTPSysId;
                        $disableAlltravelplan = array(
                            'StatusType' => 10,
                            'UpdateDate' => $createDate
                        );
                        $disableAlltravelplan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($disableAlltravelplan, $whereMaster);
                    }

                    $where = "TPSysId = " . $planId;
                    $updatetravelplan = array(
                        'StatusType' => 8,
                        'UpdateDate' => $createDate
                    );
                    $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                    // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                    $statusArray = $customHelper->changeQueryStatusByProposal();
                    $querystatus = $statusArray[8];
                    if (isset($querystatus) && !empty($querystatus)) {
                        $whereQuery = "TPSysId = " . $MasterTPSysId;
                        $updatetravelplanquery = array(
                            'StatusType' => $querystatus,
                            'UpdateDate' => $createDate
                        );
                        $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                    }


                    $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                    $msgArray = array('status' => "success", 'MESSAGE' => 'Payment successful');
                    $PAYMENT_MSG->PAYMENT_MSG = $msgArray;

                    //send email to customer
                    $html = new Zend_View();
                    $html->setScriptPath(APPLICATION_PATH . '/views/scripts/proposal/');
                    //$URL='cid:'.$agencyCustomerDetails['CustomerSysId']."@@"."aid:".$agencysysID;
                    //$encryptData=$this->getEnc($URL);
                    $agencyStaffObj = new Travel_Model_TblAgencyStaff();
                    $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
                    $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
                    $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
                    $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
                    $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';

                    $html->assign('type', 'HotelBookingPaymentConfirmationEmail');
                    $html->assign('data', $travelPlanDetail);
                    $html->assign('getAgentDetail', $getAgentDetail);
                    $html->assign('agencyDetails', $getAgencyDetail);
                    $html->assign('ARR_SALUTION', $ARR_SALUTION);
                    $html->assign('bookingresponse', []);
                    $html->assign('hotelsource', 3);
                    //$html->assign('URL', $encryptData);
                    $paymentconfirmText = $html->render('email-template.phtml');
                    $html->assign('type', 'HotelBookingConfirmationEmailText');
                    $html->assign('data', $travelPlanDetail);
                    $html->assign('getAgentDetail', $getAgentDetail);
                    $html->assign('agencyDetails', $getAgencyDetail);
                    $html->assign('ARR_SALUTION', $ARR_SALUTION);

                    $bookingConfirmText = $html->render('email-template.phtml');

                    $aConfig = $this->getInvokeArg('bootstrap')->getOptions();
                    $this->smtpUserName = $aConfig['smtpUserName'];
                    $this->smtpPassword = $aConfig['smtpPassword'];
                    $this->smtpPort = $aConfig['smtpPort'];
                    $this->smtpHost = $aConfig['smtpHost'];
                    $this->fromEmail = $aConfig['fromEmail'];
                    $this->fromName = $aConfig['fromName'];
                    $emailId = '' . trim($travelPlanDetail[0]['EmailId']) . '';
                    $emailData1 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Payment Receipt', 'to' => array(trim($emailId)), 'bodyHtml' => $paymentconfirmText, 'bodyText' => '');
                    $emailData2 = array('fromEmail' => $this->fromEmail, 'fromName' => $this->fromName, 'subject' => stripslashes($travelPlanDetail[0]['hotelCityTitle']) . ' Trip Booking Details', 'to' => array(trim($emailId)), 'bodyHtml' => $bookingConfirmText, 'bodyText' => '');
                    try {
                        //echo "success";
                        $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
                        $arrEmailStatistics = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $paymentconfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $arrEmailStatistics2 = array(
                            "TPSysId" => $planId,
                            "TypeSysId" => 1, // 1 For Email 2 For SMS
                            "AgencySysId" => $travelPlanDetail[0]['AgencySysId'],
                            "AgentSysId" => $travelPlanDetail[0]['AgentSysId'],
                            "Title" => $bookingConfirmText,
                            "Source" => $arrEmailStatisticsType[1], // 2 For Vouchers
                            "Status" => 0,
                            "RefSysId" => "",
                            "RefSysStatus" => "",
                            "CreateDate" => date('Y-m-d H:i:s')
                        );
                        $this->mailSentByElastice($emailData1, $arrEmailStatistics, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $this->mailSentByElastice($emailData2, $arrEmailStatistics2, 1, $travelPlanDetail[0]['CustomerSysId']);
                        $msg = "success";
                    } catch (Exception $err) {
                        //print_r($err, true);
                        $msg = "failed";
                    }
                    //end of send email to customer
                    //}
                } else {
                    if (isset($arrHotelBookingResponse['BookResult']['Error']['ErrorMessage']) && !empty($arrHotelBookingResponse['BookResult']['Error']['ErrorMessage'])) {
                        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                        $msgArray = array('status' => "success", 'MESSAGE' => 'Some thing went wrong . ' . $arrHotelBookingResponse['BookResult']['Error']['ErrorMessage']);
                        $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                    } else {
                        $where = "TPSysId = " . $planId;
                        $updatetravelplan = array(
                            'StatusType' => 7,
                            'UpdateDate' => $createDate
                        );
                        $updatetravelPlan = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplan, $where);

                        // update main query status created by Er Amit Kumar Dubey on 8 may 2017 at 11:23 AM
                        $statusArray = $customHelper->changeQueryStatusByProposal();
                        $querystatus = $statusArray[7];
                        if (isset($querystatus) && !empty($querystatus)) {
                            $whereQuery = "TPSysId = " . $MasterTPSysId;
                            $updatetravelplanquery = array(
                                'StatusType' => $querystatus,
                                'UpdateDate' => $createDate
                            );
                            $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);
                        }

                        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
                        $msgArray = array('status' => "success", 'MESSAGE' => 'Payment successful . Booking Pending');
                        $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
                    }
                }
            }

            //print_r($msgArray);
            $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
            //}
        } else {
            $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
            $msgArray = array('status' => "failed", 'MESSAGE' => 'Payment unsuccessful');
            $PAYMENT_MSG->PAYMENT_MSG = $msgArray;
            $this->_redirect("/proposal/booking-confirmation/mid/" . base64_encode($MasterTPSysId) . "/pid/" . base64_encode($planId) . "/uid/" . $uid);
            exit;
        }
    }

    public function bookingTransportReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";

        $this->view->intPlanType = "11";
        $this->view->strTrxType = "V";
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerTravelTransportDetail($TPSysId);
            $this->view->travelPlanDetail = $travelPlanDetail[0];
            $TermConditions = $this->_crmcusttravelplan->GetCustomerTravelPlanTermsCond($TPSysId);
            $SightSeeings = $this->_crmcusttravelplan->GetCustomerTravelPlanSightSeeingForTransport($TPSysId);
            $this->view->TermConditions = @$TermConditions[0];
            $this->view->SightSeeings = $SightSeeings;

            //            echo "<pre>";print_r($SightSeeings);die;
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $AgentSysId = $travelPlanDetail[0]['AgentSysId'];
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails($AgentSysId);
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (!empty($checkCustomerChatExist)) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history


            $getCustomerDetail[0]['AgentName'] = trim($getAgentDetail['FirstName']) . ' ' . trim($getAgentDetail['LastName']);
            $getCustomerDetail[0]['AgentNo'] = $getAgentDetail['ContactNo1'];

            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            $this->view->roomjsonarray = $roomjsonarray;

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


            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $sessionLogin_user = new Zend_Session_Namespace('sessionLogin_user');
            $this->view->intLoggedinUserAgencySysId = $sessionLogin_user->intLoggedinUserAgencySysId;
            $markupMdl = new Markup_Model_Markup();
            $isDisplayTaxAgency = $markupMdl->getDetailsAgencyCurrencyDeatil("TB_Agency", $sessionLogin_user->intLoggedinUserAgencySysId);
            $this->view->isDisplayTax = $isDisplayTaxAgency['TaxLabelId'];
                                
            $this->view->tpid = $TPSysId;
            $this->view->baseUrl = $this->baseUrl;
        } else {
            echo "Please try again";
            die;
        }
    }

    public function bookingTransportConfirmationAction() {
        $this->view->layout()->disableLayout();
        $proposalId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        $PAYMENT_MSG = new Zend_Session_Namespace('PAYMENT_MSG');
        if ($TPSysId == '') {
            $this->view->error = 1;
            //echo "Please try again";
            //die;
        } else {
            $this->view->error = 0;
            $travelPlanDetail = $this->_crmcusttravelplan->GetSightseeingCustomerDetailsPax($TPSysId);
            //echo "<pre>";print_r($travelPlanDetail);die;
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getCustomerDetail = $this->_crmcustomerObj->ChkAgencyUser($CustomerSysId);
            //echo "<pre>";print_r($getCustomerDetail);
            //customer detail
            $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
            $getLeadlist = $this->_crmcusttravelplan->GetPurchasedPublicPageLeadList($CustomerSysId, $travelPlanDetail[0]['AgencySysId'], $TPSysId);
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == "9") {
                $strCurrencyCode = $travelPlanDetail[0]['CurrencyType'];
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
            }

            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;

                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //echo "<pre>";print_r($chatSenderDetails);
            //end of customer chat history
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($getLeadlist[0]['AgentSysId']);
            $AgencySysId = $getLeadlist[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1'], 'AgentEmail' => $agentDetail['EmailId']);
            $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->travelPlanDetail = $travelPlanDetail;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
        }
        //echo "<pre>";print_r($travelPlanDetail);die;
        $this->view->PAYMENT_MSG = $PAYMENT_MSG->PAYMENT_MSG;
    }

    public function shareProposalTransportPopupAction() {
        $this->_helper->layout->disableLayout();
        $tpsysID = $this->_getParam('package');
        $customerId = $this->_getParam('customerId');
        $ss = $this->_getParam('ss');
        $ssmp = $this->_getParam('ssmp');
        $objPackage = new Travel_Model_TblPackage();
        if (!empty($customerId)) {

            $this->_crmcustomerObj = new Travel_Model_CRM_Customer();
            $customerDetails = $this->_crmcustomerObj->GetAgencyCustomerById($customerId);
            $this->view->customerDetails = $customerDetails;

            $flexiPackageList = $objPackage->getCustPackageList($tpsysID);
            if (isset($flexiPackageList['AgencySysId'])) {
                $crmcustomerObj = new Travel_Model_CRM_Customer();
                $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($flexiPackageList['AgencySysId']);
                $flexiPackageList['agencyDetails'] = $getAgencyDetail;
            }

            $this->view->flexiPackageList = $flexiPackageList;
            //Get Package Places 
            $flexiPackagePlaces = $objPackage->getCustomerPackagePlacesList($tpsysID);
            $this->view->flexiPackagePlaces = $flexiPackagePlaces;

            $flexiPackageItenList = $objPackage->getCustPackageItenList($tpsysID);
            $this->view->flexiPackageItenList = $flexiPackageItenList;
            $this->view->currencyarr = $currencyarr = $objPackage->getCurrencyList();

            $objCust = new Travel_Model_CRM_CustomerTravelPlan();
            $trip_start_date = $flexiPackageList['StartDate']->format('Y-m-d');
            $IsB2BCustomer = isset($flexiPackageList['IsB2BProposal']) ? $flexiPackageList['IsB2BProposal'] : 0;
            if ($IsB2BCustomer == 1) {
                $MarketPlaceId = 2;
            } else {
                $MarketPlaceId = 1;
            }
            if ($flexiPackageList['PackSpecType'] == '1' || $flexiPackageList['PackSpecType'] == '2') {
                $rominfojson = json_decode($flexiPackageList['RoomInfoJson'], 1);
                $paxCount = array_sum((array_column($rominfojson, 'Adult')));
                $packRate = $objCust->getCustTravelPackRateRowWise($tpsysID, $trip_start_date, $MarketPlaceId, $paxCount);
                $getmarketwisedate = $objCust->getCustPackRateRowWise($tpsysID, $trip_start_date, $MarketPlaceId, $paxCount);
            } else {
                $packRate = $objCust->getCustTravelPackRate($tpsysID, $trip_start_date, $MarketPlaceId);
                $getmarketwisedate = $objCust->getCustPackRate($tpsysID, $trip_start_date, $MarketPlaceId);
            }
            $packRate = !empty($packRate) ? $packRate[0] : array();
            $getmarketwisedate = !empty($getmarketwisedate) ? $getmarketwisedate[0] : array();
        } else {
            $flexiPackageList = $objPackage->getFlexiPackageList($tpsysID);
            if (isset($flexiPackageList['AgencySysId'])) {
                $crmcustomerObj = new Travel_Model_CRM_Customer();
                $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($flexiPackageList['AgencySysId']);
                $flexiPackageList['agencyDetails'] = $getAgencyDetail;
            }
            $this->view->flexiPackageList = $flexiPackageList;
            //Get Package Places 
            $flexiPackagePlaces = $objPackage->getPackagePlacesList($tpsysID);
            $this->view->flexiPackagePlaces = $flexiPackagePlaces;
            $trip_start_date = $flexiPackageList['StartDate']->format('Y-m-d');
            $getmarketwisedate = $objPackage->GetDuplicateMarketwiserateDate($tpsysID, $trip_start_date);
            $getmarketwisedate = $getmarketwisedate[0];
            $packRate = $objPackage->getPackRate($tpsysID, $trip_start_date);
            $packRate = !empty($packRate) ? $packRate[0] : array();
            //        $this->view->marketwsie = $getmarketwisedate;
            //Get Package Itenary
            $flexiPackageItenList = $objPackage->getFlexiPackageItenList($tpsysID);
            $this->view->flexiPackageItenList = $flexiPackageItenList;
        }
        //echo "<pre>";print_r($_REQUEST);echo "</pre>";
        $strRoomInfoJson = $flexiPackageList['RoomInfoJson'];
        $optionalSightIncludePrice = $ss;
        $optionalSightIncludeMPrice = $ssmp;
        $rateListArr = Zend_Controller_Action_HelperBroker::getStaticHelper('Package')->GetAgencyCustomerTravelPlanCost($tpsysID, $strRoomInfoJson, $flexiPackageList, $getmarketwisedate, $packRate, '', '', $optionalSightIncludePrice, $optionalSightIncludeMPrice);
        //               $rateListArr['FinalMarkUpp'] =  $rateListArr['FinalMarkUp'] + $rateListArr['optSightMarkupPrice'];
        //               $rateListArr['FinalCostt'] =  $rateListArr['FinalCost'] - $rateListArr['optionalCostWithoutMarkup'];
        $rateList = array('arrPkgCost' => $rateListArr);
        //				
        //        $rateList = array('arrPkgCost' => array('AdultPax' => $flexiPackageList['MinPax'], 'ChildPax' => 0, 'FinalCost' => $flexiPackageList['NetPrice'], 'FinalDiscount' => $flexiPackageList['DiscountVal'], 'FinalMarkUp' => 0));
        $popupArray = array();
        $popupArray['rateList'] = json_encode($rateList);

        $this->view->popupArray = $popupArray;
        //  $this-view->getCustomerDetails = $getcustomerDetail;
        if ($flexiPackageList['SupplierSysId'] > 0) {
            $objSupplier = new Travel_Model_TblSupplier();
            $arrSupplierDetails = $objSupplier->getSupplierById($flexiPackageList['SupplierSysId']);
            $this->view->arrSupplierDetails = $arrSupplierDetails;
        }
        $markupMdl = new Markup_Model_Markup();
        $isDisplayTax = $markupMdl->getDetailsAgencyCurrencyDeatil("TB_Agency", $flexiPackageList['AgencySysId']);
        $this->view->isDisplayTax = $isDisplayTax['TaxLabelId'];
    }

    public function bookingForexReviewCustomerAction() {
        $this->view->layout()->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('tpid')));
        $this->view->strPayWithWalletUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options/customer-pay";
        $this->view->strRechargeNowUrl = Catabatic_Helper::getSiteUrl() . "payment/payment-options";
        $this->view->strSearchPageUrl = "/buyhotel/search-results";
        $this->view->intPlanType = "2";
        $this->view->strTrxType = "H";
        if (isset($TPSysId) && !empty($TPSysId)) {
            $travelPlanDetail = $this->_crmcusttravelplan->GetCustomerForexleadDetail($TPSysId);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getCustomerDetail[] = $crmcustomerObj->GetAgencyCustomerById($travelPlanDetail[0]['CustomerSysId']);

            $this->view->mid = $travelPlanDetail[0]['MasterTPSysId'];
            $agencyStaffObj = new Travel_Model_TblAgencyStaff();
            $agentDetail = $agencyStaffObj->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
            $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
            $crmcustomerObj = new Travel_Model_CRM_Customer();
            $getAgencyDetail = $crmcustomerObj->GetAgencyDetailById($AgencySysId);
            $guestDetails = $crmcustomerObj->GetCustomerWithDetails($travelPlanDetail[0]['CustomerSysId']);

            // for wallet use
            $this->view->strReturnURL = Catabatic_Helper::getSiteUrl() . "proposal/make-forex-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->strErrorURL = Catabatic_Helper::getSiteUrl() . "proposal/make-forex-payment/cid/" . base64_encode($travelPlanDetail[0]['CustomerSysId']) . "/tid/" . base64_encode($travelPlanDetail[0]['TPIntSysId']);
            $this->view->intLoggedinAgencySysId = $AgencySysId;
            $this->view->IsCardChrgToCustomer = $travelPlanDetail[0]['IsCardChrgToCustomer'];
            $this->view->intLoggedinUserAgencySysId = $AgencyUserSysId = $travelPlanDetail[0]['AgentSysId'];
            $API_SOURCE_ID = $travelPlanDetail[0]['PlanType'];
            $roomjsonarray = json_decode($travelPlanDetail[0]['RoomInfoJson'], 1);
            if ($API_SOURCE_ID == 7) { // 
                $strCurrencyCode = 'INR';
                $Price = $travelPlanDetail[0]['Price'];
                $intTax = $travelPlanDetail[0]['XServiceTaxAmount'];
                $this->view->intTax = $intTax = !empty($intTax) ? ($intTax) : 0;
                $this->view->intTotalAmount = $intTotalAmount = $Price;
                $this->view->intAgentMarkUpAmount = $intAgentMarkUpAmount = $travelPlanDetail[0]['MarkUp']; //$markupAgency->markupAg;
                $this->view->intAgencyMarkUpAmount = $intAgencyMarkUpAmount = $travelPlanDetail[0]['AgencyMarkUp']; //$markupAgency->markupAg;
                $this->view->intGTXMarkUpAmount = $intGTXMarkUpAmount = $travelPlanDetail[0]['GTXMarkup']; //$markupAgency->markupAg;
                $XServiceTaxAmount = $travelPlanDetail[0]['XServiceTaxAmount'];
                $GTXServiceTaxAmount = $travelPlanDetail[0]['GTXServiceTaxAmount'];
                $AgentServiceTaxAmount = $travelPlanDetail[0]['AgentServiceTaxAmount'];
                $AgentsCustomServiceTaxAmount = $travelPlanDetail[0]['AgentsCustomServiceTaxAmount'];
                $customDiscount = $travelPlanDetail[0]['CustomDiscount'];
                $serviceTaxOnCustomDiscount = $travelPlanDetail[0]['ServiceTaxOnCustomDiscount'];
                $this->view->intGrandPayableAmount = $intGrandPayableAmount = round(($Price + $intAgentMarkUpAmount + $intAgencyMarkUpAmount + $intGTXMarkUpAmount + $XServiceTaxAmount + $GTXServiceTaxAmount + $AgentServiceTaxAmount + $AgentsCustomServiceTaxAmount) - ($customDiscount + $serviceTaxOnCustomDiscount));
                $markuparray['intAgentMarkUpAmount'] = $intAgentMarkUpAmount;
                $markuparray['intAgencyMarkUpAmount'] = $intAgencyMarkUpAmount;
                $markuparray['intGTXMarkUpAmount'] = $intGTXMarkUpAmount;
                $markuparray['intTotalAmount'] = $intTotalAmount;
                $markuparray['intTax'] = $XServiceTaxAmount;
                $markuparray['GTXServiceTaxAmount'] = $GTXServiceTaxAmount;
                $markuparray['AgentServiceTaxAmount'] = $AgentServiceTaxAmount;
                $markuparray['AgentsCustomServiceTaxAmount'] = $AgentsCustomServiceTaxAmount;
                $markuparray['Pax'] = count($roomjsonarray);
                $markuparray['SupplierSourceStr'] = 'VISA';
                $markuparray['TotalDiscount'] = $travelPlanDetail[0]['DiscountVal']; //0
                $markuparray['CurrencyType'] = $travelPlanDetail[0]['CurrencyType'];
            }
            $this->view->guid = $this->GUID();
            $encryptMarkUpData = $this->getEnc(json_encode($markuparray));
            $this->view->walletCode = $this->walletCode($travelPlanDetail[0]['AgentSysId'], $this->view->guid, round($intGrandPayableAmount), $AgencySysId, $travelPlanDetail[0]['TPSysId'], $travelPlanDetail[0]['CustomerSysId'], $encryptMarkUpData);
            $this->view->securecode = $this->secureCode($this->intLoggedinUserAgencySysId, $this->view->guid);
            $agencyAddress = '';
            if (isset($getAgencyDetail['CountrySysId']) && !empty($getAgencyDetail['StateOrZoneSysId']) && !empty($getAgencyDetail['CitySysId'])) {
                $agencyAddress = $crmcustomerObj->GetNameOfContStateCity($getAgencyDetail['CountrySysId'], $getAgencyDetail['StateOrZoneSysId'], $getAgencyDetail['CitySysId']);
            }
            $agencyState = '';
            $agencyCountry = '';
            if (isset($agencyAddress['StateName']) && !empty($agencyAddress['StateName'])) {
                $agencyState = $agencyAddress['StateName'] ? " ," . $agencyAddress['StateName'] : '';
            }
            if (isset($agencyAddress['countryName']) && !empty($agencyAddress['countryName'])) {
                $agencyCountry = $agencyAddress['countryName'] ? "(" . $agencyAddress['countryName'] . ")" : '';
            }
            //end of customer detail
            //query for get customer chat history
            $objAgencyUser = new Travel_Model_CRM_AgencyUserInbox();
            $getChatHistoryDetail = array();
            $checkCustomerChatExist = (@$getCustomerDetail[0]['CustomerSysId'] > 0) ? $objAgencyUser->CheckCustomerMsgCount(@$getCustomerDetail[0]['CustomerSysId'], $TPSysId, trim($travelPlanDetail[0]['AgentSysId'])) : array();
            // $checkCustomerChatExist = (count($checkCustomerChatExist)==0)?$objAgencyUser->CheckCustomerMsgCount(@$getcustomerDetail[0]['CustomerSysId'], $tpID):$checkCustomerChatExist;
            if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                $getChatHistoryDetail = $objAgencyUser->GetCustChatHistDetWithLead($TPSysId, $getCustomerDetail[0]['CustomerSysId'], 'ASC');
            }
            $getCustomerDetail['userChatExist'] = (is_array($checkCustomerChatExist) && count($checkCustomerChatExist) > 0) ? count($checkCustomerChatExist) : count($getChatHistoryDetail);
            //  $this-view->getCustomerDetails = $getcustomerDetail;
            //query for get customer chat history
            $chatSenderDetails = array();
            $objAgencyStaff = new Travel_Model_TblAgencyStaff();
            $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
            if ($getCustomerDetail['userChatExist'] > 0) {
                if (isset($getCustomerDetail[0]['CustomerSysId']) && !empty($getCustomerDetail[0]['CustomerSysId'])) {
                    $this->view->chatHistoryDetail = $getChatHistoryDetail;
                    $chatSenderDetails['TPSysId'] = $TPSysId;
                    $chatSenderDetails['AgencySysId'] = $travelPlanDetail[0]['AgencySysId'];
                    $chatSenderDetails['CustomerSysId'] = $getCustomerDetail[0]['CustomerSysId'];
                    $chatSenderDetails['AgentSysId'] = $travelPlanDetail[0]['AgentSysId'];
                    $chatSenderDetails['EmailId'] = $agentDetail['EmailId'];
                    //print_r($agentDetail);
                }
            }
            //end of customer chat history
            $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
            $this->view->getAgentDetail = $getAgentDetail;
            $this->view->agencyDetails = $getAgencyDetail;
            $this->view->guestDetail = $guestDetails;
            $this->view->getcustomerDetail = $getCustomerDetail;
            $this->view->chatSenderDetails = $chatSenderDetails;
            $this->view->encryptMarkUpData = $encryptMarkUpData;
            $this->view->travelPlanDetail = $travelPlanDetail;

            $this->view->tpid = $TPSysId;
        } else {
            echo "Please try again";
            die;
        }
    }
        public function forexInvoiceAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetForexCustomerDetailsTrx($TPSysId);
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
//        echo "<pre>";print_r($travelPlanDetail);die;
        $customhelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Custom');
        $this->view->getallstatustype = $customhelper->getAllStatusType();
    }
     public function updateForexStatusAction() {
        $this->_helper->layout->disableLayout();
        $front = Zend_Controller_Front::getInstance();
        $front->setParam('noViewRenderer', true);
        $tpsysID = $this->getRequest()->getPost('packid');
        $postData = $this->getRequest()->getPost();
        $IsSendMail = isset($postData['IsSendMail']) ? $postData['IsSendMail'] : 1;
        $IsSendSms = isset($postData['IsSendSms']) ? $postData['IsSendSms'] : 1;

        $objPackage = new Travel_Model_TblPackage();
        $packInfo = $objPackage->getCustPackageList($tpsysID);
        $createDate = date('Y-m-d H:i:s');
        $ARR_SALUTION = unserialize(ARR_SALUTION);
        $customHelper = Zend_Controller_Action_HelperBroker::getStaticHelper("Custom");
        $statusArray = $customHelper->changeQueryStatusByProposal();
        $querystatus = $statusArray[5];
        $this->_crmcusttravelplan = new Travel_Model_CRM_CustomerTravelPlan();
        $whereProposal = "TPSysId = " . $tpsysID;
        $updatetravelplanproposal = array(
            'StatusType' => 5,
            'UpdateDate' => $createDate
        );
        $update = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplanproposal, $whereProposal);
        if (isset($querystatus) && !empty($querystatus)) {
            $whereQuery = "TPSysId = " . $packInfo['MasterTPSysId'];
            $updatetravelplanquery = array(
                'StatusType' => $querystatus,
                'UpdateDate' => $createDate,
                'ExpectedClosureDate' => $packInfo['StartDate']->format('Y-m-d'),
                'ExpectedValue' => $packInfo['NetPrice'],
            );
            $updatetravelPlanQuery = $this->_crmcusttravelplan->UpdateCustomerTravelPlanQuery($updatetravelplanquery, $whereQuery);

            if (empty($packInfo['RefTPSysId'])) {
                $whereProposalOthers = "TPSysId != " . $tpsysID . " AND MasterTPSysId = " . $packInfo['MasterTPSysId'];
                $updatetravelplanproposalOthers = array(
                    'StatusType' => 160,
                    'UpdateDate' => $createDate
                );
                $update = $this->_crmcusttravelplan->UpdateCustomerTravelPlan($updatetravelplanproposalOthers, $whereProposalOthers);
            }
            $getAgentDetail = $this->_crmcusttravelplan->getAgentDetails(trim($packInfo['AgentSysId']));
            //echo "<pre>";print_r($getAgentDetail);die;
            $Salutation = (isset($getAgentDetail['Salutation']) && !empty(trim($getAgentDetail['Salutation']))) ? $ARR_SALUTION[trim($getAgentDetail['Salutation'])] : '';
            $FirstName = trim($getAgentDetail['FirstName']);
            $LastName = trim($getAgentDetail['LastName']);
            $EmailId = $getAgentDetail['EmailId'];
            $agencysysID = $getAgentDetail['AgencySysId'];
            $AgencyContact = $getAgentDetail['ContactNo1'];
            $AgencyCountrycode = $getAgentDetail['countrycode'];
            $Signature = $getAgentDetail['Signature'];
            $GetTravelPlanByCustomer = $this->_crmcusttravelplan->GetTravelPlanByCustomer($tpsysID);

            if (isset($GetTravelPlanByCustomer[0]['RefTPSysId']) && (int) $GetTravelPlanByCustomer[0]['RefTPSysId'] > 0) {
                $returnMM = $this->_crmcusttravelplan->CopyProposalPaymentData($GetTravelPlanByCustomer[0]);
            }

            $secureCode = Catabatic_ValidateCustomer::secureCode(base64_encode($tpsysID), 1);
            $link = $this->baseUrl . "/proposal/booking-forex-customer/mid/" . $secureCode . '/code/' . base64_encode($tpsysID);

            $custsalutation = (isset($GetTravelPlanByCustomer[0]['Salutation']) && !empty(trim($GetTravelPlanByCustomer[0]['Salutation']))) ? $ARR_SALUTION[trim($GetTravelPlanByCustomer[0]['Salutation'])] : '';
            $customerFullName = ucfirst($custsalutation . ' ' . trim($GetTravelPlanByCustomer[0]['FirstName']) . ' ' . trim($GetTravelPlanByCustomer[0]['LastName']));
            $customerFirstName = trim($GetTravelPlanByCustomer[0]['FirstName']);
            $DestinationPlaces = $GetTravelPlanByCustomer[0]['DestinationPlaces'];
            //   echo "<pre>";print_r($GetTravelPlanByCustomer);die;  
            $flexiPackageItenList = $objPackage->getCustPackageItenList($tpsysID);
            $totalDaysNightsArr = Zend_Controller_Action_HelperBroker::getStaticHelper('Package')->getPackageTotalNoOfDays($flexiPackageItenList, $packInfo['NoofNight']);
            $CurrencyTypeName = 'INR';
            $currencyarr = $objPackage->getCurrencyList();
            foreach ($currencyarr as $cKey => $cValue) {
                if ($cValue['CurrencyType'] === $GetTravelPlanByCustomer[0]['CurrencyType']) {
                    $CurrencyTypeName = $cValue['Symbol'];
                }
            }


            $RoomInfoJson = json_decode($GetTravelPlanByCustomer[0]['RoomInfoJson'], 1);
            $noofPaxTotal = 0;
            foreach ($RoomInfoJson as $roomKey => $roomValue) {
                $noofPax = $roomValue['Adult'] + $roomValue['Child'] + $roomValue['Infant'];
                $noofPaxTotal = $noofPaxTotal + $noofPax;
            }
            $tripText = 'Forex currency in INR';
            $OrderForText = 'Foex';
            $agentparams = array(
                'agentName' => ucfirst($Salutation . ' ' . $FirstName . ' ' . $LastName),
                'emailId' => $EmailId,
                'ProposalId' => $packInfo['TPSysId'],
                'queryId' => $packInfo['MasterTPSysId'],
                'customerName' => trim($customerFullName),
                'customerEmailId' => $GetTravelPlanByCustomer[0]['EmailId'],
                'customerContacts' => $GetTravelPlanByCustomer[0]['Contacts'],
                'countrycode' => $GetTravelPlanByCustomer[0]['countrycode'],
                'TravelDate' => $GetTravelPlanByCustomer[0]['StartDate']->format('d-M-y'),
                'NetPrice' => $this->moneyFormatIndia((float) $GetTravelPlanByCustomer[0]['NetPrice']),
                'MinPax' => $noofPaxTotal,
                'NoofDays' => $totalDaysNightsArr['totaldays'],
                'PlanType' => $GetTravelPlanByCustomer[0]['PlanType'],
                'packageTitle' => $GetTravelPlanByCustomer[0]['Title'],
                'link' => $link,
                'DestinationPlaces' => $DestinationPlaces,
                'AgencyContact' => $AgencyContact,
                'AgencyCountrycode' => $AgencyCountrycode,
                'CurrencyTypeName' => $CurrencyTypeName,
                'Signature' => $Signature,
                'OrderForText' => $OrderForText,
                'tripText' => $tripText,
                'IsDisplayHelloGTX' => $getAgentDetail['IsDisplayHelloGTX']
            );

            $subjectAgent = ' Confirmation by ' . trim($customerFullName) . ' for ' . trim($DestinationPlaces) . ' ' . $tripText;
            $agenthtml = new Zend_View();
            $agenthtml->setScriptPath(APPLICATION_PATH . '/views/emails/');
            $agenthtml->assign($agentparams);
            $agentbodyText = $agenthtml->render('confirmationProposal.phtml');
            $agentemailData = array('fromEmail' => $EmailId, 'fromName' => ucfirst($FirstName . ' ' . $LastName), 'subject' => $subjectAgent, 'to' => array($EmailId), 'bodyHtml' => $agentbodyText, 'bodyText' => '');

            $arrEmailStatisticsType = array_keys(unserialize(ARR_EMAIL_STATISTICS_TYPE));
            $arrEmailStatistics = array(
                "TPSysId" => 0,
                "TypeSysId" => 1, // 1 For Email 2 For SMS
                "AgencySysId" => $getAgentDetail['AgencySysId'],
                "AgentSysId" => $getAgentDetail['UserSysId'],
                "Title" => '',
                "Source" => $arrEmailStatisticsType[2], // 6 For Misc
                "Status" => 0,
                "RefSysId" => "",
                "RefSysStatus" => "",
                "CreateDate" => date('Y-m-d H:i:s')
            );

            if ($IsSendMail == 1) {
                $checkStatus1 = $this->mailSentByElastice($agentemailData, $arrEmailStatistics);
            }

            $countrycode = (strpos($GetTravelPlanByCustomer[0]['countrycode'], '+') !== false) ? $GetTravelPlanByCustomer[0]['countrycode'] : "+" . $GetTravelPlanByCustomer[0]['countrycode'];
            $CustomerMobileNumber = trim($countrycode) . '' . trim($GetTravelPlanByCustomer[0]['Contacts']);
            $amount = trim($CurrencyTypeName) . ' ' . trim($GetTravelPlanByCustomer[0]['NetPrice']);
            $destinationLocation = trim($DestinationPlaces);
            $postData = array(
                "UserSysId" => trim($packInfo['AgentSysId']),
                // "IsSchedule" => False,
                "schedule_time" => "",
                "title" => "Verbal Confirmaiton Alert",
                "body" => "$customerFirstName has just confirmed verbally for $destinationLocation offer for $amount.",
                //"IsButton" => True,
                "URL" => "/publicpackage/view-customer-final-package/id/" . base64_encode($tpsysID) . '/code/' . $secureCode,
                "IsCall" => true,
                "mobileNo" => trim($CustomerMobileNumber)
            );
            if (isset($getAgentDetail['SecurityKey'])) {
                $curl = curl_init();
                curl_setopt_array($curl, array(
                    CURLOPT_URL => 'https://globaltravelexchange.com/gtxwebservices/agency/create-fire-base-message',
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_ENCODING => '',
                    CURLOPT_MAXREDIRS => 10,
                    CURLOPT_TIMEOUT => 0,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                    CURLOPT_CUSTOMREQUEST => 'POST',
                    CURLOPT_POSTFIELDS => $postData,
                    CURLOPT_HTTPHEADER => array(
                        'securitykey:' . trim($getAgentDetail['SecurityKey']),
                    //'Content-Type: application/json'
                    ),
                ));
                $response = curl_exec($curl);
                curl_close($curl);
                //echo "<pre>";print_r($response);exit;
            }


            $secureCode = Catabatic_ValidateCustomer::secureCode(base64_encode($tpsysID), 1);
            $paybalance = $this->baseUrl . '/package-booking/package-booking-view/pid/' . base64_encode($tpsysID) . '/cid/' . base64_encode($GetTravelPlanByCustomer[0]['CustomerSysId']) . '/code/' . $secureCode;
            if ($getAgentDetail['IsB2CSite'] == 1) {
                $paybalance = $getAgentDetail['Url'] . "detail/index/view/id/" . base64_encode($paybalance);
            } else if (($getAgentDetail['IsB2CSite'] == 2) && ($getAgentDetail['IsSiteType'] == 1)) {
                $paybalance = $getAgentDetail['Url'] . "hellogtx/index.html?id=" . base64_encode($paybalance);
            } else if (($getAgentDetail['IsB2CSite'] == 2) && ($getAgentDetail['IsSiteType'] == 0)) {
                $paybalance = $getAgentDetail['Url'] . "hellogtx/gtx.php?id=" . base64_encode($paybalance);
            }
            $custparams = array(
                'agentName' => ucfirst($FirstName . ' ' . $LastName),
                'emailId' => $EmailId,
                'ProposalId' => $packInfo['TPSysId'],
                'queryId' => $packInfo['MasterTPSysId'],
                'customerName' => $customerFullName,
                'customerEmailId' => $GetTravelPlanByCustomer[0]['EmailId'],
                'customerContacts' => $GetTravelPlanByCustomer[0]['Contacts'],
                'countrycode' => $GetTravelPlanByCustomer[0]['countrycode'],
                'TravelDate' => $GetTravelPlanByCustomer[0]['StartDate']->format('d-M-y'),
                'NetPrice' => $this->moneyFormatIndia((float) $GetTravelPlanByCustomer[0]['NetPrice']),
                'MinPax' => $noofPaxTotal,
                'NoofDays' => $totalDaysNightsArr['totaldays'],
                'PlanType' => $GetTravelPlanByCustomer[0]['PlanType'],
                'packageTitle' => $GetTravelPlanByCustomer[0]['Title'],
                'link' => $link,
                'DestinationPlaces' => $DestinationPlaces,
                'AgencyContact' => $AgencyContact,
                'AgencyCountrycode' => $AgencyCountrycode,
                'CurrencyTypeName' => $CurrencyTypeName,
                'Signature' => $Signature,
                'OrderForText' => '',
                'tripText' => $tripText,
                'paybalance' => '(<a href="' . $paybalance . '" style="text-decoration: none;">Click here to PAY</a>)',
            );
            //            echo "<pre>";print_r($_SESSION);die;
            $subjectCust = 'Confirmation for ' . trim($DestinationPlaces) . ' ' . $tripText;
            $custhtml = new Zend_View();
            $custhtml->setScriptPath(APPLICATION_PATH . '/views/emails/');
            $custhtml->assign($custparams);
            $custbodyText = $custhtml->render('confirmationProposalCustomer.phtml');
            $custemailData = array('fromEmail' => $EmailId, 'fromName' => $FirstName . ' ' . $LastName, 'subject' => $subjectCust, 'to' => array($GetTravelPlanByCustomer[0]['EmailId']), 'bodyHtml' => $custbodyText, 'bodyText' => '');

            if ($IsSendMail == 1) {
                $checkStatus2 = $this->mailSentByElastice($custemailData, $arrEmailStatistics);
            }
            echo 1;
            exit;
        }
    }
        function moneyFormatIndia($num) {
        $num = round($num);
        $explrestunits = "";
        if (strlen($num) > 3) {
            $lastthree = substr($num, strlen($num) - 3, strlen($num));
            $restunits = substr($num, 0, strlen($num) - 3); // extracts the last three digits
            $restunits = (strlen($restunits) % 2 == 1) ? "0" . $restunits : $restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping.
            $expunit = str_split($restunits, 2);
            for ($i = 0; $i < sizeof($expunit); $i++) {
                // creates each of the 2's group and adds a comma to the end
                if ($i == 0) {
                    $explrestunits .= (int) $expunit[$i] . ","; // if is first value , convert into integer
                } else {
                    $explrestunits .= $expunit[$i] . ",";
                }
            }
            $thecash = $explrestunits . $lastthree;
        } else {
            $thecash = $num;
        }
        return $thecash; // writes the final format where $currency is the currency symbol.
    }
       public function forexVoucherAction() {
        $this->_helper->layout->disableLayout();
        $mid = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('mid')));
        $TPSysId = $this->_HtmlPurifier->filter(base64_decode($this->getRequest()->getParam('pid')));
        if ($TPSysId == '') {
            echo "Please try again";
            die;
        }
        $travelPlanDetail = $this->_crmcusttravelplan->GetForexCustomerDetailsTrx($TPSysId);
        $CustomerSysId = $travelPlanDetail[0]['CustomerSysId'];
        $objAgencyStaff = new Travel_Model_TblAgencyStaff();
        $agentDetail = $objAgencyStaff->getUserDetailsById($travelPlanDetail[0]['AgentSysId']);
        $AgencySysId = $travelPlanDetail[0]['AgencySysId'];
        $getAgentDetail = array('AgentName' => $agentDetail['FirstName'] . " " . $agentDetail['LastName'], 'AgentContact' => $agentDetail['ContactNo1']);
        $getAgencyDetail = $this->_crmcustomerObj->GetAgencyDetailById($AgencySysId);
        $getAgencyDetail['fullAddress'] = isset($agencyAddress['CityName']) ? $agencyAddress['CityName'] . $agencyState . $agencyCountry : '';
        $this->view->getAgentDetail = $getAgentDetail;
        $this->view->agencyDetails = $getAgencyDetail;
        $this->view->travelPlanDetail = $travelPlanDetail;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit