| 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/holidays.tripjack.comOLDSEP11bak/application/models/ |
Upload File : |
<?php
class Travel_Model_HotelMaster
{
protected $db = NULL;
public $intId = NULL;
protected $objHelperGeneral;
protected $SecurityKey;
protected $TrxCurrency;
/* * ************************************ */
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->TrxCurrency = ($_SESSION['User']['AgentCurrency'] > 0) ? $_SESSION['User']['AgentCurrency'] : $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';
}
}
$limit = '';
if($this->MasterAgencySysId == 103509){
// $limit = 'limit 40';
}
$response = array();
$sql = "select * FROM $table A WHERE DestinationsId = $destinationId AND ItemType = 2 AND IsActive = '1' and IsMarkForDel = '0' order by $order $limit ";
$res = $this->db->query($sql)->fetchAll();
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$roomJsonInfoNew = array();
$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();
foreach ($longJson['PriceAdditional'] as $priceVal) {
if ($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114') {
if ($priceVal['MPTitle'] == 'EP') {
$priceVal['MPTitle'] = 'RO';
}
if ($priceVal['MPTitle'] == 'CP') {
$priceVal['MPTitle'] = 'BB';
}
if ($priceVal['MPTitle'] == 'AP') {
$priceVal['MPTitle'] = 'FB';
}
if ($priceVal['MPTitle'] == 'MAP') {
$priceVal['MPTitle'] = 'HB';
}
}
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'])) {
$remainAdults = (int) $adults;
$remainChilds = (int) $child;
$remainInfent = (int) $infent;
$RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
// echo "<pre>";print_r($RoomInfoForRoom);die;
$roomJsonInfoNew = array();
for ($imr = 1; $imr <= $adults; $imr++) {
$FillAdult = $FillAdultExtra = $FillChild = $FillInfent = 0;
if (($remainAdults + $remainChilds + $remainInfent) > 0) {
// echo $remainAdults.'-';
if ($remainAdults > 0) {
if ($remainAdults < $RoomInfoForRoom['MAdult']) {
if ($remainAdults < $RoomInfoForRoom['Adult']) {
$FillAdult = $remainAdults;
} else {
$FillAdult = $RoomInfoForRoom['Adult'];
$FillAdultExtra = $remainAdults - $RoomInfoForRoom['Adult'];
}
} else {
$FillAdult = $RoomInfoForRoom['Adult'];
if (($FillAdult) != ($remainAdults - $FillAdult)) {
$FillAdultExtra = $RoomInfoForRoom['MAdult'] - $RoomInfoForRoom['Adult'];
}
}
}
if ($remainChilds > 0) {
if ($remainChilds < $RoomInfoForRoom['MChild']) {
$FillChild = $remainChilds;
} else {
$FillChild = $RoomInfoForRoom['MChild'];
}
}
if ($remainInfent > 0) {
if ($remainInfent > 3) {
$FillInfent = 3;
} else {
$FillInfent = $remainInfent;
}
}
if (($FillAdult + $FillAdultExtra + $FillChild) > $RoomInfoForRoom['TGuest']) {
$Extrapax = ($FillAdult + $FillAdultExtra + $FillChild) - $RoomInfoForRoom['TGuest'];
// echo $Extrapax.'-';
if (($FillChild + $FillAdultExtra) >= $Extrapax) {
if ($FillAdultExtra > 0) {
$Extrapax = $Extrapax - $FillAdultExtra;
$FillAdultExtra = 0;
}
if ($FillChild >= $Extrapax) {
$FillChild = $FillChild - $Extrapax;
}
} else if ($FillChild >= $Extrapax) {
$FillChild = $FillChild - $Extrapax;
// }else if($FillAdult>=$Extrapax){
// $FillAdult = $FillAdult - $Extrapax;
} else if ($FillAdultExtra >= $Extrapax) {
$FillAdultExtra = $FillAdultExtra - $Extrapax;
}
} else {
}
if ($FillAdult > 0) {
$roomJsonInfoNew[$imr]['Adult'] = $FillAdult;
}
if ($FillAdultExtra > 0) {
$roomJsonInfoNew[$imr]['AdultExtra'] = $FillAdultExtra;
}
if ($FillChild > 0) {
$roomJsonInfoNew[$imr]['Child'] = $FillChild;
}
if ($FillInfent > 0) {
$roomJsonInfoNew[$imr]['Infent'] = $FillInfent;
}
$remainAdults = $remainAdults - $FillAdult - $FillAdultExtra;
$remainChilds = $remainChilds - $FillChild;
$remainInfent = $remainInfent - $FillInfent;
}
}
// echo "<pre>";print_r($roomJsonInfoNew);die;
$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']]['RoomInfo'] = $RoomInfoForRoom;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
$getPriceF = $getMarkupF = 0;
foreach ($roomJsonInfoNew as $paxKey => $paxVal) {
$adultsR = (int)$paxVal['Adult'];
$AdultExtraR = (int)$paxVal['AdultExtra'];
$childR = (int)$paxVal['Child'];
$infentR = (int)$paxVal['Infent'];
$totalAdultR = (int) $adultsR + (int) $childR + (int) $infentR;
$ChildWithBedR = 0;
$ChildWithOutBedR = (int) $childR;
$getPrice = $getMarkup = $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
if ((float) $priceVal['B2BMarkup'] > 0) {
if ($priceVal['MarkType'] == 1) {
if ($priceVal['IsAllowMarkupSOC'] == 1) {
$MarkupNSOC = (float) ((float) $priceVal['NSOC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupDOC'] == 1) {
$MarkupNDOC = (float) ((float) $priceVal['NDOC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEBC'] == 1) {
$MarkupNEBC = (float) ((float) $priceVal['NEBC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEWBC'] == 1) {
$MarkupNEWBC = (float) ((float) $priceVal['NEWBC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEWOBC'] == 1) {
$MarkupNEWOBC = (float) ((float) $priceVal['NEWOBC'] * ($priceVal['B2BMarkup']) / 100);
}
} else {
$MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
}
}
if ($adultsR > 0) {
if ($adultsR == 1) {
$getPrice += (float) $priceVal['NSOC'];
$getMarkup += (float) $MarkupNSOC;
} else {
$getPrice += (float) $priceVal['NDOC'];
$getMarkup += (float) $MarkupNDOC;
}
}
if ($AdultExtraR > 0) {
$getPrice += (float) ($priceVal['NEBC']) * $AdultExtraR;
$getMarkup += (float) $MarkupNEBC * $AdultExtraR;
}
if ($childR > 0) {
if ($ChildWithBedR > 0) {
$getPrice += (float) ($priceVal['NEWBC']) * $ChildWithBedR;
$getMarkup += (float) $MarkupNEWBC * $ChildWithBedR;
}
if ($ChildWithOutBedR > 0) {
$getPrice += (float) ($priceVal['NEWOBC']) * $ChildWithOutBedR;
$getMarkup += (float) $MarkupNEWOBC * $ChildWithOutBedR;
}
}
$getPriceF = $getPriceF + $getPrice;
$getMarkupF = $getMarkupF + $getMarkup;
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF * $exchangerate;
$getMarkupF = $getMarkupF * $exchangerate;
//echo "<pre>";print_r($getPriceF);die;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Markup'][] = $getMarkupF;
// $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'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomInfo'] = $checkRNd['RoomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
$mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$mmarkupValue = array_sum($checkRNd['Markup']) / count($checkRNd['Markup']);
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Price'] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'] = $mmarkupValue;
if ($Price == 0 || $Price > $mPrice) {
$Price = $mPrice;
$Markup = $mmarkupValue;
$finalArray['category']['defaultRoomType'] = $SUBkey;
$finalArray['category']['defaultMealPlanType'] = $keyItem;
$finalArray['category']['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
}
}
$i++;
}
}
}
// echo "<pre>";print_r($finalArray);die;
if (!empty($finalArray) && $Price > 0) {
$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'],
'Area' => $longJson['Area'],
'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;
}
public function getHotelInv($destinationId, $table, $checkInDate, $checkOutDate, $checkInDate2, $checkOutDate2, $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, MinPrice ASC';
} else {
$order = 'StarRating DESC, MinPrice ASC';
}
} else if ($filterType == 1) {
if ($nameFilterValue == 1) {
$order = 'packageNameUrl ASC';
} else {
$order = 'packageNameUrl DESC';
}
}
$limit = '';
if($this->MasterAgencySysId == 103509){
// $limit = 'limit 40';
}
$response = array();
// } if($this->_session->data['AgencySysId'] == 105050){
// die('here');
//
$sql = "select PkgSysId,GTXPkgId,DestinationsId,Destinations,IsFeatured,ItemType,PackageType,PackageSubType,LongJsonInfo FROM $table A WHERE DestinationsId = $destinationId AND ((ItemType = 2) OR (ItemType = 1 AND PackageSubType = 2)) AND IsActive = '1' and IsMarkForDel = '0' order by $order $limit ";
$res = $this->db->query($sql)->fetchAll();
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$Adult = (int) $adults;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$roomJsonInfoNew = array();
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = $totalNight1 = (int) $interval->format('%a');
$datetime12 = new DateTime($checkInDate2);
$datetime22 = new DateTime($checkOutDate2);
$interval2 = $datetime12->diff($datetime22);
$totalNight2 = (int) $interval2->format('%a');
if($totalNight2 > 0){
$totalNight = $totalNight + $totalNight2;
}
if (count($res) > 0) {
foreach ($res as $keyr => $row) {
// if($row['GTXPkgId'] != 547773){
// continue;
// }
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = $RoomInfoArray = array();
$RoomInfo = $longJson['RoomInfo'];
foreach ($RoomInfo as $riKey => $riVal) {
$RoomInfoArray[$riVal['RoomType']] = $riVal;
}
// if($keyr == 14){
// echo"<pre>";print_r($longJson);die;
// }
$checkDuplicateDate = array();
$ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
$TransferData = $OtherChargesData = array();
foreach ($ExtraServices as $key => $value) {
if ($value['ServiceType'] == 1) {
$TransferData[] = $value;
} else {
$OtherChargesData[] = $value;
}
}
$MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
if ($totalNight1 < $MinStayNights) {
$longJson['PriceAdditional'] = array();
}
if ($totalNight2 > 0 && $totalNight2 < $MinStayNights) {
$longJson['PriceAdditional'] = array();
}
if ($row['ItemType'] == 2) {
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'])) {
$RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
$roomMinAdult = (int)$RoomInfoForRoom['Adult'];
$roomMaxAdult = (int)$RoomInfoForRoom['MAdult'];
$roomMinChild = (int)$RoomInfoForRoom['Child'];
$roomMaxChild = (int)$RoomInfoForRoom['MChild'];
$roomMaxGuest = (int)$RoomInfoForRoom['TGuest'];
$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']]['RoomInfo'] = $RoomInfoForRoom;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
$getPriceF = 0;
$checkR = 0;
$totalAdultss = $totalChildss = 0;
if($longJson['PropertyType'] == 11){
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = (int)$paxVal['Adult'];
$child = (int)$paxVal['Child'];
$totalAdultss = $totalAdultss + $adults;
$totalChildss = $totalChildss + $child;
}
if (((int) $totalAdultss + (int) $totalChildss) > $roomMaxGuest) {
$checkR = 1;
}
$getPrice = (float) $priceVal['NDOC'];
$getPriceF = $getPriceF + $getPrice;
}else{
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = (int)$paxVal['Adult'];
$child = (int)$paxVal['Child'];
$infent = (int)$paxVal['Infent'];
$totalAdultss = $totalAdultss + $adults;
$totalChildss = $totalChildss + $child;
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if ($totalRoomPax == 1) {
$adultPrice = (float) $priceVal['NSOC'];
} else if ($totalRoomPax > 1) {
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if ($adultsExtra < 0) {
$adultsExtra = 0;
}
$childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
if ($adultsExtra > 0) {
$adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
}
if ($childExtra > 0) {
$ChildWithBed = $ChildWithOutBed = 0;
for ($che = 0; $che < $childExtra; $che++) {
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
} else {
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
$getPriceF = $getPriceF + $getPrice;
}
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF * $exchangerate;
//echo "<pre>";print_r($getPriceF);die;
if ($getPriceF > 0) {
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $totalAdultss;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $totalChildss;
// $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
}
}
if(!empty($checkInDate2) && !empty($checkOutDate2)){
if ($priceVal['CreateDate'] >= $checkInDate2 && $priceVal['CreateDate'] < $checkOutDate2) {
if (!isset($checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
$RoomInfoForRoom = $RoomInfoArray[$priceVal['EType']];
//echo "<pre>";print_r($RoomInfoForRoom);die;
$roomMinAdult = $RoomInfoForRoom['Adult'];
$roomMaxAdult = $RoomInfoForRoom['MAdult'];
$roomMinChild = $RoomInfoForRoom['Child'];
$roomMaxChild = $RoomInfoForRoom['MChild'];
$roomMaxGuest = $RoomInfoForRoom['TGuest'];
$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']]['RoomInfo'] = $RoomInfoForRoom;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['priceVal'][] = $priceVal;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['roomJsonInfoNew'] = $roomJsonInfoNew;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['AminitiesMask'] = $RoomInfoArray[$priceVal['EType']]['AminitiesMask'];
$getPriceF = 0;
$checkR = 0;
$totalAdultss = $totalChildss = 0;
foreach ($roomJsonInfo as $paxKey => $paxVal) {
$adults = (int)$paxVal['Adult'];
$child = (int)$paxVal['Child'];
$infent = (int)$paxVal['Infent'];
$totalAdultss = $totalAdultss + $adults;
$totalChildss = $totalChildss + $child;
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if ($totalRoomPax == 1) {
$adultPrice = (float) $priceVal['NSOC'];
} else if ($totalRoomPax > 1) {
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if ($adultsExtra < 0) {
$adultsExtra = 0;
}
$childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
if ($adultsExtra > 0) {
$adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
}
if ($childExtra > 0) {
$ChildWithBed = $ChildWithOutBed = 0;
for ($che = 0; $che < $childExtra; $che++) {
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
} else {
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
$getPriceF = $getPriceF + $getPrice;
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF * $exchangerate;
//echo "<pre>";print_r($getPriceF);die;
if ($getPriceF > 0) {
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $totalAdultss;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $totalChildss;
// $checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = Catabatic_Helper::calculateMarkup($getPriceF,$markupDetailsArray);
}
}
}
}
$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) {
$checkR = array_sum($checkRNd['checkR']);
$countval[$i] = count($checkRNd["CreateDate"]);
$countvalP[$i] = count($checkRNd["Price"]);
if ($countval[$i] == $totalNight && $countvalP[$i] == $totalNight && $checkR == 0) {
$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'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomInfo'] = $checkRNd['RoomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
$mPrice = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$mmarkupValue = 0;
if ((float) $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;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'] = array_sum($checkRNd['adults']) / count($checkRNd['adults']);
$finalArray['category']['SUB'][$SUBkey][$keyItem]['child'] = array_sum($checkRNd['child']) / count($checkRNd['child']);
if ($Price == 0 || $Price > $mPrice) {
$Price = array_sum($checkRNd['Price']) / count($checkRNd['Price']);
$markupValue = 0;
if ((float) $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;
$finalArray['category']['roomJsonInfoNew'] = $checkRNd['roomJsonInfoNew'];
}
}
$i++;
}
}
}
} else if (($row['ItemType'] == 1) && ($row['PackageSubType'] == 2)) {
$currencyTypeArray = $objHelperGeneral->getCurrencyData();
$temp['tourType'] = $longJson['package']['TourTypes']['MarketType']; // get package validity
$PackageSubType = isset($row['PackageSubType']) ? $row['PackageSubType'] : '';
$PackageType = isset($row['PackageType']) ? $row['PackageType'] : '';
$priceJsonViewFile = $objHelperGeneral->getCategoryAndPriceArrayJSON($temp['tourType'], 'B2B', $PackageType, $PackageSubType);
$MPTypeArray = $priceJsonViewFile['priceArrJson'];
$market = 'B2B';
$categoryDetails = $objHelperGeneral->getCategoryAndPriceArray($temp['tourType'], $market, $PackageType, $PackageSubType);
if (!empty($categoryDetails) && $temp['package']['IsFixedDeparturePackage'] == 1) {
$MPTypeArray = $categoryDetails['priceArrJson'];
}
$priceArrJson = $categoryDetails['priceArrJson'];
$defaultCategoryId = $categoryDetails['defaultCategoryId'];
$defaultCategory = isset($categoryDetails['defaultCategory']) ? $categoryDetails['defaultCategory'] : '';
$defaultTourType = isset($categoryDetails['defaultTourType']) ? $categoryDetails['defaultTourType'] : 0;
$MPType = (!empty($categoryDetails['MPType']) && ($categoryDetails['MPType'] != 'LowestCost') ) ? array_search($categoryDetails['MPType'], unserialize(CONST_MEAL_PLAN_ARR)) : 0;
$tourTypeChar = ($defaultTourType == 1) ? 'P' : 'G'; // if private than P else G for Group tour type
$displayFinalPrice = $objHelperGeneral->getPackagePriceV2($defaultCategory, $tourTypeChar, $priceArrJson, true); // Param 4: true ( if calculate discounted price )
$displayFinalPriceDisc = $objHelperGeneral->getPackagePriceV2($defaultCategory, $tourTypeChar, $priceArrJson); // get with discount included
$CurrencySysId = $priceArrJson[$tourTypeChar][$defaultCategory]['price'][0]['Currency'];
$getCurrencyType = $currencyTypeArray[$priceArrJson[$tourTypeChar][$defaultCategory]['price'][0]['Currency']];
// echo"<pre>";print_r($categoryDetails);die;
$getMonthsArray = $fixedInventoryPriceDateWise = array();
$AdultCost = $DefaultAdultCost = $IsfixedInventory = 0;
$fixedInventory = $temp['package']['fixedInventory'];
$getDefaultTaxSetting = Catabatic_Helper::getDefaultTaxSetting(5);
$TaxPercentage = $getDefaultTaxSetting['TaxPercentage'];
$TaxType = $getDefaultTaxSetting['TaxType'];
$fixedInventoryNew = array();
if (!empty($temp['package']['fixedInventory'])) {
$inc = 0;
foreach ($temp['package']['fixedInventory'] as $key => $value) {
$AdultCost = 0;
$fixedInventoryNew[$inc]['CityId'] = $key;
$fixedInventoryNew[$inc]['CityName'] = $value['CityName'];
$fixedInventoryNew[$inc]['FlightInv'] = $value['FlightInv'];
foreach ($value['FlightInv'] as $invKey => $invValue) {
foreach ($invValue as $invKey1 => $invValue1) {
if (trim($invValue1['AirlineName']) != '' && trim($invValue1['DepartureAirportCode']) != '') {
$IsfixedInventory = 1;
}
}
}
$countDate = 0;
foreach ($value['FromDate'] as $key1 => $value1) {
if (strtotime($value1['FromDate']) >= strtotime(date('Y-m-d'))) {
$fixedInventoryNew[$inc]['FromDate'][] = $value1['FromDateDMY'];
$exchangerate = $objHelperGeneral->currencyExchangeRate((int)$value1['CurrencySysId'], (int)$CurrencySysId, 0);
// echo "<pre>";print_r($exchangerate);die;
$AdultCost = 0;
if (!empty($value1)) {
$B2BAdultMarkup = (float)$value1['B2BAdultMarkup'] * $exchangerate;
$AdultCost = (float)$value1['AdultCost'] * $exchangerate;
$GSTAmountF = 0;
if ($TaxType == 1) {
$GSTAmountF = ((int)($AdultCost + $B2BAdultMarkup) * ((int)$TaxPercentage / 100));
} else if ($TaxType == 2) {
$GSTAmountF = ((int)$B2BAdultMarkup * ((int)$TaxPercentage / 100));
}
$AdultCost = (int)($B2BAdultMarkup + $AdultCost + $GSTAmountF);
//if ($inc == 0) {
$fixedInventoryPriceDateWise[$value1['FromDate']][$key] = $AdultCost;
//}
if ($inc == 0 && $countDate == 0) {
$DefaultAdultCost = $AdultCost;
}
if ($countDate == 0) {
$fixedInventoryNew[$inc]['TotalPrice'] = (float)($AdultCost);
}
$countDate++;
}
}
}
$inc++;
}
}
$checkCategoryDateArrayDate = $CategoryDateNameArray = $CategoryDateArray = array();
foreach ($MPTypeArray['P'] as $key => $value) {
if (count($MPTypeArray['P']) > 1) {
$keyname = '';
if ($key == 'Budget') {
$i = 1;
$keyname = 'Budget';
}
if ($key == 'Standard') {
$i = 2;
$keyname = 'Standard';
}
if ($key == 'Deluxe') {
$i = 3;
$keyname = 'Deluxe';
}
if ($key == 'Luxury') {
$i = 4;
$keyname = 'Luxury';
}
if ($key == 'Premium') {
$i = 5;
$keyname = 'Premium';
}
//if ($defaultCategoryId == $i) {
// $CategoryDateArray = array();
$checkCategoryDateArray = array();
foreach ($MPTypeArray['P'][$key]['price'] as $pkey => $pvalue) {
if (!in_array(trim($pvalue['From']), $checkCategoryDateArray)) {
array_push($checkCategoryDateArray, trim($pvalue['From']));
$FromD = explode('-', $pvalue['From']);
$currentdateStr = strtotime(date('Y-m-d'));
$FromDateStr = strtotime($pvalue['From']);
if ($currentdateStr <= $FromDateStr) {
if (!in_array(trim($pvalue['From']), $checkCategoryDateArrayDate)) {
array_push($checkCategoryDateArrayDate, trim($pvalue['From']));
$CategoryDateArray[] = [
'FromDateVal' => $pvalue['From'],
'FromDate' => $FromD[2] . '/' . $FromD[1] . '/' . $FromD[0],
];
}
$PackageFlightCost = $fixedInventoryPriceDateWise[$pvalue['From']];
$PricePerPerson = $MPTypeArray['P'][$key]['price'][0]['PricePerPerson'];
$CategoryDateNameArray[$key][] = array('cost' => $PackageFlightCost, 'PricePerPerson' => $PricePerPerson, 'date' => date('d M', strtotime($pvalue['From'])));
$getMonthsArray = array_merge($getMonthsArray, $this->getMonths($pvalue['From'], $pvalue['To']));
}
}
}
//}
} else {
// $CategoryDateArray = array();
$checkCategoryDateArray = array();
foreach ($MPTypeArray['P'][$key]['price'] as $pkey => $pvalue) {
if (!in_array(trim($pvalue['From']), $checkCategoryDateArray)) {
array_push($checkCategoryDateArray, trim($pvalue['From']));
$FromD = explode('-', $pvalue['From']);
$currentdateStr = strtotime(date('Y-m-d'));
$FromDateStr = strtotime($pvalue['From']);
// echo"<pre>";print_r($checkCategoryDateArrayDate);die;
if ($currentdateStr <= $FromDateStr) {
if (!in_array(trim($pvalue['From']), $checkCategoryDateArrayDate)) {
array_push($checkCategoryDateArrayDate, trim($pvalue['From']));
$CategoryDateArray[] = [
'FromDateVal' => $pvalue['From'],
'FromDate' => $FromD[2] . '/' . $FromD[1] . '/' . $FromD[0],
];
}
$PackageFlightCost = $fixedInventoryPriceDateWise[$pvalue['From']];
$PricePerPerson = $MPTypeArray['P'][$key]['price'][0]['PricePerPerson'];
$CategoryDateNameArray[$key][] = array('cost' => $PackageFlightCost, 'PricePerPerson' => $PricePerPerson, 'date' => date('d M Y', strtotime($pvalue['From'])));
$getMonthsArray = array_merge($getMonthsArray, $objHelperGeneral->getMonths($pvalue['From'], $pvalue['To']));
}
}
}
}
}
}
// if($keyr == 14){
// // 'Price' => (int)($displayFinalPrice + $DefaultAdultCost),
// echo"<pre>";print_r($row);die;
// }
if (!empty($finalArray) && ($row['ItemType'] == 2)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'Title' => $longJson['Title'],
'ItemType' => $row['ItemType'],
'Area' => $longJson['Area'],
'PropertyName' => $longJson['PropertyName'],
'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,
'TransferData' => $TransferData,
'OtherChargesData' => $OtherChargesData,
);
} else if (empty($finalArray) && ($row['ItemType'] == 1) && ($row['PackageSubType'] == 2)) {
$response[] = array(
'destIndex' => $destIndex,
'refId' => $refId,
'mp' => $MPType,
'defaultTourType' => $defaultTourType,
'defaultCategoryId' => $defaultCategoryId,
'ItemType' => $row['ItemType'],
'GTXPkgId' => $row['GTXPkgId'],
'PkgSysId' => $row['PkgSysId'],
'DestinationId' => $row['DestinationsId'],
'Destinations' => $row['Destinations'],
'Title' => $longJson['package']['Name'],
'Area' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
'Details' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Brief'],
'adults' => $adults,
'child' => $child,
'infent' => $infent,
'Stars' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Star'],
'ThumnailImg' => $longJson['package']['ImgThumbnail'],
'DetailImg' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['MainImg'],
'Address' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
'latitude' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Lat'],
'longitude' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Long'],
'CitySysId' => $longJson['package']['Cities']['City']['0']['CityId'],
'Location' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['Location']['Address'],
'AccoAminitiesMask' => $longJson['package']['Cities']['City']['0']['Hotels']['Hotel']['0']['AccoAminitiesMask'],
'IsFeatured' => $row['IsFeatured'],
'Price' => (int)($displayFinalPrice + $DefaultAdultCost),
// 'checkPlan' => base64_encode(json_encode($finalArray)),
// 'PropertyType' => $longJson['PropertyType'],
// 'CheckinTime' => $longJson['CheckinTime'],
// 'ContSysId' => $longJson['ContSysId'],
// 'PinCode' => $longJson['PinCode'],
// 'PropertyName' => $longJson['PropertyName'],
'totalNight' => $totalNight,
// 'checkInDate' => $checkInDate,
// 'checkOutDate' => $checkOutDate,
// 'Markup' => (int) $Markup,
// 'defaultRoomType' => (int) $defaultRoomType,
// 'defaultMealPlanType' => (int) $defaultMealPlanType,
'TransferData' => $TransferData,
'OtherChargesData' => $OtherChargesData,
);
}
}
}
// echo"<pre>";print_r($response);die('ss');
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, $CurrencyTitle = '', $CostPP = 0)
{
$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', array('destName', 'NoDay', 'Seq', 'CitySysId', 'StartDate', 'EndDate'));
$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 = $Adult = (int) trim($val['Adult']);
$AdultExtraBed = (int) trim($val['AdultExtraBed']);
$ChildWithBed = (int) trim($val['ChildWithBed']);
$ChildWithOutBed = (int) trim($val['ChildWithOutBed']);
$child = $ChildWithBed + $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;
$getPrice = $getMarkup = $MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
if ((float) $priceVal['B2BMarkup'] > 0) {
if ($priceVal['MarkType'] == 1) {
if ($priceVal['IsAllowMarkupSOC'] == 1) {
$MarkupNSOC = (float) ((float) $priceVal['NSOC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupDOC'] == 1) {
$MarkupNDOC = (float) ((float) $priceVal['NDOC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEBC'] == 1) {
$MarkupNEBC = (float) ((float) $priceVal['NEBC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEWBC'] == 1) {
$MarkupNEWBC = (float) ((float) $priceVal['NEWBC'] * ($priceVal['B2BMarkup']) / 100);
}
if ($priceVal['IsAllowMarkupEWOBC'] == 1) {
$MarkupNEWOBC = (float) ((float) $priceVal['NEWOBC'] * ($priceVal['B2BMarkup']) / 100);
}
} else {
$MarkupNSOC = $MarkupNDOC = $MarkupNEBC = $MarkupNEWBC = $MarkupNEWOBC = 0;
}
}
if ($adult > 0) {
if ($adult == 1) {
$getPrice += (float) $priceVal['NSOC'];
$getMarkup += $MarkupNSOC;
} else {
$getPrice += (float) $priceVal['NDOC'];
$getMarkup += $MarkupNDOC;
}
}
if ($AdultExtraBed > 0) {
$getPrice += (float) $priceVal['NEBC'] * $AdultExtraBed;
$getMarkup += $MarkupNEBC * $AdultExtraBed;
}
if ($child > 0) {
if ($ChildWithBed > 0) {
$getPrice += (float) $priceVal['NEWBC'] * $ChildWithBed;
$getMarkup += $MarkupNEWBC * $ChildWithBed;
}
if ($ChildWithOutBed > 0) {
$getPrice += (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
$getMarkup += $MarkupNEWOBC * $ChildWithOutBed;
}
}
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPriceF + $getPrice * $exchangerate;
$getMarkupF = $getMarkupF + $getMarkup * $exchangerate;
$Currency = $priceVal['Currency'];
$NDOC = $priceVal['NDOC'] * $exchangerate;
$NSOC = $priceVal['NSOC'] * $exchangerate;
$NEBC = $priceVal['NEBC'] * $exchangerate;
$NEWOBC = $priceVal['NEWOBC'] * $exchangerate;
$NEWBC = $priceVal['NEWBC'] * $exchangerate;
$MarkupNSOCC = $MarkupNSOC * $exchangerate;
$MarkupNDOCC = $MarkupNDOC * $exchangerate;
$MarkupNEBCC = $MarkupNEBC * $exchangerate;
$MarkupNEWBCC = $MarkupNEWBC * $exchangerate;
$MarkupNEWOBCC = $MarkupNEWOBC * $exchangerate;
$SSID = $priceVal['SSID'];
}
}
}
$dataArr = array(
'Price' => $getPriceF + $getMarkupF,
);
$totalPrice = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
$PriceBreakup = array(
'Currency' => (int) $Currency,
'NDOC' => (float) $NDOC,
'NSOC' => (float) $NSOC,
'NEBC' => (float) $NEBC,
'NEWOBC' => (float) $NEWOBC,
'NEWBC' => (float) $NEWBC,
'MarkupNSOC' => (float) $MarkupNSOCC,
'MarkupNDOC' => (float) $MarkupNDOCC,
'MarkupNEBC' => (float) $MarkupNEBCC,
'MarkupNEWBC' => (float) $MarkupNEWBCC,
'MarkupNEWOBC' => (float) $MarkupNEWOBCC,
'Price' => $getPriceF,
'Markup' => $getMarkupF,
'SSID' => $SSID,
'ZoneSysId' => (int)$longJson['ZoneSysId'],
'Area' => trim($longJson['Area'])
);
$finalPriceReturn += $totalPrice;
if ($CostPP == 1) {
$selectionHotelByOption['Hotel'][$val['Id']]['Price'] = $PriceBreakup;
$selectionHotelByOption['Cost'][$val['destSeq']]['markup'][] = $getMarkupF;
$selectionHotelByOption['Cost'][$val['destSeq']]['price'][] = $getPriceF;
$selectionHotelByOption['Hotel'][$val['Id']]['Currency'] = $Currency;
}
}
// echo "<pre>";print_r($selectionHotelByOption);die;
$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","query_type"));
$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,
"BYOType" => ($getZsontoArray[0]['query_type']) ? (int)$getZsontoArray[0]['query_type'] : 1,
);
return $returnAr;
}
public function getTravelPlanHistory($TPSysId)
{
$select = $this->db->select()->from(array("t1" => "tb_traavelplan"), array("EndCityId", "EndCity", "StartCity", "TotalAdult", "TotalChild", "TotalInfant", "StartDate", "StartCityId", "query_type"));
$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, $IsType = 0)
{
$select = $this->db->select()->from(array("t1" => "tb_transport_route"));
if (isset($categoryTransport) && $categoryTransport == 10 && $StateSysId > 0) {
if($IsType == 1){
$select->where("t1.CountrySysId = ?", $StateSysId);
}else{
$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['NEWBC'];
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 getHotelDetailBypackIds($table, $packIds)
{
$sql = "select * FROM $table A WHERE GTXPkgId IN ($packIds) AND ItemType = 1 AND PackageSubType = '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['NEWBC'];
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 TransportSubType,TransportType FROM `tb_transport_route` where $where and IsMarkForDel = '0' ORDER BY `TransportSubType` DESC";
$res = $this->db->query($sql)->fetchAll();
$TransportSubTypeArr = $TransportTypeArr = array();
foreach ($res as $key => $val) {
$TransportSubType = ltrim($val['TransportSubType'], '2,');
$TransportSubTypeArr[] = $TransportSubType;
$TransportTypeArr[$val['TransportType']] = ($TransportTypeArr[$val['TransportType']]) ? $TransportTypeArr[$val['TransportType']] . ',' . $TransportSubType : $TransportSubType;
}
$TransportSubTypeArr = array_unique(explode(',', implode(',', $TransportSubTypeArr)));
return array('TransportSubTypeArr' => $TransportSubTypeArr, 'TransportTypeArr' => $TransportTypeArr);
}
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;
$AllAdult = (int) $adults;
$AllChild = (int) $child;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$rooms = count($roomJsonInfo);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
$currencyTypeArray = $objHelperGeneral->getCurrencyData();
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
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'];
$calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
$RoomInfo = $calculateRoomJsonPax['RoomInfo'];
$Promotions = $longJson['Promotions'];
$roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
$Currency = $longJson['PriceAdditional'][0]['Currency'];
$CurrencyType = $currencyTypeArray[$Currency];
$ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
$TransferData = $OtherChargesData = array();
foreach($ExtraServices as $key => $value){
if($value['ServiceType'] == 1){
$TransferData[] = $value;
}else{
$OtherChargesData[] = $value;
}
}
$MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
if($totalNight<$MinStayNights){
$longJson['PriceAdditional'] = array();
}
foreach ($longJson['PriceAdditional'] as $priceVal) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
if($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114'){
if($priceVal['MPTitle'] == 'EP'){
$priceVal['MPTitle'] = 'RO';
}
if($priceVal['MPTitle'] == 'CP'){
$priceVal['MPTitle'] = 'BB';
}
if($priceVal['MPTitle'] == 'AP'){
$priceVal['MPTitle'] = 'FB';
}
if($priceVal['MPTitle'] == 'MAP'){
$priceVal['MPTitle'] = 'HB';
}
}
$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'];
$roomJsonInfoArrfinalArr = array();
if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) {
$roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
} else {
$roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
}
$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'];
if($longJson['PropertyType'] == 11){
if (((int) $adults + (int) $child) > $roomMaxGuest) {
$checkR = 1;
}
$getPrice = (float) $priceVal['NDOC'];
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
if($getPriceF>0){
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
}else{
foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
foreach ($paxVal1 as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
$checkR = 0;
if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if($totalRoomPax == 1){
$adultPrice = (float) $priceVal['NSOC'];
}else if($totalRoomPax>1){
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if($adultsExtra<0){$adultsExtra = 0;}
$childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
if($adultsExtra>0){
$adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
}
if($childExtra>0){
$ChildWithBed = $ChildWithOutBed = 0;
for($che = 0; $che < $childExtra; $che++){
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
}else{
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
//echo " P:".$getPrice;die;
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
if($getPriceF>0){
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
}
}
}
}
}
}
$CurrenctDate = date('Y-m-d H:i:s');
$PromotionsArray = array();
if(!empty($Promotions)){
foreach($Promotions as $key => $value){
if(strtotime($value['FromBookingDate']) <= strtotime($CurrenctDate) && strtotime($value['ToBookingDate']) >= strtotime($CurrenctDate)){
if($value['IsStayPeriod'] == 1){
$FromStayPeriod = strtotime($value['FromStayPeriod']);
$ToStayPeriod = strtotime($value['ToStayPeriod']);
// echo $checkInDate.'-'.$checkOutDate2;
// echo "<pre>";print_r($value);die;
if(strtotime($checkInDate) >= $FromStayPeriod && strtotime($checkOutDate) <= $ToStayPeriod){
if(!empty($value['MealType'])){
$PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
}else{
$PromotionsArray[$value['RoomType']]['Room'][] = $value;
}
}
}else{
if(!empty($value['MealType'])){
$PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
}else{
$PromotionsArray[$value['RoomType']]['Room'][] = $value;
}
}
}
}
}
$MealPlanRate = $longJson['MealPlanRate'];
$categorySUB = array();
$RateType = isset($longJson['RateType']) ? (int)$longJson['RateType'] : 0;
$DefaultMeal = 9;
if($RateType == 2){
$DefaultMeal = 6;
}
if(!empty($MealPlanRate)){
//echo "<pre>";print_r($RateType);die;
foreach($checkPlan['category']['SUB'] as $sKey => $sVal){
$sVal = $sVal[$DefaultMeal];
if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
$sVal['Promotion'] = $rrValue;
$categorySUB[$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;
}
}else{
$categorySUB[$sKey][$DefaultMeal][0] = $sVal;
}
foreach($MealPlanRate as $mKey => $mVal){
$sValNew = $sVal;
$sValNew['Title'] = $mVal['meal_type_name'];
$sValNew['MPTypeId'] = $mVal['meal_type'];
$PriceMArray = array();
foreach($sVal['Price'] as $ppKey => $ppVal){
$AdultCost = $sVal['adults'][$ppKey] * $mVal['adult_cost'];
$ChildCost = $sVal['child'][$ppKey] * $mVal['child_cost'];
$MealPrice = $AdultCost + $ChildCost;
$PriceMArray[] = round((float)($MealPrice * $sVal['exchangerate']),2);
}
$sValNew['MealPrice'] = $PriceMArray;
if(isset($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']]) && !empty($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']])){
foreach($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']] as $rrKey => $rrValue){
$sValNew['Promotion'] = $rrValue;
$categorySUB[$sKey][$mVal['meal_type']][$rrValue['AccomPromotionsSysId']] = $sValNew;
}
}else{
if(!empty($sValNew['Promotion'])){
$categorySUB[$sKey][$mVal['meal_type']][$sValNew['Promotion']['AccomPromotionsSysId']] = $sValNew;
}else{
$categorySUB[$sKey][$mVal['meal_type']][0] = $sValNew;
}
}
}
}
$checkPlan['category']['SUB'] = $categorySUB;
}else {
foreach($checkPlan['category']['SUB'] as $sKey => $sVal){
foreach($sVal as $sKey1 => $sVal1){
if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
$sVal1['Promotion'] = $rrValue;
$categorySUB[$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1;
}
}else{
if(isset($PromotionsArray[$sKey]['Meal'][$sKey1]) && !empty($PromotionsArray[$sKey]['Meal'][$sKey1])){
foreach($PromotionsArray[$sKey]['Meal'][$sKey1] as $rrKey => $rrValue){
$sVal1['Promotion'] = $rrValue;
$categorySUB[$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1;
}
}else{
$categorySUB[$sKey][$sKey1][0] = $sVal1;
}
}
}
}
$checkPlan['category']['SUB'] = $categorySUB;
}
$countval = array();
$finalArray = array();
$Price = 0;
$Markup = 0;
// echo "<pre>";print_r($hotelRoomMealArray);die;
if (!empty($hotelRoomMealArray)) {
foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
$SUBkey = $rmvalue['RoomType'];
$keyItem = $rmvalue['MealPlan'];
$ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];
$AccomPromotionsSysId = $rmvalue['AccomPromotionsSysId'];
if($AccomPromotionsSysId > 0){
$checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem][$AccomPromotionsSysId])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem][$AccomPromotionsSysId] : array();
}else{
$checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem][0])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem][0] : $checkPlan['category']['SUB'][$SUBkey][$keyItem];
}
// if($this->_session->data['EmailId'] == 'prince@hellogtx.com'){
// echo "<pre>";print_r($rmvalue);
// echo "<pre>";print_r($checkPlan['category']['SUB']);
// echo "<pre>";print_r($checkRNd);die;
// }
// if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
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'];
$date = $checkInDate.'~~'.$checkOutDate;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CheckIn'] = $checkInDate;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['CheckOut'] = $checkOutDate;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['RoomNo'] = $rmkey + 1;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['StayNo'] = 1;
$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'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['BookingType'] = $checkRNd['BookingType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Promotion'] = $checkRNd['Promotion'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ExtraServiceSysId'] = $ExtraServiceSysId;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults'])/count($checkRNd['Price']))*$totalNight ;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child'])/count($checkRNd['Price']))*$totalNight ;
$mPrice = (array_sum($checkRNd['Price'])/count($checkRNd['Price'])) * $totalNight;
$mMealPrice = (isset($checkRNd['MealPrice']) && !empty($checkRNd['MealPrice'])) ? (array_sum($checkRNd['MealPrice'])/count($checkRNd['MealPrice'])) * $totalNight : 0;
$mmarkupValue = 0;
if ((float) $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]['MealPrice'][] = $mMealPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['Markup'][] = $mmarkupValue;
$Price = $Price + $mPrice;
$Markup = $Markup + $mmarkupValue;
}
}
} else {
// if($this->_session->data['EmailId'] == 'prince@hellogtx.com'){
// echo "<pre>";print_r($checkPlan);die;
// }
foreach ($checkPlan['category'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNdArr) {
if(isset($checkRNdArr['Title'])){
$checkRNdArr[0] = $checkRNdArr;
}
foreach ($checkRNdArr as $keyItemKey => $checkRNd) {
$countval[$i] = count($checkRNd["CreateDate"]);
$checkR = array_sum($checkRNd['checkR']);
$mPrice = 0;
//if(count($checkRNd['Price']) == $totalNight){
$mPrice = array_sum($checkRNd['Price']) / $totalNight;
$mMealPrice = (isset($checkRNd['MealPrice']) && !empty($checkRNd['MealPrice'])) ? array_sum($checkRNd['MealPrice']) / $totalNight : 0;
//}
if(($mPrice+$mMealPrice)>0 && $checkR == 0){
if ($countval[$i] == $totalNight) {
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['CreateDate'][] = $checkRNd['CreateDate'];
}
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MarkType'] = $checkRNd['MarkType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['BookingType'] = $checkRNd['BookingType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Promotion'] = $checkRNd['Promotion'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['adults'][] = (array_sum($checkRNd['adults'])/$totalNight);
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['child'][] = (array_sum($checkRNd['child'])/$totalNight);
$mmarkupValue = 0;
if ((float) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Price'][] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['MealPrice'][] = $mMealPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$keyItemKey]['Markup'][] = $mmarkupValue;
if ($Price == 0 || $Price > ($mPrice + $mMealPrice)) {
$Price = array_sum($checkRNd['Price']) / $totalNight;
$markupValue = 0;
if ((float) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
} else {
$markupValue = $checkRNd['B2BMarkup'];
}
}
$Price = $Price + $markupValue;
$Markup = $Markup + $markupValue;
}
}
$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'],
'CountryIds' => $row['CountryIds'],
'Countries' => $row['Countries'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'BookingTerms' => $longJson['BookingTerms'],
'adults' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'Markup' => $Markup,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
'RoomInfo' => $RoomInfo,
'TransferData' => $TransferData,
'OtherChargesData' => $OtherChargesData,
'VillaRoomInfo' => $longJson['VillaRoomInfo'],
'VillaRoomImages' => $longJson['VillaRoomImages'],
);
} 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'],
'BookingTerms' => $longJson['BookingTerms'],
'adults' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
);
}
}
}
return $response;
}
public function getHotelByPackageIdNewSplit($PkgSysId, $table, $checkInDate, $checkOutDate,$checkInDate2, $checkOutDate2, $adults, $child, $infent, $refId, $destIndex, $roomJsonInfo, $filterType = NULL, $hotelRoomMealArray = array()) {
$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;
$AllAdult = (int) $adults;
$AllChild = (int) $child;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$rooms = count($roomJsonInfo);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
$currencyTypeArray = $objHelperGeneral->getCurrencyData();
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = $totalNight1 = (int) $interval->format('%a');
if($checkInDate2 != '' && $checkOutDate2 != ''){
$datetime12 = new DateTime($checkInDate2);
$datetime22 = new DateTime($checkOutDate2);
$interval2 = $datetime12->diff($datetime22);
$totalNight2 = (int) $interval2->format('%a');
if($totalNight2 > 0){
$totalNight = $totalNight + $totalNight2;
}
}
if (count($res) > 0) {
foreach ($res as $row) {
$longJsonDecode = $row['LongJsonInfo'];
$longJson = json_decode($longJsonDecode, TRUE);
$checkPlan = array();
$roomJsonInfoArr = $roomJsonInfoArrfinal = array();
$RoomImages = $longJson['RoomImages'];
$calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages);
$RoomInfo = $calculateRoomJsonPax['RoomInfo'];
$Promotions = $longJson['Promotions'];
$roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
$Currency = $longJson['PriceAdditional'][0]['Currency'];
$CurrencyType = $currencyTypeArray[$Currency];
$ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
$TransferData = $OtherChargesData = array();
foreach($ExtraServices as $key => $value){
if($value['ServiceType'] == 1){
$TransferData[] = $value;
}else{
$OtherChargesData[] = $value;
}
}
$MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
if($totalNight1<$MinStayNights){
$longJson['PriceAdditional'] = array();
}
if ($totalNight2 > 0 && $totalNight2 < $MinStayNights) {
$longJson['PriceAdditional'] = array();
}
foreach ($longJson['PriceAdditional'] as $priceVal) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
if($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114'){
if($priceVal['MPTitle'] == 'EP'){
$priceVal['MPTitle'] = 'RO';
}
if($priceVal['MPTitle'] == 'CP'){
$priceVal['MPTitle'] = 'BB';
}
if($priceVal['MPTitle'] == 'AP'){
$priceVal['MPTitle'] = 'FB';
}
if($priceVal['MPTitle'] == 'MAP'){
$priceVal['MPTitle'] = 'HB';
}
}
$fromToDate = $checkInDate.'~~'.$checkOutDate;
if ($priceVal['CreateDate'] >= $checkInDate && $priceVal['CreateDate'] < $checkOutDate) {
if (!isset($checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
$getPriceF = 0;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
$roomJsonInfoArrfinalArr = array();
// if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) { // commented because we can not change pax now
// $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
// } else {
$roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
// }
$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'];
foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
foreach ($paxVal1 as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
$checkR = 0;
if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if($totalRoomPax == 1){
$adultPrice = (float) $priceVal['NSOC'];
}else if($totalRoomPax>1){
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if($adultsExtra<0){$adultsExtra = 0;}
$childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
if($adultsExtra>0){
$adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
}
if($childExtra>0){
$ChildWithBed = $ChildWithOutBed = 0;
for($che = 0; $che < $childExtra; $che++){
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
}else{
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
//echo " P:".$getPrice;die;
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
if($getPriceF>0){
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Price'][$paxKey1][] = $getPriceF;
}
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['checkR'][$paxKey1][] = $checkR;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['adults'][$paxKey1][] = $adults;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['child'][$paxKey1][] = $child;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
}
}
}
}
$fromToDate = $checkInDate2.'~~'.$checkOutDate2;
if ($priceVal['CreateDate'] >= $checkInDate2 && $priceVal['CreateDate'] < $checkOutDate2) {
if (!isset($checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate']) || !in_array($priceVal['CreateDate'], $checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'])) {
$getPriceF = 0;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Title'] = $priceVal['MPTitle'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['ETitle'] = $priceVal['Title'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['EType'] = $priceVal['EType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MPTypeId'] = $priceVal['MPType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['roomInfo'] = $RoomInfo[$priceVal['EType']];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['CreateDate'][] = $priceVal['CreateDate'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['B2BMarkup'] = $priceVal['B2BMarkup'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['MarkType'] = $priceVal['MarkType'];
$roomJsonInfoArrfinalArr = array();
// if (!empty($hotelRoomMealArray) && isset($roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']])) {
// $roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
// } else {
$roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
// }
$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'];
foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
foreach ($paxVal1 as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
$checkR = 0;
if($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild ){
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if($totalRoomPax == 1){
$adultPrice = (float) $priceVal['NSOC'];
}else if($totalRoomPax>1){
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if($adultsExtra<0){$adultsExtra = 0;}
$childExtra = (int)($totalRoomPax - $roomMinAdult-$adultsExtra);
if($adultsExtra>0){
$adultPriceExtra = (float) $priceVal['NEBC']*$adultsExtra;
}
if($childExtra>0){
$ChildWithBed = $ChildWithOutBed = 0;
for($che = 0; $che < $childExtra; $che++){
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
}else{
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC']*$ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC']*$ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
//echo " P:".$getPrice;die;
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
if($getPriceF>0){
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['Price'][$paxKey1][] = $getPriceF;
}
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['checkR'][$paxKey1][] = $checkR;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['adults'][$paxKey1][] = $adults;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['child'][$paxKey1][] = $child;
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['BookingType'] = $priceVal['BookingType'];
$checkPlan['category']['SUB'][$fromToDate][$priceVal['EType']][$priceVal['MPType']]['exchangerate'] = $exchangerate;
}
}
}
}
}
if(count($checkPlan['category']['SUB']) < 2){
$checkPlan['category']['SUB'] = array();
}
$CurrenctDate = date('Y-m-d H:i:s');
$PromotionsArray = array();
if(!empty($Promotions)){
foreach($Promotions as $key => $value){
if(strtotime($value['FromBookingDate']) <= strtotime($CurrenctDate) && strtotime($value['ToBookingDate']) >= strtotime($CurrenctDate)){
if($value['IsStayPeriod'] == 1){
$FromStayPeriod = strtotime($value['FromStayPeriod']);
$ToStayPeriod = strtotime($value['ToStayPeriod']);
// echo $checkInDate.'-'.$checkOutDate2;
// echo "<pre>";print_r($value);die;
if(strtotime($checkInDate) >= $FromStayPeriod && strtotime($checkOutDate2) <= $ToStayPeriod){
if(!empty($value['MealType'])){
$PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
}else{
$PromotionsArray[$value['RoomType']]['Room'][] = $value;
}
}
}else{
if(!empty($value['MealType'])){
$PromotionsArray[$value['RoomType']]['Meal'][$value['MealType']][] = $value;
}else{
$PromotionsArray[$value['RoomType']]['Room'][] = $value;
}
}
}
}
}
$MealPlanRate = $longJson['MealPlanRate'];
$categorySUB = array();
$RateType = isset($longJson['RateType']) ? (int)$longJson['RateType'] : 0;
if(!empty($MealPlanRate)){
$DefaultMeal = 9;
if($RateType == 2){
$DefaultMeal = 6;
}
foreach($checkPlan['category']['SUB'] as $sdKey => $sdVal){
foreach($sdVal as $sKey => $sVal){
$sVal = $sVal[$DefaultMeal];
if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
$sVal['Promotion'] = $rrValue;
$categorySUB[$sdKey][$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;
}
}else{
$categorySUB[$sdKey][$sKey][$DefaultMeal][0] = $sVal;
}
foreach($MealPlanRate as $mKey => $mVal){
$sValNew = $sVal;
$sValNew['Title'] = $mVal['meal_type_name'];
$sValNew['MPTypeId'] = $mVal['meal_type'];
$PriceMArray = array();
foreach($sVal['Price'] as $roomppKey => $roomppVal){
foreach($roomppVal as $ppKey => $ppVal){
$AdultCost = $sVal['adults'][$roomppKey][$ppKey] * $mVal['adult_cost'];
$ChildCost = $sVal['child'][$roomppKey][$ppKey] * $mVal['child_cost'];
$MealPrice = $AdultCost + $ChildCost;
$PriceMArray[$roomppKey][] = round((float)($ppVal + ($MealPrice * $sVal['exchangerate'])),2);
}
}
$sValNew['Price'] = $PriceMArray;
if(isset($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']]) && !empty($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']])){
foreach($PromotionsArray[$sKey]['Meal'][$mVal['meal_type']] as $rrKey => $rrValue){
$sValNew['Promotion'] = $rrValue;
$categorySUB[$sdKey][$sKey][$mVal['meal_type']][$rrValue['AccomPromotionsSysId']] = $sValNew;
}
}else{
if(!empty($sValNew['Promotion'])){
$categorySUB[$sdKey][$sKey][$mVal['meal_type']][$sValNew['Promotion']['AccomPromotionsSysId']] = $sValNew;
}else{
$categorySUB[$sdKey][$sKey][$mVal['meal_type']][0] = $sValNew;
}
}
}
}
}
$checkPlan['category']['SUB'] = $categorySUB;
}else {
foreach($checkPlan['category']['SUB'] as $sdKey => $sdVal){
foreach($sdVal as $sKey => $sVal){
foreach($sVal as $sKey1 => $sVal1){
if(isset($PromotionsArray[$sKey]['Room']) && !empty($PromotionsArray[$sKey]['Room'])){
foreach($PromotionsArray[$sKey]['Room'] as $rrKey => $rrValue){
$sVal['Promotion'] = $rrValue;
$categorySUB[$sdKey][$sKey][$DefaultMeal][$rrValue['AccomPromotionsSysId']] = $sVal;
}
}else if(isset($PromotionsArray[$sKey]['Meal'][$sKey1]) && !empty($PromotionsArray[$sKey]['Meal'][$sKey1])){
foreach($PromotionsArray[$sKey]['Meal'][$sKey1] as $rrKey => $rrValue){
$sVal1['Promotion'] = $rrValue;
$categorySUB[$sdKey][$sKey][$sKey1][$rrValue['AccomPromotionsSysId']] = $sVal1;
}
}else{
$categorySUB[$sdKey][$sKey][$sKey1][0] = $sVal1;
}
}
}
}
$checkPlan['category']['SUB'] = $categorySUB;
}
$countval = array();
$finalArray = array();
$Price = 0;
$Markup = 0;
if (!empty($hotelRoomMealArray)) {
foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
$CheckIn = $rmvalue['CheckIn'];
$CheckOut = $rmvalue['CheckOut'];
$date = $CheckIn.'~~'.$CheckOut;
$RoomNo = (int)$rmvalue['RoomNo'];
$StayNo = (int)$rmvalue['StayNo'];
$SUBkey = $rmvalue['RoomType'];
$keyItem = $rmvalue['MealPlan'];
$ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];
$AccomPromotionsSysId = $rmvalue['AccomPromotionsSysId'];
if($AccomPromotionsSysId > 0){
$checkRNd = (isset($checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][$AccomPromotionsSysId])) ? $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][$AccomPromotionsSysId] : array();
}else{
$checkRNd = (isset($checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][0])) ? $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem][0] : $checkPlan['category']['SUB'][$date][$SUBkey][$keyItem];
}
$totalNight = count($checkRNd["CreateDate"]);
//echo "<pre>";print_r($checkRNd);
// if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
if (count($checkRNd["CreateDate"]) == $totalNight) {
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CreateDate'][] = $checkRNd['CreateDate'];
$finalArray['category']['Name'] = $longJson['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CheckIn'] = $CheckIn;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['CheckOut'] = $CheckOut;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['RoomNo'] = $RoomNo;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['StayNo'] = $StayNo;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['MarkType'] = $checkRNd['MarkType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['BookingType'] = $checkRNd['BookingType'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Promotion'] = $checkRNd['Promotion'];
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['ExtraServiceSysId'] = $ExtraServiceSysId;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['adults'][] = (array_sum($checkRNd['adults'][$RoomNo])/count($checkRNd['Price'][$RoomNo]))*$totalNight ;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['child'][] = (array_sum($checkRNd['child'][$RoomNo])/count($checkRNd['Price'][$RoomNo]))*$totalNight ;
$mPrice = (array_sum($checkRNd['Price'][$RoomNo]) /count($checkRNd['Price'][$RoomNo])) * $totalNight;
$mmarkupValue = 0;
if ((float) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Price'][] = $mPrice;
$finalArray['category']['SUB'][$SUBkey][$keyItem][$rmkey]['Markup'][] = $mmarkupValue;
$Price = $Price + $mPrice;
$Markup = $Markup + $mmarkupValue;
}
}
} else {
foreach ($checkPlan['category']['SUB'] as $checkhotelkey => $checkHotelPrice) {
foreach ($checkHotelPrice as $SUBkey => $SUBVal) {
$i = 0;
foreach ($SUBVal as $keyItem => $checkRNdArr) {
if(isset($checkRNdArr['Title'])){
$checkRNdArr[0] = $checkRNdArr;
}
foreach ($checkRNdArr as $keyItemKey => $checkRNd) {
foreach ($checkRNd['Price'] as $roomKey => $RoomNd) {
$countval[$i] = $totalNight = count($checkRNd["CreateDate"]);
$checkR = array_sum($checkRNd['checkR'][$roomKey]);
//if(count($checkRNd['Price']) == $totalNight){
$mPrice = array_sum($checkRNd['Price'][$roomKey]) / $totalNight;
//}
if($mPrice>0 && $checkR == 0){
if ($countval[$i] == $totalNight) {
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['CreateDate'][] = $checkRNd['CreateDate'];
}
$finalArray['category']['Name'] = $checkHotelPrice['Title'];
$finalArray['category']['HotelName'] = $longJson['Title'];
$finalArray['category']['Stars'] = $longJson['Stars'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Title'] = $checkRNd['Title'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['ETitle'] = $checkRNd['ETitle'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['EType'] = $checkRNd['EType'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['MPTypeId'] = $checkRNd['MPTypeId'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['roomInfo'] = $checkRNd['roomInfo'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['B2BMarkup'] = $checkRNd['B2BMarkup'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['MarkType'] = $checkRNd['MarkType'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['BookingType'] = $checkRNd['BookingType'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Promotion'] = $checkRNd['Promotion'];
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['adults'][] = (array_sum($checkRNd['adults'][$roomKey])/$totalNight);
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['child'][] = (array_sum($checkRNd['child'][$roomKey])/$totalNight);
$mmarkupValue = 0;
if ((float) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$mmarkupValue = (float) ($mPrice * ($checkRNd['B2BMarkup']) / 100);
} else {
$mmarkupValue = $checkRNd['B2BMarkup'];
}
}
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Price'][] = $mPrice;
$finalArray['category']['SUB'][$roomKey][$checkhotelkey][$SUBkey][$keyItem][$keyItemKey]['Markup'][] = $mmarkupValue;
if ($Price == 0 || $Price > $checkRNd['Price']) {
$Price = array_sum($checkRNd['Price']) / $totalNight;
$markupValue = 0;
if ((float) $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'],
'BookingTerms' => $longJson['BookingTerms'],
'adults' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'Markup' => $Markup,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
'RoomInfo' => $RoomInfo,
'TransferData' => $TransferData,
'OtherChargesData' => $OtherChargesData,
);
} 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'],
'BookingTerms' => $longJson['BookingTerms'],
'adults' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
);
}
}
}
return $response;
}
public function getHotelByPackageIdNewSplitOld($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;
$AllAdult = (int) $adults;
$AllChild = (int) $child;
$roomJsonInfo = json_decode($roomJsonInfo, TRUE);
$rooms = count($roomJsonInfo);
$ChildWithOutBed = 0;
$ChildWithOutBed = (int) $child;
$currencyTypeArray = $objHelperGeneral->getCurrencyData();
$datetime1 = new DateTime($checkInDate);
$datetime2 = new DateTime($checkOutDate);
$interval = $datetime1->diff($datetime2);
$totalNight = (int) $interval->format('%a');
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'];
$Promotions = $longJson['Promotions'];
$calculateRoomJsonPax = $this->calculateRoomJsonPax($roomJsonInfo, $AllAdult, $AllChild, $longJson['RoomInfo'], $RoomImages, $hotelRoomMealArray);
$RoomInfo = $calculateRoomJsonPax['RoomInfo'];
$roomJsonInfoArrfinal = $calculateRoomJsonPax['roomJsonInfoArrfinal'];
$Currency = $longJson['PriceAdditional'][0]['Currency'];
$CurrencyType = $currencyTypeArray[$Currency];
$ExtraServices = (isset($longJson['ExtraServices'])) ? $longJson['ExtraServices'] : array();
$TransferData = $OtherChargesData = array();
foreach($ExtraServices as $key => $value){
if($value['ServiceType'] == 1){
$TransferData[] = $value;
}else{
$OtherChargesData[] = $value;
}
}
$MinStayNights = (isset($longJson['MinStayNights'])) ? (int)$longJson['MinStayNights'] : 0;
if($totalNight<$MinStayNights){
$longJson['PriceAdditional'] = array();
}
foreach ($longJson['PriceAdditional'] as $priceVal) {
$checkPlan['category']['Name'] = $priceVal['Title'];
$checkPlan['category']['HotelName'] = $longJson['Title'];
$checkPlan['category']['Stars'] = $longJson['Stars'];
if ($row['AgencySysId'] == '37338' || $row['AgencySysId'] == '14114') {
if ($priceVal['MPTitle'] == 'EP') {
$priceVal['MPTitle'] = 'RO';
}
if ($priceVal['MPTitle'] == 'CP') {
$priceVal['MPTitle'] = 'BB';
}
if ($priceVal['MPTitle'] == 'AP') {
$priceVal['MPTitle'] = 'FB';
}
if ($priceVal['MPTitle'] == 'MAP') {
$priceVal['MPTitle'] = 'HB';
}
}
$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'];
$roomJsonInfoArrfinalArr = array();
if (!empty($hotelRoomMealArray)) {
$roomJsonInfoArrfinalArr[] = $roomJsonInfoArrfinal[$priceVal['EType']][$priceVal['MPType']];
} else {
$roomJsonInfoArrfinalArr = $roomJsonInfoArrfinal[$priceVal['EType']];
}
$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'];
foreach ($roomJsonInfoArrfinalArr as $paxKey1 => $paxVal1) {
foreach ($paxVal1 as $paxKey => $paxVal) {
$adults = $paxVal['Adult'];
$child = $paxVal['Child'];
$infent = $paxVal['infent'];
$totalAdult = (int) $adults + (int) $child + (int) $infent;
$totalRoomPax = (int) $adults + (int) $child;
$checkR = 0;
if ($totalRoomPax > $roomMaxGuest || $adults > $roomMaxAdult || $child > $roomMaxChild) {
$checkR = 1;
}
$adultPrice = $adultPriceExtra = $childPrice = $childPriceExtra = 0;
$childAgeArray = array();
for ($ic = 1; $ic <= $child; $ic++) {
$childAge = $paxVal['ChildAge_' . $ic];
$childAgeArray[] = $childAge;
}
sort($childAgeArray);
if ($totalRoomPax == 1) {
$adultPrice = (float) $priceVal['NSOC'];
} else if ($totalRoomPax > 1) {
$adultPrice = (float) $priceVal['NDOC'];
$adultsExtra = (int)($adults - $roomMinAdult);
if ($adultsExtra < 0) {
$adultsExtra = 0;
}
$childExtra = (int)($totalRoomPax - $roomMinAdult - $adultsExtra);
if ($adultsExtra > 0) {
$adultPriceExtra = (float) $priceVal['NEBC'] * $adultsExtra;
}
if ($childExtra > 0) {
$ChildWithBed = $ChildWithOutBed = 0;
for ($che = 0; $che < $childExtra; $che++) {
$childAge = (int)$childAgeArray[$che];
if ($childAge >= $priceVal['FCAT']) {
$ChildWithBed++;
} else {
$ChildWithOutBed++;
}
}
$childPrice = (float) $priceVal['NEWOBC'] * $ChildWithOutBed;
$childPriceExtra = (float) $priceVal['NEWBC'] * $ChildWithBed;
}
}
$getPrice = $adultPrice + $adultPriceExtra + $childPrice + $childPriceExtra;
//echo " P:".$getPrice;die;
$exchangerate = 1;
if (isset($priceVal['Currency']) && $priceVal['Currency'] != $this->TrxCurrency) {
$exchangerate = $objHelperGeneral->currencyExchangeRate($priceVal['Currency'], $this->TrxCurrency, 0);
}
$getPriceF = $getPrice * $exchangerate;
if ($getPriceF > 0) {
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['Price'][] = $getPriceF;
}
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['checkR'][] = $checkR;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['adults'][] = $adults;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['child'][] = $child;
$checkPlan['category']['SUB'][$priceVal['EType']][$priceVal['MPType']]['SSID'] = $priceVal['SSID'];
}
}
}
}
}
$countval = array();
$finalArray = array();
$Price = 0;
$Markup = 0;
if (!empty($hotelRoomMealArray)) {
foreach ($hotelRoomMealArray as $rmkey => $rmvalue) {
$SUBkey = $rmvalue['RoomType'];
$keyItem = $rmvalue['MealPlan'];
$ExtraServiceSysId = $rmvalue['ExtraServiceSysId'];
$checkRNd = (isset($checkPlan['category']['SUB'][$SUBkey][$keyItem])) ? $checkPlan['category']['SUB'][$SUBkey][$keyItem] : array();
// if (count($checkRNd["CreateDate"]) == $totalNight && count($checkRNd["Price"]) == $totalNight) {
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'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['ExtraServiceSysId'] = $ExtraServiceSysId;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults']) / count($checkRNd['Price'])) * $totalNight;
$finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child']) / count($checkRNd['Price'])) * $totalNight;
$mPrice = (array_sum($checkRNd['Price']) / count($checkRNd['Price'])) * $totalNight;
$mmarkupValue = 0;
if ((float) $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) {
$countval[$i] = count($checkRNd["CreateDate"]);
$checkR = array_sum($checkRNd['checkR']);
$mPrice = 0;
// if(count($checkRNd['Price']) == $totalNight){
$mPrice = array_sum($checkRNd['Price']) / $totalNight;
// }
if ($mPrice > 0 && $checkR == 0) {
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'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['SSID'] = $checkRNd['SSID'];
$finalArray['category']['SUB'][$SUBkey][$keyItem]['adults'][] = (array_sum($checkRNd['adults']) / $totalNight);
$finalArray['category']['SUB'][$SUBkey][$keyItem]['child'][] = (array_sum($checkRNd['child']) / $totalNight);
$mmarkupValue = 0;
if ((float) $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 ((float) $checkRNd['B2BMarkup'] > 0) {
if ($checkRNd['MarkType'] == 1) {
$markupValue = (float) ($Price * ($checkRNd['B2BMarkup']) / 100);
} else {
$markupValue = $checkRNd['B2BMarkup'];
}
}
$Price = $Price + $markupValue;
$Markup = $Markup + $markupValue;
}
}
$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'],
'CountryIds' => $row['CountryIds'],
'Countries' => $row['Countries'],
'Title' => $longJson['Title'],
'Details' => $longJson['Details'],
'adults' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'IsFeatured' => $row['IsFeatured'],
'totalNight' => $totalNight,
'checkInDate' => $checkInDate,
'checkOutDate' => $checkOutDate,
'Price' => $Price,
'Markup' => $Markup,
'CurrencyType' => $CurrencyType,
'roomJsonInfo' => $roomJsonInfoArrfinal,
'roomJsonInfoNew' => $calculateRoomJsonPax['roomJsonInfo'],
'RoomInfo' => $RoomInfo,
'TransferData' => $TransferData,
'OtherChargesData' => $OtherChargesData,
);
} 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' => $AllAdult,
'child' => $AllChild,
'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'],
'SplitStayNights' => $longJson['SplitStayNights'],
'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'] <= $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);
}
}
public function getMealsData($city_id, $mealsCategory, $mealsType, $TotalAdult, $TotalChild)
{
$mealNameArray = array();
if ($this->SecurityKey && !empty($city_id)) {
$mealsTypeUtl = ($mealsType > 0) ? '&meal_type=' . $mealsType : '';
$mealsCategoryUrl = ($mealsCategory > 0) ? '&meal_category=' . $mealsCategory : '';
$url = 'https://admin.globaltravelexchange.com/api/v1/restaurant/meals/?city_id=' . $city_id . $mealsTypeUtl . $mealsCategoryUrl;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'SECURITYKEY: ' . SECURITYKEY
),
));
$mealData = curl_exec($curl);
curl_close($curl);
// $mealData = '[{"id":12,"restaurant_name":"Hera Sweet","is_preferred":true,"address":"Harsh Vihar","city_id":19543,"supplier_name":10390,"restaurant_meals":{"0":{"id":128,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"1":{"id":129,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"2":{"id":130,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"3":{"id":131,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"4":{"id":132,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"5":{"id":133,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"6":{"id":134,"meal_name":"Test 1","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"7":{"id":135,"meal_name":"Test 1","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"8":{"id":136,"meal_name":"Test 1","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"9":{"id":137,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"10":{"id":138,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"11":{"id":139,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"12":{"id":140,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"13":{"id":141,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"14":{"id":142,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"15":{"id":143,"meal_name":"Test 2","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"16":{"id":144,"meal_name":"Test 2","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"17":{"id":145,"meal_name":"Test 2","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"18":{"id":146,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"19":{"id":147,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"20":{"id":148,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"21":{"id":149,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"22":{"id":150,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"23":{"id":151,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"24":{"id":152,"meal_name":"Test 3","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"25":{"id":153,"meal_name":"Test 3","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0},"26":{"id":154,"meal_name":"Test 3","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":4000.0,"child_sales":4000.0}}},{"id":16,"restaurant_name":"Hera Sweet","is_preferred":true,"address":"Jaipur ","city_id":12995,"supplier_name":10390,"restaurant_meals":{"0":{"id":159,"meal_name":"Raj Thali","meal_type":1,"meal_category":1,"symbol":"INR","adult_sales":500.0,"child_sales":500.0},"1":{"id":160,"meal_name":"Raj Thali","meal_type":1,"meal_category":2,"symbol":"INR","adult_sales":500.0,"child_sales":500.0},"2":{"id":161,"meal_name":"Raj Thali","meal_type":1,"meal_category":3,"symbol":"INR","adult_sales":500.0,"child_sales":500.0}}}]';
$mealDataArray = json_decode($mealData, 1);
$checkMealId = array();
foreach ($mealDataArray as $key => $value) {
$restaurant_meals = $value['restaurant_meals'];
$supplier_name = $value['supplier_name'];
foreach ($restaurant_meals as $rKey => $rValue) {
if ($mealsCategory > 0 && $mealsType > 0) {
if (!in_array($rValue['id'], $checkMealId) && $rValue['meal_type'] == $mealsType && $rValue['meal_category'] == $mealsCategory) {
$checkMealId[] = $rValue['id'];
$exchangerate = 1;
// if($rValue['CurrencyType'] != $this->TrxCurrency){
// $exchangerate = $this->objHelperGeneral->currencyExchangeRate($rValue['CurrencyType'], $this->TrxCurrency, 0);
// }
$Cost = ($rValue['adult_sales'] * $TotalAdult + $rValue['child_sales'] * $TotalChild) * $exchangerate;
$dataArr = array(
'Price' => $Cost,
);
$COstWM = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
$mealNameArray[] = array('id' => $rValue['id'], 'meal_name' => trim($rValue['meal_name']), 'cost' => $COstWM, 'city_id' => $value['city_id']);
}
} else {
if (!in_array($rValue['id'], $checkMealId)) {
$checkMealId[] = $rValue['id'];
$exchangerate = 1;
// if($rValue['CurrencyType'] != $this->TrxCurrency){
// $exchangerate = $this->objHelperGeneral->currencyExchangeRate($rValue['CurrencyType'], $this->TrxCurrency, 0);
// }
$Cost = ($rValue['adult_sales'] * $TotalAdult + $rValue['child_sales'] * $TotalChild) * $exchangerate;
$dataArr = array(
'Price' => $Cost,
);
$COstWM = Zend_Controller_Action_HelperBroker::getStaticHelper("General")->getPriceWithMarkupAndServiceTax($dataArr);
$mealNameArray[$value['city_id']][] = array('id' => $rValue['id'], 'meal_type' => $rValue['meal_type'], 'meal_category' => $rValue['meal_category'], 'meal_name' => trim($rValue['meal_name']), 'cost' => $Cost, 'COstWM' => $COstWM, 'city_id' => $value['city_id'], 'adult_sales' => $rValue['adult_sales'], 'child_sales' => $rValue['child_sales'], 'supplier_name' => (int)$supplier_name);
}
}
}
}
}
return $mealNameArray;
}
}