public bool IsFullAvailability(HotelAvailabilityRS objHotelAvailabilityRS, StayCriteriaSelection objStayCriteriaSelection) { // Assumes objHotelAvailabilityRS does not contain alternate availability info. if (objHotelAvailabilityRS.HotelRoomAvailInfos.Length == objStayCriteriaSelection.RoomOccupantSelections.Length) { if (ConfigurationManager.AppSettings["EnableRoomRateDescriptionModel"] != "1") { return true; } else { for (int si = 0; si < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; si++) { HotelRoomAvailInfo objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[si]; bool bRatesAvailable = false; for (int i = 0; i < objHotelRoomAvailInfo.RoomRates.Length; i++) { if (objHotelRoomAvailInfo.RoomRates[i].DescriptionStatus == RoomRateDescriptionStatus.Active) { bRatesAvailable = true; break; } for (int j = 0; j < objHotelRoomAvailInfo.RatePlans.Length; j++) { if (objHotelRoomAvailInfo.RatePlans[j].Code == objHotelRoomAvailInfo.RoomRates[i].RatePlanCode) { if (objHotelRoomAvailInfo.RatePlans[j].Type == RatePlanType.Negotiated || objHotelRoomAvailInfo.RatePlans[j].Type == RatePlanType.Consortia) { bRatesAvailable = true; } break; } } if (bRatesAvailable) break; } if (!bRatesAvailable) { return false; } } } } return true; }
public void InitSearchHotelAvailCalendarInfoRQ(ref WBSAPIRouterData objWBSAPIRouterData, string[] objHotelCodes, StayCriteriaSelection objStayCriteriaSelection, DateTime dtAvailCalStartDate, int intAvailCalNumDays, string strLinkedProfileID) { WBSAPIRouterGateway gwWBS = new WBSAPIRouterGateway(objEventLog, objExceptionEventLog, bIsProduction); HotelAvailabilityRQ objHotelAvailabilityRQ = new HotelAvailabilityRQ(); objHotelAvailabilityRQ.RequestHeader = this.GetRequestHeader(); objHotelAvailabilityRQ.HotelRoomAvailRequests = new HotelRoomAvailRequest[objHotelCodes.Length]; for (int i = 0; i < objHotelCodes.Length; i++) { HotelRoomAvailRequest objHotelRoomAvailRequest = new HotelRoomAvailRequest(); objHotelAvailabilityRQ.HotelRoomAvailRequests[i] = objHotelRoomAvailRequest; objHotelRoomAvailRequest.SegmentRefID = objHotelCodes[i]; objHotelRoomAvailRequest.ReturnAlternateAvailability = false; objHotelRoomAvailRequest.IsModify = false; objHotelRoomAvailRequest.HotelCode = objHotelCodes[i]; objHotelRoomAvailRequest.ArrivalDate = objStayCriteriaSelection.ArrivalDate; objHotelRoomAvailRequest.DepartureDate = objStayCriteriaSelection.DepartureDate; objHotelRoomAvailRequest.PromotionCode = objStayCriteriaSelection.PromotionCode; objHotelRoomAvailRequest.ProfileIdentifier = strLinkedProfileID; objHotelRoomAvailRequest.NumberRooms = objStayCriteriaSelection.RoomOccupantSelections[0].NumberRooms; objHotelRoomAvailRequest.NumberAdults = objStayCriteriaSelection.RoomOccupantSelections[0].NumberAdults; objHotelRoomAvailRequest.NumberChildren = objStayCriteriaSelection.RoomOccupantSelections[0].NumberChildren; objHotelRoomAvailRequest.ReturnAvailabilityCalendar = true; objHotelRoomAvailRequest.ReturnAvailabilityCalendarOnly = true; objHotelRoomAvailRequest.ReturnAvailabilityCalendarAvailRatesOnly = true; objHotelRoomAvailRequest.ReturnAvailabilityCalendarSummaryOnly = true; objHotelRoomAvailRequest.ApplyAvailabilityCalendarSummaryFilter = true; objHotelRoomAvailRequest.AvailCalendarStartDate = dtAvailCalStartDate; objHotelRoomAvailRequest.AvailCalendarNumDays = intAvailCalNumDays; objHotelRoomAvailRequest.RequestedPublicRatePlanCategories = new string[0]; objHotelRoomAvailRequest.RequestedRoomTypeCodes = new string[0]; objHotelRoomAvailRequest.RequestedSpecialRatePlanCodes = new string[0]; } gwWBS.InitHotelAvailabilityRQ(ref objWBSAPIRouterData, objHotelAvailabilityRQ); return; }
public void InitStayCriteriaSelection() { StayCriteriaSelection objStayCriteriaSelection = new StayCriteriaSelection(); objStayCriteriaSelection.CountryCode = ""; objStayCriteriaSelection.AreaID = ""; objStayCriteriaSelection.HotelCode = ""; objStayCriteriaSelection.ArrivalDate = TZNet.ToLocal(this.GetTimeZone(""), DateTime.UtcNow.AddDays(1)).Date; objStayCriteriaSelection.DepartureDate = objStayCriteriaSelection.ArrivalDate.AddDays(1).Date; objStayCriteriaSelection.PromotionCode = ""; objStayCriteriaSelection.RoomOccupantSelections = new RoomOccupantSelection[1]; objStayCriteriaSelection.RoomOccupantSelections[0] = new RoomOccupantSelection(); objStayCriteriaSelection.RoomOccupantSelections[0].RoomRefID = "1"; objStayCriteriaSelection.RoomOccupantSelections[0].NumberRooms = 1; objStayCriteriaSelection.RoomOccupantSelections[0].NumberAdults = WebconfigHelper.DefaultNumberAdult; objStayCriteriaSelection.RoomOccupantSelections[0].NumberChildren = WebconfigHelper.DefaultNumberChildren; Session[Constants.Sessions.StayCriteriaSelection] = objStayCriteriaSelection; Session["RateGridStartDate"] = objStayCriteriaSelection.ArrivalDate.Date; Session["SearchRateGridStartDate"] = objStayCriteriaSelection.ArrivalDate.Date; Session["ImageGalleries"] = new List<HotelImageGallery>(); return; }
public bool IsBookingRestrictedDate(StayCriteriaSelection objStayCriteriaSelection) { if (objStayCriteriaSelection.HotelCode == null || objStayCriteriaSelection.HotelCode == "") return false; BookingRestrictionNotice[] objBookingRestrictionNotices = this.GetBookingRestrictionNotices(objStayCriteriaSelection.HotelCode); for (int i = 0; i < objBookingRestrictionNotices.Length; i++) { if (objBookingRestrictionNotices[i].Type == BookingRetrictionType.Opening) { if (objStayCriteriaSelection.ArrivalDate.Date < objBookingRestrictionNotices[i].Date1.Date || objStayCriteriaSelection.DepartureDate.Date < objBookingRestrictionNotices[i].Date1.Date) return true; } if (objBookingRestrictionNotices[i].Type == BookingRetrictionType.Closing) { if (objStayCriteriaSelection.ArrivalDate.Date >= objBookingRestrictionNotices[i].Date1.Date || objStayCriteriaSelection.DepartureDate.Date >= objBookingRestrictionNotices[i].Date1.Date) return true; } else if (objBookingRestrictionNotices[i].Type == BookingRetrictionType.Repairs || objBookingRestrictionNotices[i].Type == BookingRetrictionType.Refurbishment) { if (objStayCriteriaSelection.ArrivalDate.Date < objBookingRestrictionNotices[i].Date1.Date && objStayCriteriaSelection.DepartureDate.Date < objBookingRestrictionNotices[i].Date1.Date) continue; if (objStayCriteriaSelection.ArrivalDate.Date > objBookingRestrictionNotices[i].Date2.Date && objStayCriteriaSelection.DepartureDate.Date > objBookingRestrictionNotices[i].Date2.Date) continue; return true; } } return false; }
private void ValidateStayCriteria(StayCriteriaSelection objStayCriteriaSelection) { if (objStayCriteriaSelection.ArrivalDate.Date < TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date) this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "ArrivalDateInPast")); if (objStayCriteriaSelection.DepartureDate.Date <= objStayCriteriaSelection.ArrivalDate.Date) this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "DepartureDateBeforeArrivalDate")); int intBookingDaysRequested = ((TimeSpan)(objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate))).Days; int intMaxBookingDays; if (!Int32.TryParse(ConfigurationManager.AppSettings["MaxBookingDays"], out intMaxBookingDays)) intMaxBookingDays = 30; if (intBookingDaysRequested > intMaxBookingDays) this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "TooManyBookingDaysRequested")); for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { if (objStayCriteriaSelection.RoomOccupantSelections[i].NumberAdults == 0 && objStayCriteriaSelection.RoomOccupantSelections[i].NumberChildren == 0) { this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "NoRoomOccupantSelection")); break; } } if (!this.IsPageValidationError) { if (WbsUiHelper.IsBookingRestrictedDate(objStayCriteriaSelection)) this.AddPageError(PageErrorType.ValidationError, (String)GetGlobalResourceObject("SiteErrorMessages", "RestrictedBookingDateRequested")); } return; }
public static HotelPricing[] GetHotelPricing(StayCriteriaSelection objStayCriteriaSelection, RoomRateSelection[] objRoomRateSelections, AddOnPackageSelection[] objAllAddOnPackageSelections, HotelRoomAvailInfo[] objHotelRoomAvailInfos, string strCurrenyCode) { HotelPricing[] objHotelPricing = new HotelPricing[objStayCriteriaSelection.RoomOccupantSelections.Length]; int intNumberStayNights = ((TimeSpan)objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate)).Days; for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { RoomOccupantSelection objRoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[i]; RoomRateSelection objRoomRateSelection = HotelPricingHelper.GetRoomRateSelection(objRoomOccupantSelection, objRoomRateSelections); HotelAvailRatePlan objHotelAvailRatePlan = HotelPricingHelper.GetHotelAvailRatePlan(objRoomRateSelection, objHotelRoomAvailInfos); HotelAvailRoomRate objHotelAvailRoomRate = HotelPricingHelper.GetHotelAvailRoomRate(objRoomRateSelection, objHotelRoomAvailInfos); AddOnPackageSelection[] objAddOnPackageSelections = HotelPricingHelper.GetAddOnPackageSelections(objRoomRateSelection, objAllAddOnPackageSelections); decimal decTotalRoomAmount = 0; decimal decTotalRoomTaxes = 0; // Exclusive taxes only decimal decTotalRoomFees = 0; // Exclusive fees only for (int j = 0; j < objHotelAvailRoomRate.Rates.Length; j++) { decTotalRoomAmount += objRoomOccupantSelection.NumberRooms * objHotelAvailRoomRate.Rates[j].Amount * objHotelAvailRoomRate.Rates[j].NumNights; for (int k = 0; k < objHotelAvailRoomRate.Rates[j].PerNightTaxesFees.Length; k++) { if (objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].CategoryType == TaxFeeCategoryType.Tax && objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].Type == TaxFeeType.Exclusive) { decTotalRoomTaxes += objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].Amount; } else if (objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].CategoryType == TaxFeeCategoryType.Fee && objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].Type == TaxFeeType.Exclusive) { decTotalRoomFees += objHotelAvailRoomRate.Rates[j].PerNightTaxesFees[k].Amount; } } } decTotalRoomAmount += decTotalRoomTaxes + decTotalRoomFees; decimal decTotalPackageAmount = 0; decimal decTotalPackageDeposit = 0; decimal decTotalPackageTaxes = 0; // Exclusive taxes only decimal decTotalPackageFees = 0; // Exclusive fees only for (int j = 0; j < objAddOnPackageSelections.Length; j++) { HotelAvailPackage objHotelAvailPackage = HotelPricingHelper.GetHotelAvailPackage(objAddOnPackageSelections[j], objRoomRateSelection, objHotelAvailRatePlan); if (objHotelAvailPackage.PriceType == PackagePriceType.PerStayPerNight || objHotelAvailPackage.PriceType == PackagePriceType.PerPersonPerNight) { decTotalPackageAmount += objAddOnPackageSelections[j].Quantity * objHotelAvailPackage.Price * intNumberStayNights; decTotalPackageDeposit += objAddOnPackageSelections[j].Quantity * objHotelAvailPackage.Deposit * intNumberStayNights; } else { decTotalPackageAmount += objAddOnPackageSelections[j].Quantity * objHotelAvailPackage.Price; decTotalPackageDeposit += objAddOnPackageSelections[j].Quantity * objHotelAvailPackage.Deposit; } } decimal decDepositTaxFactor = 0; if (decTotalPackageAmount != 0) decDepositTaxFactor = decTotalPackageDeposit / decTotalPackageAmount; decTotalPackageAmount += decTotalPackageTaxes + decTotalPackageFees; decTotalPackageDeposit += decimal.Round(((decTotalPackageTaxes + decTotalPackageFees) * decDepositTaxFactor), 2); decimal decTotalAdditionalTaxes = 0; // Exclusive taxes only decimal decTotalAdditionalFees = 0; // Exclusive fees only for (int j = 0; j < objHotelAvailRoomRate.PerStayTaxesFees.Length; j++) { if (objHotelAvailRoomRate.PerStayTaxesFees[j].CategoryType == TaxFeeCategoryType.Tax && objHotelAvailRoomRate.PerStayTaxesFees[j].Type == TaxFeeType.Exclusive) { decTotalAdditionalTaxes += objHotelAvailRoomRate.PerStayTaxesFees[j].Amount; } else if (objHotelAvailRoomRate.PerStayTaxesFees[j].CategoryType == TaxFeeCategoryType.Fee && objHotelAvailRoomRate.PerStayTaxesFees[j].Type == TaxFeeType.Exclusive) { decTotalAdditionalFees += objHotelAvailRoomRate.PerStayTaxesFees[j].Amount; } } objHotelPricing[i] = new HotelPricing(); objHotelPricing[i].SegmentRefID = objRoomOccupantSelection.RoomRefID; objHotelPricing[i].CurrencyCode = strCurrenyCode; objHotelPricing[i].TotalRoomTaxes = decTotalRoomTaxes; objHotelPricing[i].TotalRoomFees = decTotalRoomFees; objHotelPricing[i].TotalRoomAmount = decTotalRoomAmount; objHotelPricing[i].TotalPackageTaxes = decTotalPackageTaxes; objHotelPricing[i].TotalPackageFees = decTotalPackageFees; objHotelPricing[i].TotalPackageAmount = decTotalPackageAmount; objHotelPricing[i].TotalAdditionalTaxes = decTotalAdditionalTaxes; objHotelPricing[i].TotalAdditionalFees = decTotalAdditionalFees; if (ConfigurationManager.AppSettings["HotelPricing.IncludeAddOnPackageAmountsInTotal"] == "1") objHotelPricing[i].TotalAmount = decTotalRoomAmount + decTotalPackageAmount + decTotalAdditionalTaxes + decTotalAdditionalFees; else objHotelPricing[i].TotalAmount = decTotalRoomAmount + decTotalAdditionalTaxes + decTotalAdditionalFees; //objHotelPricing[i].TotalDeposit = HotelPricingHelper.GetDepositAmount(objHotelAvailRatePlan, decTotalRoomAmount + decTotalPackageDeposit + decTotalAdditionalTaxes + decTotalAdditionalFees, intNumberStayNights); objHotelPricing[i].TotalDeposit = HotelPricingHelper.GetDepositAmount(objHotelAvailRatePlan, objHotelPricing[i].TotalAmount, intNumberStayNights); } return objHotelPricing; }
private void UpdateStayCriteriaSelection() { StayCriteriaSelection objStayCriteriaSelection = new StayCriteriaSelection(); objStayCriteriaSelection.ArrivalDate = DateTime.Parse(calDateHiddenFieldArr.Value); objStayCriteriaSelection.DepartureDate = DateTime.Parse(calDateHiddenFieldDep.Value); if (ConfigurationManager.AppSettings["StayCriteriaSelectorControl.UseStayNights"] == "1") { objStayCriteriaSelection.DepartureDate = objStayCriteriaSelection.ArrivalDate.AddDays(Convert.ToInt32(ddlStayNights.SelectedValue)); } if (_StayCriteriaSelectorMode == StayCriteriaSelectorMode.New) { objStayCriteriaSelection.CountryCode = ddlCountryList.SelectedValue; objStayCriteriaSelection.AreaID = ddlAreaList.SelectedValue; objStayCriteriaSelection.HotelCode = ddlHotelList.SelectedValue; } else if (_StayCriteriaSelectorMode == StayCriteriaSelectorMode.Change) { objStayCriteriaSelection.CountryCode = _StayCriteriaSelection.CountryCode; objStayCriteriaSelection.AreaID = _StayCriteriaSelection.AreaID; objStayCriteriaSelection.HotelCode = _StayCriteriaSelection.HotelCode; } objStayCriteriaSelection.PromotionCode = tbPromotionCode.Text; List<RoomOccupantSelection> lRoomOccupantSelections = new List<RoomOccupantSelection>(); for (int i = 1; i <= Convert.ToInt32(ddlRoom.SelectedValue); i++) { RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection(); lRoomOccupantSelections.Add(objRoomOccupantSelection); objRoomOccupantSelection.RoomRefID = i.ToString(); objRoomOccupantSelection.NumberRooms = 1; Panel objRoomPanel = (Panel)panRoom.FindControl("panRoom" + i.ToString()); DropDownList objAdultsDDL = (DropDownList)objRoomPanel.FindControl("ddlAdults" + i.ToString()); objRoomOccupantSelection.NumberAdults = Convert.ToInt32(objAdultsDDL.SelectedValue); DropDownList objChildrenDDL = (DropDownList)objRoomPanel.FindControl("ddlChildren" + i.ToString()); objRoomOccupantSelection.NumberChildren = Convert.ToInt32(objChildrenDDL.SelectedValue); } objStayCriteriaSelection.RoomOccupantSelections = lRoomOccupantSelections.ToArray(); _StayCriteriaSelection = objStayCriteriaSelection; return; }
public void Clear() { _StayCriteriaSelectorType = StayCriteriaSelectorType.HotelList; _StayCriteriaSelectorMode = StayCriteriaSelectorMode.New; _StayCriteriaSelection = new StayCriteriaSelection(); _StayCriteriaSelection.RoomOccupantSelections = new RoomOccupantSelection[0]; return; }
private void BeginResumeAsyncDataCapture() { this.EventLog.Write(Page.Session.SessionID + ", enter BeginResumeAsyncDataCapture, " + DateTime.Now.ToString("MM dd yyyy HH:mm:ss.ffffff")); if (bAsyncGetHotelAvailInfo) { StayCriteriaSelection objStayCriteriaSelection = new StayCriteriaSelection(); objStayCriteriaSelection.HotelCode = "XN00031"; objStayCriteriaSelection.AreaID = "1"; objStayCriteriaSelection.CountryCode = "AU"; objStayCriteriaSelection.ArrivalDate = new DateTime(2009, 12, 24); objStayCriteriaSelection.DepartureDate = objStayCriteriaSelection.ArrivalDate.AddDays(1); objStayCriteriaSelection.PromotionCode = ""; objStayCriteriaSelection.RoomOccupantSelections = new RoomOccupantSelection[1]; objStayCriteriaSelection.RoomOccupantSelections[0] = new RoomOccupantSelection(); objStayCriteriaSelection.RoomOccupantSelections[0].RoomRefID = "1"; objStayCriteriaSelection.RoomOccupantSelections[0].NumberAdults = 2; objStayCriteriaSelection.RoomOccupantSelections[0].NumberChildren = 0; objStayCriteriaSelection.RoomOccupantSelections[0].NumberRooms = 1; int intAvailCalNumDays = 0; if (ConfigurationManager.AppSettings["EnableRoomRateGridModel"] == "1") { intAvailCalNumDays = this.NumberDaysInRateGrid; } wbsAPIRouterData = new WBSAPIRouterData(); this.WbsApiRouterHelper.InitHotelAvailInfoRQ(ref wbsAPIRouterData, objStayCriteriaSelection, objStayCriteriaSelection.ArrivalDate, intAvailCalNumDays, this.WbsUiHelper.GetLoginLinkedProfileIdentifier()); this.WbsApiRouter.QueueNewRequest(wbsAPIRouterData, new AsyncCallback(HotelAvailInfoComplete), null, false); } else { // End async page operation if (!wbsIISAsyncResult.IsCompleted) wbsIISAsyncResult.SetComplete(); } this.EventLog.Write(Page.Session.SessionID + ", exit BeginResumeAsyncDataCapture, " + DateTime.Now.ToString("MM dd yyyy HH:mm:ss.ffffff")); return; }