| 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/junkdata/b2b.hellogtx.comOLDSEP11bak/application/models/ |
Upload File : |
<?php
class Travel_Model_HotelMaster {
protected $db = NULL;
public $intId = NULL;
protected $objHelperGeneral;
/* * ************************************ */
public function __construct() {
$request = Zend_Controller_Front::getInstance()->getRequest();
$this->baseUrl = $request->getScheme() . '://' . $request->getHttpHost();
$this->db = Zend_Db_Table::getDefaultAdapter();
$this->_session = new Zend_Session_Namespace('User');
$this->TrxCurrency = $this->_session->data['TrxCurrency'];
$this->SecurityKey = $this->_session->data['SecurityKey'];
$this->MasterAgencySysId = $this->_session->data['MasterAgencySysId'];
$this->gtxagencysysid = $this->_session->data['AgencySysId'];
}
public function __destruct() {
$this->db->closeConnection();
}
public function getHotel($destinationId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $markupDetailsArray = array(), $starFilterValue = NULL, $nameFilterValue = NULL) {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
$destinationId = trim($destinationId);
//$destinationId = 6000;
$order = 'StarRating ASC';
if ($filterType == 2) {
if ($starFilterValue == 1) {
$order = 'StarRating ASC';
} else {
$order = 'StarRating DESC';
}
} else if ($filterType == 1) {
if ($nameFilterValue == 1) {
$order = 'packageNameUrl ASC';
} else {
$order = 'packageNameUrl DESC';
}
}
$response = array();
$sql = "select * FROM $table A WHERE DestinationsId = $destinationId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by $order";
$res = $this->db->query($sql)->fetchAll();
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
if (count($res) > 0) {
foreach ($res as $row) {
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = $RoomInfoArray = array();
$RoomInfo = $longJson['RoomInfo'];
foreach ($RoomInfo as $riKey => $riVal) {
$RoomInfoArray[$riVal['RoomType']] = $riVal;
}
$checkDuplicateDate = array();
//echo "<pre>";print_r($RoomInfoArray);die;
foreach ($longJson['PriceAdditional'] as $priceVal) {
if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
$getPriceF = 0;
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
switch ($totalAdult) {
case 1 : {
if ((int) $priceVal['NSOC'] > 0) {
$getPrice = (float) $priceVal['NSOC'];
} else {
$getPrice = (float) $priceVal['NDOC'];
}
break;
}
case 2 : {
if ($Adult == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if ($ChildWithOutBed == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if (($Adult + $ChildWithOutBed) == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 3 : {
if ($Adult == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
} else if ($ChildWithOutBed == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 4 : {
if ($ChildWithOutBed + $Adult == 4) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
}
break;
}
default : {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['EWOBC'];
break;
}
}
$getPriceF = $getPriceF + $getPrice;
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF * $exchangerate;
//echo "<pre>";print_r($exchangerate);die;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
// $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
}
}
}
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
$countval = array();
$finalArray = array();
$Price = $Markup = 0;
$defaultRoomType = $defaultMealPlanType = '';
foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNd) {
$countval[$i] = count($checkRNd["CreateDate"]);
if ($countval[$i] == $totalNight) {
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['AminitiesMask'] = $checkRNd['AminitiesMask'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['priceVal'] = $checkRNd['priceVal'];
$mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$mmarkupValue = 0;
if ((int) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
// $mPrice = $mPrice + $mmarkupValue;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'] = $mmarkupValue;
if ($Price == 0 || $Price > $mPrice) {
$Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$markupValue = 0;
if ((int) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
} else {
$markupValue = $checkRNd['B2BMarkup'];
}
}
// $Price = $Price + $markupValue;
$Markup = $Markup + $markupValue;
$finalArray['category']['defaultRoomType'] = $SUBkey;
$finalArray['category']['defaultMealPlanType'] = $keyItem;
}
}
$i++;
}
}
}
if (!empty($finalArray)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['Stars'],
'ThumnailImg' => $longJson['ThumnailImg'],
'DetailImg' => $longJson['DetailImg'],
'PropertyType' => $longJson['PropertyType'],
'CheckinTime' => $longJson['CheckinTime'],
'Address' => $longJson['Address'],
'latitude' => $longJson['latitude'],
'longitude' => $longJson['longitude'],
'CitySysId' => $longJson['CitySysId'],
'ContSysId' => $longJson['ContSysId'],
'PinCode' => $longJson['PinCode'],
'Location' => $longJson['Location'],
'checkPlan' => base64_encode(json_encode($finalArray)),
'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => (int) $Price,
'Markup' => (int) $Markup,
'defaultRoomType' => (int) $defaultRoomType,
'defaultMealPlanType' => (int) $defaultMealPlanType,
);
}
}
}
return $response;
}
function getHotelDetail($hotelRefSysId) {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
$select = $this->db->select()->from(array("t1" => "tb_travelplan_hotel"));
$select->joinLeft(array('t2' => 'tb_tbb2c_packages_master'), 't1.HotelId = t2.GTXPkgId', array("LongJsonInfo"));
$select->joinLeft(array('t3' => 'tb_master_geo_city'), 't1.DestinationId = t3.CityId', array("Title"));
$select->joinLeft(array('t4' => 'tb_traavelplan_destination'), 't1.destsysId = t4.Id', array("StartDate", "EndDate"));
$select->where("t1.ID IN(?)", $hotelRefSysId);
$select->order("t4.Id ASC");
$getZsontoArray = $this->db->fetchAll($select);
// echo "<pre>";print_r($getZsontoArray);die;
$selectionHotelByOption = array();
$i = 0;
$TSys = array();
foreach ($getZsontoArray as $key => $val) {
$TPSysId = (int) trim($val['TpsysId']);
$RoomTypeIdNew = trim($val['RoomTypeName']);
$RoomTypeId = trim($val['RoomTypeId']);
$MealPlanId = trim($val['MealPlanId']);
$MEAL_TYPE = unserialize(MEAL_TYPE);
foreach ($MEAL_TYPE as $MTKey => $MTValue) {
if ($val['MealPlanId'] == $MTKey) {
$MealTypeIdNew = $MTValue;
}
}
$keyVal = $val['DestinationId'] . "_" . $val['destSeq'];
$selectionHotelByOption[$keyVal]['Title'] = $val['Title'];
$longJson = json_decode($val['LongJsonInfo'], TRUE);
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['Title'] = $longJson['Title'];
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['Stars'] = $longJson['Stars'];
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['RoomTypeId'][] = $RoomTypeId;
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['MealPlanId'][] = $MealPlanId;
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['RoomTypeName'][] = $RoomTypeIdNew;
$selectionHotelByOption[$keyVal]['Hotel'][$val['HotelId']]['MealPlanName'][] = $MealTypeIdNew;
$selectionHotelByOption[$keyVal]['StartDate'] = $val['StartDate'];
$selectionHotelByOption[$keyVal]['EndDate'] = $val['EndDate'];
// $selectionHotelByOption[$keyVal]['RoomTypeId'][] = $val['RoomTypeId'];
// $selectionHotelByOption[$keyVal]['MealPlanId'][] = $val['MealPlanId'];
$TSys['TPSysId'] = $TPSysId;
// $selectionHotelByOption[$val['DestinationId']]['Hotel'][$val['HotelId']]['Price'][] = $getPrice;
$i++;
}
return $selectionHotelByOption = array(
"TPSysId" => $TSys,
"selectionHotelByOption" => $selectionHotelByOption,
);
}
function hotelPriceCalculation($hotelRefSysId, $TPSysId, $selectedHotelData = array(), $CurrencyTitle = '') {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
$selectionHotelByOption = array();
$select = $this->db->select()->from(array("t1" => "tb_travelplan_hotel"));
$select->joinLeft(array('t2' => 'tb_tbb2c_packages_master'), 't1.HotelId = t2.GTXPkgId', array("LongJsonInfo"));
$select->joinLeft(array('t3' => 'tb_master_geo_city'), 't1.DestinationId = t3.CityId', array("Title"));
$select->joinLeft(array('t4' => 'tb_traavelplan_destination'), 't1.destsysId = t4.Id');
$select->where("t1.HotelId IN(?)", $hotelRefSysId);
$select->where("t2.IsActive = ? ", 1);
$select->where("t1.IsMarkForDel = ? ", '0');
//$select->where("t1.HotelId IN(?)", $hotelRefSysId);
$select->where("t1.TpsysId = ?", $TPSysId);
$getZsontoArray = $this->db->fetchAll($select);
$finalPriceReturn = 0;
foreach ($getZsontoArray as $key => $val) {
$longJson = json_decode($val['LongJsonInfo'], TRUE);
$checkInDate = $val['StartDate'];
$checkOutDate = $val['EndDate'];
$RoomTypeId = (int) trim($val['RoomTypeId']);
$MealPlanId = (int) trim($val['MealPlanId']);
$Adult = (int) trim($val['Adult']);
$AdultExtraBed = (int) trim($val['AdultExtraBed']);
$ChildWithBed = (int) trim($val['ChildWithBed']);
$ChildWithOutBed = (int) trim($val['ChildWithOutBed']);
$Infent = (int) trim($val['Infent']);
$totalAdult = (int) $Adult + (int) $AdultExtraBed + (int) $ChildWithBed + (int) $ChildWithOutBed;
$getPriceBreakup = array();
$getPriceF = $getPrice = $NDOC = $NSOC = $NEBC = $NEWOBC = $EWOBC = $getMarkupF = 0;
// echo "<pre>";
// print_r($longJson['PriceAdditional']);
// exit;
$checkDupplicateCreateDates = array();
foreach ($longJson['PriceAdditional'] as $priceVal) {
if ((trim($priceVal['EType']) == $RoomTypeId && trim($priceVal['MPType']) == $MealPlanId) && ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate)) {
if (!isset($checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']]) || !in_array($priceVal['CreateDate'], $checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']])) {
$checkDupplicateCreateDates[$priceVal['EType']][$priceVal['MPType']][] = $priceVal['CreateDate'];
$getPriceBreakup[] = $priceVal;
switch ($totalAdult) {
case 1 : {
if ((int) $priceVal['NSOC'] > 0) {
$getPrice = (float) $priceVal['NSOC'];
} else {
$getPrice = (float) $priceVal['NDOC'];
}
break;
}
case 2 : {
if ($Adult == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if ($ChildWithOutBed == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if (($Adult + $ChildWithOutBed) == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 3 : {
if ($Adult == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
} else if ($ChildWithOutBed == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 4 : {
if ($ChildWithOutBed + $Adult == 4) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
}
break;
}
default : {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['EWOBC'];
break;
}
}
$markupValue = 0;
if ((int) $priceVal['B2BMarkup'] > 0) {
if ($priceVal['MarkType'] == 1) {
$markupValue = (float) ($getPrice * ($priceVal['B2BMarkup']) / 100);
} else {
$markupValue = $priceVal['B2BMarkup'];
}
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF + $getPrice * $exchangerate;
$getMarkupF = $getMarkupF + $markupValue * $exchangerate;
$Currency = $priceVal['Currency'];
$NDOC = $priceVal['NDOC'] * $exchangerate;
$NSOC = $priceVal['NSOC'] * $exchangerate;
$NEBC = $priceVal['NEBC']*$exchangerate;
$NEWOBC = $priceVal['NEWOBC']*$exchangerate;
$EWOBC = $priceVal['EWOBC']*$exchangerate;
$SSID = $priceVal['SSID'];
}
}
}
$dataArr = array(
'Price' => $getPriceF + $getMarkupF,
);
$totalPrice = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
$PriceBreakup = array(
'Currency' => (int) $Currency,
'NDOC' => (int) $NDOC,
'NSOC' => (int) $NSOC,
'NEBC' => (int) $NEBC,
'NEWOBC' => (int) $NEWOBC,
'EWOBC' => (int) $EWOBC,
'Price' => $getPriceF,
'Markup' => $getMarkupF,
'SSID' => $SSID,
);
$finalPriceReturn += $totalPrice;
$selectionHotelByOption['Hotel'][$val['HotelId']]['Price'] = $PriceBreakup;
$selectionHotelByOption['Hotel'][$val['HotelId']]['Currency'] = $Currency;
}
$selectionHotelByOption['Price'] = $CurrencyTitle . ' ' . round($finalPriceReturn,2);
return $selectionHotelByOption;
}
public function getTotalDays($TPSysId, $startDate) {
$select = $this->db->select()->from(array("t1" => "tb_traavelplan_destination"), array("Sum(NoDay) as TotalNight"));
$select->where("t1.TPSysId = ?", $TPSysId);
// echo $select;exit;
$getZsontoArray = $this->db->fetchRow($select);
$totalDays = (int) $getZsontoArray["TotalNight"] + 1;
$datetime = new DateTime($startDate);
$datetime->modify("+$totalDays days");
$EndData = $datetime->format('Y-m-d');
$returnArray = array(
"startDate" => $startDate,
"endDate" => $EndData,
"totalDays" => $totalDays,
);
return $returnArray;
}
public function getItnaryDays($TPSysId) {
$select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "EndContId", "StartCityId"));
$select->joinLeft(array('t2' => 'tb_traavelplan_destination'), 't1.TPSysId = t2.TPSysId', array("CitySysId", "NoDay", "destName"));
$select->joinLeft(array('t3' => 'tb_master_geo_city'), 't2.CitySysId = t3.CityId', array("Title", "ContSysId"));
$select->where("t1.TPSysId = ?", $TPSysId);
$select->order("t2.StartDate ASC");
// echo $select;exit;
$getZsontoArray = $this->db->fetchAll($select);
// echo "<pre>";print_r($getZsontoArray);die;
$totalDays = 0;
$arraycity = array();
$i = 0;
foreach ($getZsontoArray as $key => $val) {
$days = (int) $val['NoDay'];
$totalDays = $totalDays + $days;
$arraycity['CitySysId'][$i]['days'] = (int) $days;
$arraycity['CitySysId'][$i]['cityId'] = (int) $val['CitySysId'];
$arraycity['CitySysId'][$i]['cityIdName'] = $val['destName'];
$arraycity['CitySysId'][$i]['ContSysId'] = $val['ContSysId'];
$arraycity['EndCityId'] = (int) $val['EndCityId'];
$arraycity['EndContId'] = (int) $val['EndContId'];
$arraycity['EndCity'] = $val['EndCity'];
$arraycity['StartCity'] = $val['StartCity'];
$arraycity['StartCityId'] = $val['StartCityId'];
$arraycity['TotalAdult'] = (int) $val['TotalAdult'];
$arraycity['TotalChild'] = (int) $val['TotalChild'];
$arraycity['TotalInfant'] = (int) $val['TotalInfant'];
$arraycity['StartDate'] = $val['StartDate'];
$i++;
}
$returnArray = array();
$d = 0;
foreach ($arraycity['CitySysId'] as $valueCity) {
for ($k = 0; $k < $valueCity['days']; $k++) {
$returnArray[$d]['destSysId'] = $valueCity['cityId'];
$returnArray[$d]['CityName'] = $valueCity['cityIdName'];
$returnArray[$d]['ContSysId'] = $valueCity['ContSysId'];
$d++;
}
}
$returnArray[$d]['destSysId'] = $arraycity['EndCityId'];
$arraycityEndCity = explode('(', $arraycity['EndCity']);
$returnArray[$d]['CityName'] = $arraycityEndCity[0];
$returnArray[$d]['ContSysId'] = $arraycity['EndContId'];
$returnAr = array(
"arraycity" => $arraycity,
"returnArray" => $returnArray
);
return $returnAr;
}
public function getTravelPlanHistory($TPSysId) {
$select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "StartCityId"));
$select->where("t1.TPSysId = ?", $TPSysId);
$getZsontoArray = $this->db->fetchAll($select);
return $getZsontoArray;
//$select->order("t.StartDate ASC");
}
public function getTransportRoute($TPSysId, $StartSysId, $totaldays, $endCityID) {
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
$select->where("t1.StartCitySysId = ?", $StartSysId);
$select->where("t1.EndCitySysId = ?", $endCityID);
$select->where("t1.Noofnights = ?", $totaldays);
$select->where("t1.IsActive = ?", 1);
$select->where("t1.IsMarkForDel = '0'");
// echo $select;
$getZsontoArray = $this->db->fetchAll($select);
$select1 = $this->db->select()->from(array("t2" => "tb_traavelplan_destination"), array("CitySysId"));
$select1->where("t2.TPSysId = ?", $TPSysId);
$CitySysIdArray = $this->db->fetchAll($select1);
// echo "<pre>";print_r($CitySysIdArray);
//
// echo "<br>";
//
// echo "<pre>";print_r($getZsontoArray);exit;
$arrCitySysId = array();
// $arrCitySysId[0] = 0;
foreach ($CitySysIdArray as $cityIdKey => $cityIdValue) {
$arrCitySysId[] = $cityIdValue['CitySysId'];
}
// echo "<pre>";print_r($arrCitySysId);
// echo "<br>";
$finalArray = array();
if (!empty($getZsontoArray)) {
foreach ($getZsontoArray as $key => $routeName) {
$category = json_decode($routeName['category'], TRUE);
$cityIncludes = json_decode($routeName['cityIncludes'], TRUE);
// echo "<pre>";print_r($category);
// echo "<br>";
$arrdesId = array();
$testResult = 0;
foreach ($cityIncludes as $ciKey => $ciValue) {
if ($ciValue['DestSysId'] == $arrCitySysId[$ciKey]) {
$testResult++;
}
}
$i = 0;
if ((count($cityIncludes) == count($arrCitySysId)) && (count($cityIncludes) == $testResult)) {
foreach ($category as $catKey => $catValue) {
$finalArray[$i] = [
'transport_route_id' => $routeName['transport_route_id'],
'RouteSysId' => $routeName['RouteSysId'],
'RouteName' => $routeName['RouteName'],
'SupplierSysId' => $routeName['SupplierSysId'],
'Title' => $routeName['Title'],
'Description' => $routeName['Description'],
'StartCitySysId' => $routeName['StartCitySysId'],
'Noofnights' => $routeName['Noofnights'],
'CityName' => $routeName['CityName'],
'EndCityName' => $routeName['EndCityName'],
'RouteVechSysId' => $catValue['RouteVechSysId'],
'VehicleSysId' => $catValue['VehicleSysId'],
'VehicleTypeSysId' => $catValue['VehicleTypeSysId'],
'Cost' => $catValue['Cost'],
'Capacity' => $catValue['Capacity'],
'CurrencyType' => $catValue['CurrencyType'],
'SupplierName' => $catValue['SupplierName'],
'VehName' => $catValue['VehName'],
'VehicleTypeName' => $catValue['VehicleTypeName'],
'CurrencySymbol' => $catValue['CurrencySymbol'],
'cityIncludes' => $cityIncludes,
];
$i++;
}
}
}
// exit;
// echo "<pre>";print_r($finalArray);exit;
}
return $finalArray;
//$select->order("t2.StartDate ASC");
}
public function getTncMasterData() {
$select = $this->db->select()->from(array("t1" => "tb_traavelplan_tnc_master"), '*');
$tncDataArray = $this->db->fetchAll($select);
return $tncDataArray;
//$select->order("t.StartDate ASC");
}
public function getAutosuggestTransportRouteData($StartSysId, $endCityID, $noofdays = NULL, $transferType = NULL, $categoryTransport = NULL, $subCategoryTransport = NULL, $StateSysId = 0) {
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
if (isset($categoryTransport) && $categoryTransport == 10 && $StateSysId > 0) {
$select->where("t1.StateSysId = ?", $StateSysId);
$select->where("t1.TransportSubType = ?", 10);
} else {
$select->where("t1.StartCitySysId = ?", $StartSysId);
// $select->where("t1.EndCitySysId = ?", $endCityID);
$select->where("t1.DestinationCitySysId = ?", $endCityID);
if ($noofdays) {
$select->where("t1.Noofnights = ?", $noofdays);
}
if ($transferType) {
$select->where("t1.TransportType = ?", $transferType);
}
if ($categoryTransport) {
if ($categoryTransport == 2) {
$select->where("t1.TransportSubType LIKE ?", "%,$subCategoryTransport%");
} else {
$select->where("t1.TransportSubType = ?", $categoryTransport);
}
}
}
$select->where("t1.IsActive = ?", 1);
$select->where("t1.IsMarkForDel = '0'");
// echo $select;die;
$finalArray = $this->db->fetchAll($select);
return $finalArray;
//$select->order("t2.StartDate ASC");
}
public function getAutosuggestTransportRouteDataById($transport_route_id) {
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
$select->where("t1.transport_route_id = ?", $transport_route_id);
$select->where("t1.IsActive = ?", 1);
$select->where("t1.IsMarkForDel = '0'");
$finalArray = $this->db->fetchAll($select);
return $finalArray;
//$select->order("t2.StartDate ASC");
}
public function getHotelByHotelid($table, $hotelIds, $nights, $ROOMTYPE, $MEALPLANTYPE, $getcheckIn, $roomJsonInfo, $DestinationsIds, $package_destination_night_detail = NULL, $markupDetailsArray = array()) {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
//echo "<pre>";print_r($hotelIds);exit;
$hotelIds = trim($hotelIds);
$hotelIdsE = explode(',', $hotelIds);
$nightsE = explode(',', $nights);
$ROOMTYPEE = explode(',', $ROOMTYPE);
$MEALPLANTYPEE = explode(',', $MEALPLANTYPE);
$package_destination_night_detailE = json_decode($package_destination_night_detail, 1);
$roomJsonInfo = json_decode($roomJsonInfo, 1);
//$destinationId = 6000;
$response = array();
$sql = "select * FROM $table A WHERE GTXPkgId IN ($hotelIds) AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' ";
$res = $this->db->query($sql)->fetchAll();
$resArr = $resFinalArr = array();
foreach ($res as $resKey => $resVal) {
$resArr[$resVal['GTXPkgId']] = $resVal;
}
foreach ($hotelIdsE as $hKey => $hVal) {
$resFinalArr[] = $resArr[$hVal];
}
//$resFinalArr = $res;
// echo "<pre>";print_r($resFinalArr);die;
if (count($resFinalArr) > 0) {
$inc = 0;
foreach ($resFinalArr as $rKey => $row) {
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = array();
$checkInDate = $getcheckIn;
$NoofNights = $nightsE[$rKey];
$checkOutDate = date('Y-m-d', strtotime($checkInDate . ' + ' . ($NoofNights) . ' days'));
$getPriceF = 0;
foreach ($longJson['PriceAdditional'] as $priceVal) {
if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate && $ROOMTYPEE[$rKey] == $priceVal['EType'] && $MEALPLANTYPEE[$rKey] == $priceVal['MPType']) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['PriceVal'] = $priceVal;
$getPriceF = 0;
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
switch ($totalAdult) {
case 1 : {
if ((int) $priceVal['NSOC'] > 0) {
$getPrice = (float) $priceVal['NSOC'];
} else {
$getPrice = (float) $priceVal['NDOC'];
}
break;
}
case 2 : {
if ($Adult == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if ($ChildWithOutBed == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if (($Adult + $ChildWithOutBed) == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 3 : {
if ($Adult == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else if ($ChildWithOutBed == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 4 : {
if ($ChildWithOutBed + $Adult == 4) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
}
break;
}
default : {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['EWOBC'];
break;
}
}
$getPriceF = $getPriceF + $getPrice;
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], 1, 0);
}
$getPriceF = $getPriceF * $exchangerate;
if ($_SESSION['User']['data']['EmailId'] == 'mangal@catpl.co.in') {
// echo "<pre>";print_r($priceVal).'--';
// echo "<pre>";print_r($getPriceF).',';
//echo "<pre>";print_r(Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray)).',';
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
// $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
}
}
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
$countval = array();
$finalArray = array();
$Price = 0;
// if($_SESSION['User']['data']['EmailId'] == 'mangal@catpl.co.in'){
// echo "<pre>";print_r($checkPlan);die;
// }
foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNd) {
$countval[$i] = count($checkRNd["CreateDate"]);
if ($countval[$i] == $totalNight) {
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['PriceVal'] = $checkRNd['PriceVal'];
$Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $Price;
}
$i++;
}
}
}
if (!empty($finalArray)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'NoofNights' => $NoofNights,
'GTXPkgId' => $row['GTXPkgId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['Stars'],
'ThumnailImg' => $longJson['ThumnailImg'],
'DetailImg' => $longJson['DetailImg'],
'PropertyType' => $longJson['PropertyType'],
'CheckinTime' => $longJson['CheckinTime'],
'Address' => $longJson['Address'],
'latitude' => $longJson['latitude'],
'longitude' => $longJson['longitude'],
'CitySysId' => $longJson['CitySysId'],
'ContSysId' => $longJson['ContSysId'],
'PinCode' => $longJson['PinCode'],
'Location' => $longJson['Location'],
'checkPlan' => base64_encode(json_encode($finalArray)),
'IsFeatured' => $row['IsFeatured'],
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'ROOMTYPE' => $ROOMTYPEE[$rKey],
'MEALPLANTYPE' => $MEALPLANTYPEE[$rKey],
'isPrice' => 1,
'Price' => $Price,
);
} else {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'NoofNights' => $package_destination_night_detailE[$inc]['nights'],
'GTXPkgId' => 121212 + $inc,
'DestinationId' => $package_destination_night_detailE[$inc]['cityId'],
'Destinations' => $package_destination_night_detailE[$inc]['title'],
'ContSysId' => $package_destination_night_detailE[$inc]['CountryIds'],
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'isPrice' => 0,
'Price' => 0,
);
}
$getcheckIn = $checkOutDate;
$inc++;
}
}
return $response;
}
public function getHotelDetailByHotelIds($table, $hotelIds) {
$sql = "select * FROM $table A WHERE GTXPkgId IN ($hotelIds) AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' ";
$res = $this->db->query($sql)->fetchAll();
return $res;
}
public function getTableDataByIds($table, $column, $Ids) {
//$where = "AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0'";
$sql = "select * FROM $table A WHERE RouteSysId IN ($Ids)";
$res = $this->db->query($sql)->fetchAll();
return $res;
}
public function getTransportRouteDataByTransportSubType($StartSysId, $endCityID, $noofdays, $TransportSubType = 1) {
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
$select->where("t1.StartCitySysId = ?", $StartSysId);
$select->where("t1.EndCitySysId = ?", $endCityID);
$select->where("t1.Noofnights = ?", $noofdays);
$select->where("t1.TransportSubType IN ($TransportSubType)");
$select->where("t1.IsActive = ?", 1);
$select->where("t1.IsMarkForDel = '0'");
$finalArray = $this->db->fetchAll($select);
return $finalArray;
//$select->order("t2.StartDate ASC");
}
public function getHotelByPackageId($PkgSysId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL) {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
$PkgSysId = trim($PkgSysId);
//$destinationId = 6000;
$order = 'StarRating ASC';
if ($filterType == 1) {
$order = 'StarRating ASC';
} else if ($filterType == 2) {
$order = 'StarRating DESC';
}
$response = array();
$sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";
$res = $this->db->query($sql)->fetchAll();
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
if (count($res) > 0) {
foreach ($res as $row) {
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = array();
foreach ($longJson['PriceAdditional'] as $priceVal) {
if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$getPriceF = 0;
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
switch ($totalAdult) {
case 1 : {
if ((int) $priceVal['NSOC'] > 0) {
$getPrice = (float) $priceVal['NSOC'];
} else {
$getPrice = (float) $priceVal['NDOC'];
}
break;
}
case 2 : {
if ($Adult == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if ($ChildWithOutBed == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else if (($Adult + $ChildWithOutBed) == 2) {
$getPrice = (float) $priceVal['NDOC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 3 : {
if ($Adult == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else if ($ChildWithOutBed == 3) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEBC'];
}
break;
}
case 4 : {
if ($ChildWithOutBed + $Adult == 4) {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEWOBC'];
} else {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['NEBC'];
}
break;
}
default : {
$getPrice = (float) $priceVal['NDOC'] + (float) $priceVal['NEWOBC'] + (float) $priceVal['EWOBC'];
break;
}
}
$getPriceF = $getPriceF + $getPrice;
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], 1, 0);
}
$getPriceF = $getPriceF * $exchangerate;
//echo "<pre>";print_r($exchangerate);die;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'] = Catabatic_Helper::calculateMarkup($getPriceF);
//echo "<pre>";print_r($getPrice);die;
}
}
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
$countval = array();
$finalArray = array();
$Price = 0;
foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNd) {
$countval[$i] = count($checkRNd["CreateDate"]);
if ($countval[$i] == $totalNight) {
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $checkRNd['Price'];
if ($Price == 0 || $Price > $checkRNd['Price']) {
$Price = $checkRNd['Price'];
}
}
$i++;
}
}
}
// echo "<pre>";print_r($finalArray);die;
if (!empty($finalArray)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['Stars'],
'ThumnailImg' => $longJson['ThumnailImg'],
'Images' => $longJson['Images'],
'DetailImg' => $longJson['DetailImg'],
'PropertyType' => $longJson['PropertyType'],
'CheckinTime' => $longJson['CheckinTime'],
'Address' => $longJson['Address'],
'latitude' => $longJson['latitude'],
'longitude' => $longJson['longitude'],
'CitySysId' => $longJson['CitySysId'],
'ContSysId' => $longJson['ContSysId'],
'PinCode' => $longJson['PinCode'],
'Location' => $longJson['Location'],
'checkPlan' => base64_encode(json_encode($finalArray)),
'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
);
}
}
}
return $response;
}
function getAllTransportRouteTransportSubType($StartSysId = 0, $endCityID = 0, $TransportSubType = '') {
$where = '1=1';
if ($TransportSubType == 10) {
if ($StartSysId > 0) {
$sqlCity = "SELECT StateSysId FROM `tb_master_geo_city` where CityId = '$StartSysId' and IsMarkForDel = '0' and IsActive = '1' ORDER BY `StateSysId` DESC";
$resCity = $this->db->query($sqlCity)->fetchAll();
$StateSysId = (int) $resCity[0]['StateSysId'];
$where .= ' AND StateSysId = ' . $StateSysId . ' AND TransportSubType = 10';
}
} else {
if ($StartSysId > 0 && $endCityID > 0) {
$where .= ' AND StartCitySysId = ' . $StartSysId . ' AND DestinationCitySysId = ' . $endCityID;
}
if (!empty($TransportSubType)) {
if ($TransportSubType == 1) {
$where .= ' AND TransportSubType = 1 ';
} else if ($TransportSubType == 3) {
$where .= ' AND TransportSubType = 3 ';
} else {
$where .= ' AND TransportSubType != 1';
}
}
}
$sql = "SELECT DISTINCT TransportSubType FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
$res = $this->db->query($sql)->fetchAll();
$TransportSubTypeArr = array();
foreach ($res as $key => $val) {
$TransportSubTypeArr[] = $val['TransportSubType'];
}
$TransportSubTypeArr = array_unique(explode(',', implode(',', $TransportSubTypeArr)));
return $TransportSubTypeArr;
}
public function checkAvailableTransportCategory($StartSysId, $endCityID) {
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
$select->where("t1.StartCitySysId = ?", $StartSysId);
// $select->where("t1.EndCitySysId = ?", $endCityID);
$select->where("t1.DestinationCitySysId = ?", $endCityID);
$select->where("t1.IsActive = ?", 1);
$select->where("t1.IsMarkForDel = '0'");
//echo $select;die;
$finalArray = $this->db->fetchAll($select);
return $finalArray;
//$select->order("t2.StartDate ASC");
}
function getAllItinerayTransportRouteTransportSubType($StartCityId = 0, $endCityIDs = '') {
$where = '1=1';
if ($StartCityId > 0 && !empty($endCityIDs)) {
$where .= ' AND StartCitySysId = ' . $StartCityId . ' AND DestinationCitySysId IN(' . $endCityIDs . ')';
}
$where .= ' AND TransportSubType = 1 ';
$sql = "SELECT * FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
$res = $this->db->query($sql)->fetchAll();
return $res;
}
public function getHotelByPackageIdNew($PkgSysId, $table, $checkInDate, $checkOutDate, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $hotelRoomMealArray = array()) {
$objHelperGeneral = Zend_Controller_Action_HelperBroker::getStaticHelper('General');
// $AgencyMarkupData = $objHelperGeneral->getAgencyMarkupData(2);
// $MarkUpType = $AgencyMarkupData['MarkUpType'];
// $MarkUp = $AgencyMarkupData['MarkUp'];
// $markupDetailsArray = array('MarkType'=>$MarkUpType,'MarkValue'=>$MarkUp);
$PkgSysId = trim($PkgSysId);
//$destinationId = 6000;
$order = 'StarRating ASC';
if ($filterType == 1) {
$order = 'StarRating ASC';
} else if ($filterType == 2) {
$order = 'StarRating DESC';
}
$response = array();
$sql = "select * FROM $table A WHERE PkgSysId = $PkgSysId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by IsFeatured DESC, $order";
$res = $this->db->query($sql)->fetchAll();
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$Child = (int) $child;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$rooms = count($roomJsonInfo);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
$currencyTypeArray = $objHelperGeneral->getCurrencyData();
if (count($res) > 0) {
foreach ($res as $row) {
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = array();
$RoomInfo = $roomJsonInfoArr = $roomJsonInfoArrfinal = array();
$RoomImages = $longJson['RoomImages'];
// echo "<pre>";print_r($longJson['RoomInfo']);
//echo "<pre>";print_r($roomJsonInfo);die;
$calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $Adult, $Child, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
$RoomInfo = $calculateRoomJsonPax['RoomInfo'];
$roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
$Currency = $longJson['PriceAdditional'][0]['Currency'];
$CurrencyType = $currencyTypeArray[$Currency];
foreach ($longJson['PriceAdditional'] as $priceVal) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
$getPriceF = 0;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
if (!empty($hotelRoomMealArray)) {
$roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
} else {
$roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
}
// $paxVal = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
foreach ($paxVal1 as $paxKey => $paxVal) {
//echo "<pre>";print_r($priceVal);die;
$roomMinAdult = $RoomInfo[$priceVal['EType']]['Adult'];
$roomMaxAdult = $RoomInfo[$priceVal['EType']]['MAdult'];
$roomMinChild = $RoomInfo[$priceVal['EType']]['Child'];
$roomMaxChild = $RoomInfo[$priceVal['EType']]['MChild'];
$roomMaxGuest = $RoomInfo[$priceVal['EType']]['TGuest'];
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
//$childAge = 8;
$adultPrice = $childPrice = 0;
if ($adults <= $roomMinAdult) {
$adultPrice = (float) $priceVal['NDOC'];
} else {
$NEBC = $adults - $roomMinAdult;
$adultPrice = (float) $priceVal['NDOC'] + (float) ($priceVal['NEBC'] * $NEBC);
}
$childPrice = 0;
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
if ($childAge >= $priceVal['FCAT']) {
$childPrice = $childPrice + (float) ($priceVal['NEWBC']);
} else {
$childPrice = $childPrice + (float) ($priceVal['NEWOBC']);
}
}
$getPrice = $adultPrice + $childPrice;
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != 1) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
}
}
}
}
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
$countval = array();
$finalArray = array();
$Price = 0;
$Markup = 0;
if (!empty($hotelRoomMealArray)) {
foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
$SUBkey = $rmvalue['RoomType'];
$keyItem = $rmvalue['MealPlan'];
$checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem] : array();
if (count($checkRNd["CreateDate"]) == $totalNight) {
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
$finalArray['category']['Name'] = $longJson['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
$mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$mmarkupValue = 0;
if ((int) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'][] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
$Price = $Price + $mPrice;
$Markup = $Markup + $mmarkupValue;
}
}
} else {
foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNd) {
// echo "<pre>";print_r($SUBVal);die;
$countval[$i] = count($checkRNd["CreateDate"]);
if ($countval[$i] == $totalNight) {
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CreateDate'][] = $checkRNd['CreateDate'];
}
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['MarkType'] = $checkRNd['MarkType'];
$mPrice = array_sum($checkRNd['Price']) / $totalNight;
$mmarkupValue = 0;
if ((int) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'][] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
if ($Price == 0 || $Price > $checkRNd['Price']) {
$Price = array_sum($checkRNd['Price']) / $totalNight;
$markupValue = 0;
if ((int) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
} else {
$markupValue = $checkRNd['B2BMarkup'];
}
}
$Price = $Price + $markupValue;
$Markup = $Markup + $markupValue;
}
$i++;
}
}
}
}
if (!empty($finalArray)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'CountryIds' => $row['CountryIds'],
'Countries' => $row['Countries'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['Stars'],
'ThumnailImg' => $longJson['ThumnailImg'],
'Images' => $longJson['Images'],
'DetailImg' => $longJson['DetailImg'],
'PropertyType' => $longJson['PropertyType'],
'CheckinTime' => $longJson['CheckinTime'],
'CheckOutTime' => $longJson['CheckOutTime'],
'Address' => $longJson['Address'],
'latitude' => $longJson['latitude'],
'longitude' => $longJson['longitude'],
'CitySysId' => $longJson['CitySysId'],
'ContSysId' => $longJson['ContSysId'],
'PinCode' => $longJson['PinCode'],
'Location' => $longJson['Location'],
'checkPlan' => base64_encode(json_encode($finalArray)),
'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'Markup' => $Markup,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
'RoomInfo' => $RoomInfo,
);
} else {
$response[] = array(
'destIndex' => 1,
'refId' => 0,
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'CountryIds' => $row['CountryIds'],
'Countries' => $row['Countries'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['Stars'],
'ThumnailImg' => $longJson['ThumnailImg'],
'Images' => $longJson['Images'],
'DetailImg' => $longJson['DetailImg'],
'PropertyType' => $longJson['PropertyType'],
'CheckinTime' => $longJson['CheckinTime'],
'CheckOutTime' => $longJson['CheckOutTime'],
'Address' => $longJson['Address'],
'latitude' => $longJson['latitude'],
'longitude' => $longJson['longitude'],
'CitySysId' => $longJson['CitySysId'],
'ContSysId' => $longJson['ContSysId'],
'PinCode' => $longJson['PinCode'],
'Location' => $longJson['Location'],
'checkPlan' => array(),
'AccoAminitiesMask' => $longJson['AccoAminitiesMask'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
);
}
}
}
return $response;
}
public function calculateRoomJsonPax($roomJsonInfo, $Adult, $Child, $RoomInfo, $RoomImages = array(), $hotelRoomMealArray = array()) {
$RoomInfo1 = $roomJsonInfoArr = $roomJsonInfoArrfinal = $RoomImagesArray = array();
foreach ($RoomImages as $key => $value) {
$RoomImagesArray[$value['ItemSysId']][] = $value['Details'];
}
foreach ($RoomInfo as $RoomInfoVal) {
$searchAdult = $Adult;
$totalCh = $searchChild = $Child;
$searchTotal = $Adult + $Child;
$roomMinAdult = $RoomInfoVal['Adult'];
$roomMaxAdult = $RoomInfoVal['MAdult'];
$roomMinChild = $RoomInfoVal['Child'];
$roomMaxChild = $RoomInfoVal['MChild'];
$roomMaxGuest = $RoomInfoVal['TGuest'];
$RoomType = $RoomInfoVal['RoomType'];
$RoomInfoVal['RoomImage'] = $RoomImagesArray[$RoomInfoVal['ItemSysId']];
$RoomInfo1[$RoomInfoVal['RoomType']] = $RoomInfoVal;
$rooms = count($roomJsonInfo);
$checkRoomAvailability = 0;
$roomJsonInfoNew = $roomJsonInfoRM = array();
$IM1 = 0;
foreach ($roomJsonInfo as $key => $val) {
$TotalAdultChild = $val['Adult'] + $val['Child'];
// if($val['Adult'] >= $roomMinAdult && $val['Adult'] <= $roomMaxAdult && $val['Child'] >= $roomMinChild && $val['Child'] <= $roomMaxChild && $TotalAdultChild <= $roomMaxGuest){
if ($val['Adult'] >= $roomMinAdult && $val['Adult'] <= $roomMaxAdult && $val['Child'] <= $roomMaxChild && $TotalAdultChild <= $roomMaxGuest) {
$checkRoomAvailability++;
}
$val['RoomType'] = (isset($hotelRoomMealArray[$key - 1]['RoomType'])) ? $hotelRoomMealArray[$key - 1]['RoomType'] : $key;
$val['MealPlan'] = (isset($hotelRoomMealArray[$key - 1]['MealPlan'])) ? $hotelRoomMealArray[$key - 1]['MealPlan'] : $key;
$roomJsonInfoNew[$key] = $val;
$roomJsonInfoRM[$val['MealPlan']][] = $val;
$IM1++;
}
if ($checkRoomAvailability == $rooms) {
$roomJsonInfoArr[$RoomType] = $roomJsonInfoRM;
} else {
$roomJsonInfoArr[$RoomType][] = $roomJsonInfo;
// for ($k = 1; $k <= $searchTotal; $k++) {
// $MealPlan = (isset($hotelRoomMealArray[$k-1]['MealPlan']) && !empty($hotelRoomMealArray[$k-1]['MealPlan'])) ? (int)$hotelRoomMealArray[$k-1]['MealPlan'] : $k;
// if ($searchAdult > 0) {
// $roomJsonInfoArr[$RoomType][$MealPlan][] = array('Adult'=>($searchAdult >= $roomMinAdult) ? $roomMinAdult : $searchAdult);
// $searchAdult = $searchAdult - $roomMinAdult;
// }
// if ($searchChild > 0) {
// $roomJsonInfoArr[$RoomType][$MealPlan][] = array('Child'=> ($searchChild >= $roomMinChild) ? $roomMinChild : $searchChild);
// $searchChild = $searchChild - $roomMinChild;
// }
// }
}
}
$roomJsonInfoArrfinal = $roomJsonInfoArr;
$return = array('RoomInfo' => $RoomInfo1, 'roomJsonInfoArrfinal' => $roomJsonInfoArrfinal, 'roomJsonInfo' => $roomJsonInfoNew);
return $return;
}
public function getMarkupHotel() {
if ($this->SecurityKey) {
$dataArray = array(
'PlanType' => 2,
'MasterAgencySysId' => $this->MasterAgencySysId,
'B2BAgencySysIdKey' => $this->SecurityKey,
'B2CAgencySysIdKey' => SECURITYKEY,
);
$model = new Gtxwebservices_Model_Webservices();
$result = $model->getMarkupAndServiceTaxNew($dataArray);
$response = json_decode($result, true);
return $response;
} else {
$data = array('status' => false, 'message' => 'Invalid request');
return ($data);
}
}
}