protected void ConfigureRoomRateSelectControl() { string strSelectedRoom = (string)Session["SelectedRoom"]; HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"]; HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"]; StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection]; RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"]; ShowMoreRatesIndicator[] objShowMoreRatesIndicators = (ShowMoreRatesIndicator[])Session["ShowMoreRatesIndicators"]; RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection(); bool IsRoomRateDescriptionModel; if (ConfigurationManager.AppSettings["EnableRoomRateDescriptionModel"] == "1") IsRoomRateDescriptionModel = true; else IsRoomRateDescriptionModel = false; for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom) { objRoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[i]; break; } } RoomRateSelection objRoomRateSelection = new RoomRateSelection(); for (int i = 0; i < objRoomRateSelections.Length; i++) { if (objRoomRateSelections[i].RoomRefID == strSelectedRoom) { objRoomRateSelection = objRoomRateSelections[i]; break; } } HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo(); for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++) { if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom) { objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i]; break; } } HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo(); if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0) { objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0]; } if (ConfigurationManager.AppSettings["EnableRoomRateGridModel"] != "1") { string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"]; string strRoomTypeSelectorItemControlPath = ConfigurationManager.AppSettings["RoomTypeSelectorItemControl.ascx"]; string strRatePlanSelectorItemControlPath = ConfigurationManager.AppSettings["RatePlanSelectorItemControl.ascx"]; ucRoomRateSelectorControl.Clear(); ucRoomRateSelectorControl.ID = "RoomRateSelector"; ucRoomRateSelectorControl.RoomRefID = strSelectedRoom; ucRoomRateSelectorControl.HotelRoomAvailInfo = objHotelRoomAvailInfo; ucRoomRateSelectorControl.RoomOccupantSelection = objRoomOccupantSelection; for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath); ucRoomRateSelectorControl.AddRoomSelectorItem(ucRoomSelectorItemControl); ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom) ucRoomSelectorItemControl.Selected = true; else ucRoomSelectorItemControl.Selected = false; } if (objHotelRoomAvailInfo.RoomTypes != null) { for (int i = 0; i < objHotelRoomAvailInfo.RoomTypes.Length; i++) { bool bRatesAvailable = false; for (int j = 0; j < objHotelRoomAvailInfo.RoomRates.Length; j++) { if (objHotelRoomAvailInfo.RoomRates[j].RoomTypeCode == objHotelRoomAvailInfo.RoomTypes[i].Code) { if (!IsRoomRateDescriptionModel) { bRatesAvailable = true; break; } else { if (objHotelRoomAvailInfo.RoomRates[j].DescriptionStatus == RoomRateDescriptionStatus.Active) { bRatesAvailable = true; break; } for (int k = 0; k < objHotelRoomAvailInfo.RatePlans.Length; k++) { if (objHotelRoomAvailInfo.RatePlans[k].Code == objHotelRoomAvailInfo.RoomRates[j].RatePlanCode) { if (objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Negotiated || objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Consortia) { bRatesAvailable = true; } break; } } if (bRatesAvailable) break; } } } if (!bRatesAvailable) continue; RoomTypeSelectorItemControl ucRoomTypeSelectorItemControl = (RoomTypeSelectorItemControl)LoadControl(strRoomTypeSelectorItemControlPath); ucRoomRateSelectorControl.AddRoomTypeSelectorItem(ucRoomTypeSelectorItemControl); ucRoomTypeSelectorItemControl.ID = "RoomTypeSelectorItem" + objHotelRoomAvailInfo.RoomTypes[i].Code; ucRoomTypeSelectorItemControl.RoomRefID = strSelectedRoom; for (int j = 0; j < objHotelDescriptiveInfo.RoomTypes.Length; j++) { if (objHotelDescriptiveInfo.RoomTypes[j].Code == objHotelRoomAvailInfo.RoomTypes[i].Code) { ucRoomTypeSelectorItemControl.RoomType = objHotelDescriptiveInfo.RoomTypes[j]; break; } } ucRoomTypeSelectorItemControl.ShowMoreRates = false; for (int j = 0; j < objShowMoreRatesIndicators.Length; j++) { if (objShowMoreRatesIndicators[j].RoomRefID == ucRoomTypeSelectorItemControl.RoomRefID && objShowMoreRatesIndicators[j].RoomTypeCode == ucRoomTypeSelectorItemControl.RoomType.Code) { ucRoomTypeSelectorItemControl.ShowMoreRates = true; break; } } ucRoomTypeSelectorItemControl.Clear(); for (int k = 0; k < objHotelRoomAvailInfo.RoomRates.Length; k++) { if (objHotelRoomAvailInfo.RoomRates[k].RoomTypeCode == ucRoomTypeSelectorItemControl.RoomType.Code) { bool bListRatePlan = true; if (IsRoomRateDescriptionModel && objHotelRoomAvailInfo.RoomRates[k].DescriptionStatus == RoomRateDescriptionStatus.Inactive) { for (int l = 0; l < objHotelRoomAvailInfo.RatePlans.Length; l++) { if (objHotelRoomAvailInfo.RatePlans[l].Code == objHotelRoomAvailInfo.RoomRates[k].RatePlanCode) { if (objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Negotiated && objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Consortia) { bListRatePlan = false; } break; } } } if (!bListRatePlan) continue; RatePlanSelectorItemControl ucRatePlanSelectorItemControl = (RatePlanSelectorItemControl)LoadControl(strRatePlanSelectorItemControlPath); ucRoomTypeSelectorItemControl.AddRatePlanSelectorItem(ucRatePlanSelectorItemControl); ucRatePlanSelectorItemControl.ID = "RatePlanSelectorItem" + objHotelRoomAvailInfo.RoomRates[k].RatePlanCode; ucRatePlanSelectorItemControl.RoomRefID = strSelectedRoom; ucRatePlanSelectorItemControl.RoomRate = objHotelRoomAvailInfo.RoomRates[k]; ucRatePlanSelectorItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes; ucRatePlanSelectorItemControl.Selected = false; for (int m = 0; m < objHotelRoomAvailInfo.RatePlans.Length; m++) { if (objHotelRoomAvailInfo.RatePlans[m].Code == objHotelRoomAvailInfo.RoomRates[k].RatePlanCode) { ucRatePlanSelectorItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans[m]; break; } } if (objRoomRateSelection.RoomTypeCode == ucRatePlanSelectorItemControl.RoomRate.RoomTypeCode && objRoomRateSelection.RatePlanCode == ucRatePlanSelectorItemControl.RoomRate.RatePlanCode) ucRatePlanSelectorItemControl.Selected = true; } } } } } else { AvailabilityCalendar objAvailabilityCalendar = new AvailabilityCalendar(); for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++) { if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom) { objAvailabilityCalendar = objHotelAvailabilityRS.HotelRoomAvailInfos[i].AvailabilityCalendar; break; } } DateTime dtRateGridStartDate = (DateTime)Session["RateGridStartDate"]; string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"]; string strRoomTypeSelectorGridItemControlPath = ConfigurationManager.AppSettings["RoomTypeSelectorGridItemControl.ascx"]; string strRatePlanSelectorGridItemControlPath = ConfigurationManager.AppSettings["RatePlanSelectorGridItemControl.ascx"]; ucRoomRateSelectorGridControl.Clear(); ucRoomRateSelectorGridControl.ID = "RoomRateSelector"; ucRoomRateSelectorGridControl.RoomRefID = strSelectedRoom; ucRoomRateSelectorGridControl.HotelRoomAvailInfo = objHotelRoomAvailInfo; ucRoomRateSelectorGridControl.RoomOccupantSelection = objRoomOccupantSelection; ucRoomRateSelectorGridControl.GridTodayDate = TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date; ucRoomRateSelectorGridControl.GridStartDate = dtRateGridStartDate.Date; ucRoomRateSelectorGridControl.GridNumberDays = this.NumberDaysInRateGrid; for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath); ucRoomRateSelectorGridControl.AddRoomSelectorItem(ucRoomSelectorItemControl); ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom) ucRoomSelectorItemControl.Selected = true; else ucRoomSelectorItemControl.Selected = false; } if (objHotelRoomAvailInfo.RoomTypes != null && objAvailabilityCalendar.RoomRates != null) { for (int i = 0; i < objHotelRoomAvailInfo.RoomTypes.Length; i++) { bool bRatesAvailable = false; for (int j = 0; j < objAvailabilityCalendar.RoomRates.Length; j++) { if (objAvailabilityCalendar.RoomRates[j].RoomTypeCode == objHotelRoomAvailInfo.RoomTypes[i].Code) { if (!IsRoomRateDescriptionModel) { bRatesAvailable = true; break; } else { if (objAvailabilityCalendar.RoomRates[j].DescriptionStatus == RoomRateDescriptionStatus.Active) { bRatesAvailable = true; break; } for (int k = 0; k < objHotelRoomAvailInfo.RatePlans.Length; k++) { if (objHotelRoomAvailInfo.RatePlans[k].Code == objAvailabilityCalendar.RoomRates[j].RatePlanCode) { if (objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Negotiated || objHotelRoomAvailInfo.RatePlans[k].Type == RatePlanType.Consortia) { bRatesAvailable = true; } break; } } if (bRatesAvailable) break; } } } if (!bRatesAvailable) continue; RoomTypeSelectorGridItemControl ucRoomTypeSelectorGridItemControl = (RoomTypeSelectorGridItemControl)LoadControl(strRoomTypeSelectorGridItemControlPath); ucRoomRateSelectorGridControl.AddRoomTypeSelectorGridItem(ucRoomTypeSelectorGridItemControl); ucRoomTypeSelectorGridItemControl.ID = "RoomTypeSelectorItem" + objHotelRoomAvailInfo.RoomTypes[i].Code; ucRoomTypeSelectorGridItemControl.RoomRefID = strSelectedRoom; ucRoomTypeSelectorGridItemControl.GridTodayDate = ucRoomRateSelectorGridControl.GridTodayDate; ucRoomTypeSelectorGridItemControl.GridStartDate = ucRoomRateSelectorGridControl.GridStartDate; ucRoomTypeSelectorGridItemControl.GridNumberDays = ucRoomRateSelectorGridControl.GridNumberDays; ucRoomTypeSelectorGridItemControl.GridSelectedStartDate = objStayCriteriaSelection.ArrivalDate; ucRoomTypeSelectorGridItemControl.GridSelectedEndDate = objStayCriteriaSelection.DepartureDate.AddDays(-1); for (int j = 0; j < objHotelDescriptiveInfo.RoomTypes.Length; j++) { if (objHotelDescriptiveInfo.RoomTypes[j].Code == objHotelRoomAvailInfo.RoomTypes[i].Code) { ucRoomTypeSelectorGridItemControl.RoomType = objHotelDescriptiveInfo.RoomTypes[j]; break; } } ucRoomTypeSelectorGridItemControl.ShowMoreRates = false; for (int j = 0; j < objShowMoreRatesIndicators.Length; j++) { if (objShowMoreRatesIndicators[j].RoomRefID == ucRoomTypeSelectorGridItemControl.RoomRefID && objShowMoreRatesIndicators[j].RoomTypeCode == ucRoomTypeSelectorGridItemControl.RoomType.Code) { ucRoomTypeSelectorGridItemControl.ShowMoreRates = true; break; } } ucRoomTypeSelectorGridItemControl.Clear(); for (int k = 0; k < objAvailabilityCalendar.RoomRates.Length; k++) { if (objAvailabilityCalendar.RoomRates[k].RoomTypeCode == ucRoomTypeSelectorGridItemControl.RoomType.Code) { bool bListRatePlan = true; if (IsRoomRateDescriptionModel && objAvailabilityCalendar.RoomRates[k].DescriptionStatus == RoomRateDescriptionStatus.Inactive) { for (int l = 0; l < objHotelRoomAvailInfo.RatePlans.Length; l++) { if (objHotelRoomAvailInfo.RatePlans[l].Code == objAvailabilityCalendar.RoomRates[k].RatePlanCode) { if (objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Negotiated && objHotelRoomAvailInfo.RatePlans[l].Type != RatePlanType.Consortia) { bListRatePlan = false; } break; } } } if (!bListRatePlan) continue; RatePlanSelectorGridItemControl ucRatePlanSelectorGridItemControl = (RatePlanSelectorGridItemControl)LoadControl(strRatePlanSelectorGridItemControlPath); ucRoomTypeSelectorGridItemControl.AddRatePlanSelectorGridItem(ucRatePlanSelectorGridItemControl); ucRatePlanSelectorGridItemControl.ID = "RatePlanSelectorItem" + objAvailabilityCalendar.RoomRates[k].RatePlanCode; ucRatePlanSelectorGridItemControl.RoomRefID = strSelectedRoom; ucRatePlanSelectorGridItemControl.GridStartDate = ucRoomTypeSelectorGridItemControl.GridStartDate; ucRatePlanSelectorGridItemControl.GridNumberDays = ucRoomTypeSelectorGridItemControl.GridNumberDays; ucRatePlanSelectorGridItemControl.GridRoomRate = objAvailabilityCalendar.RoomRates[k]; ucRatePlanSelectorGridItemControl.GridRoomRateStartDate = objAvailabilityCalendar.StartDate.Date; ucRatePlanSelectorGridItemControl.ArrivalDate = objStayCriteriaSelection.ArrivalDate.Date; ucRatePlanSelectorGridItemControl.TotalStayNights = ((TimeSpan)(objStayCriteriaSelection.DepartureDate.Date.Subtract(objStayCriteriaSelection.ArrivalDate.Date))).Days; ucRatePlanSelectorGridItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes; ucRatePlanSelectorGridItemControl.Available = false; ucRatePlanSelectorGridItemControl.Selected = false; for (int m = 0; m < objHotelRoomAvailInfo.RatePlans.Length; m++) { if (objHotelRoomAvailInfo.RatePlans[m].Code == objAvailabilityCalendar.RoomRates[k].RatePlanCode) { ucRatePlanSelectorGridItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans[m]; break; } } for (int m = 0; m < objHotelRoomAvailInfo.RoomRates.Length; m++) { if (objHotelRoomAvailInfo.RoomRates[m].RoomTypeCode == objAvailabilityCalendar.RoomRates[k].RoomTypeCode && objHotelRoomAvailInfo.RoomRates[m].RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode) { ucRatePlanSelectorGridItemControl.Available = true; ucRatePlanSelectorGridItemControl.RoomRate = objHotelRoomAvailInfo.RoomRates[m]; break; } } for (int m = 0; m < objAvailabilityCalendar.RatePlans.Length; m++) { if (objAvailabilityCalendar.RatePlans[m].RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode) { ucRatePlanSelectorGridItemControl.GridRatePlan = objAvailabilityCalendar.RatePlans[m]; break; } } if (objRoomRateSelection.RoomTypeCode == objAvailabilityCalendar.RoomRates[k].RoomTypeCode && objRoomRateSelection.RatePlanCode == objAvailabilityCalendar.RoomRates[k].RatePlanCode) ucRatePlanSelectorGridItemControl.Selected = true; } } } } } return; }
private HotelRoomAvailInfo GetHotelRoomAvailInfo(HotelRoomAvailInfo[] objHotelRoomAvailInfos, string strRoomRefID) { for (int i = 0; i < objHotelRoomAvailInfos.Length; i++) { if (objHotelRoomAvailInfos[i].SegmentRefID == strRoomRefID) return objHotelRoomAvailInfos[i]; } return null; }
private void ConfigureRoomRateSelectorControl(RoomDetailSelectorControl ucRoomDetailSelectorControl, HotelRoomAvailInfo objHotelRoomAvailInfo, HotelDescriptiveInfo objHotelDescriptiveInfo) { // Selected Mode var selectedRoomRate = (from rrs in RoomRateSelections where rrs.RoomRefID == ucRoomDetailSelectorControl.RoomRefID select rrs).FirstOrDefault(); // Edit Mode if (Step == BookingSteps.SelectRoomDetail && CurrentRoomRefID == ucRoomDetailSelectorControl.RoomRefID && ucRoomDetailSelectorControl.Step == RoomDetailSelectionStep.SelectRoomType) { List<string> roomTypesForFilter = new List<string>(); foreach (var roomType in objHotelRoomAvailInfo.RoomTypes) { bool bRatesAvailable = false; HotelAvailRoomType localRoomType = roomType; var roomRates = objHotelRoomAvailInfo.RoomRates.Where(item => item.RoomTypeCode == localRoomType.Code); if (roomRates.Count() <= 0) continue; foreach (HotelAvailRoomRate roomRate in roomRates) { var localRoomRate = roomRate; if (!IsRoomRateDescriptionModel || localRoomRate.DescriptionStatus == RoomRateDescriptionStatus.Active) { bRatesAvailable = true; break; } var ratePlans = objHotelRoomAvailInfo.RatePlans.Where(ratePlan => ratePlan.Code == localRoomRate.RatePlanCode && (ratePlan.Type == RatePlanType.Negotiated || ratePlan.Type == RatePlanType.Consortia)); if (ratePlans.Count() > 0) bRatesAvailable = true; } if (!bRatesAvailable) continue; HtmlGenericControl rtPanelWrapper = new HtmlGenericControl("div"); rtPanelWrapper.Attributes.Add("class", "mm_roomrate_info mm_background_info"); HtmlGenericControl rtPanel = new HtmlGenericControl("div"); rtPanel.Attributes.Add("class", "mm_roomrate_content mm_text_info"); HtmlGenericControl rtName = new HtmlGenericControl("span"); rtName.Attributes.Add("class", "mm_text_x_strong"); rtName.InnerText = roomType.Name; rtPanelWrapper.Controls.Add(rtPanel); rtPanel.Controls.Add(rtName); ucRoomDetailSelectorControl.AddRoomTypeControl(rtPanelWrapper); foreach (HotelAvailRoomRate roomRate in roomRates) { var localRoomRate = roomRate; if (IsRoomRateDescriptionModel && localRoomRate.DescriptionStatus == RoomRateDescriptionStatus.Inactive) { HotelAvailRoomRate cpRoomRate = localRoomRate; var ratePlans = from ratePlan in objHotelRoomAvailInfo.RatePlans where ratePlan.Code == cpRoomRate.RatePlanCode && ratePlan.Type != RatePlanType.Negotiated && ratePlan.Type != RatePlanType.Consortia select ratePlan; if (ratePlans.Count() > 0) continue; } RatePlanSelectorItemControl ucRatePlanSelectorItemControl = (RatePlanSelectorItemControl)LoadControl(strRatePlanSelectorItemControlPath); ucRatePlanSelectorItemControl.Mode = (CurrentRoomDetailStep == RoomDetailSelectionStep.SelectRoomType ? SelectionMode.Edit : SelectionMode.Selected); ucRatePlanSelectorItemControl.ID = string.Format("{0}_{1}_{2}_{3}", "RatePlanSelectorItem" , ucRoomDetailSelectorControl.RoomRefID , localRoomRate.RoomTypeCode , RemoveSpecialCharFromString(localRoomRate.RatePlanCode)); ucRatePlanSelectorItemControl.RoomRefID = ucRoomDetailSelectorControl.RoomRefID; ucRatePlanSelectorItemControl.RoomRate = localRoomRate; ucRatePlanSelectorItemControl.RoomTypeDescription = objHotelDescriptiveInfo.RoomTypes.FirstOrDefault(item => item.Code == localRoomType.Code); ucRatePlanSelectorItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes; ucRatePlanSelectorItemControl.Selected = false; ucRatePlanSelectorItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans.FirstOrDefault(item => item.Code == localRoomRate.RatePlanCode); ucRatePlanSelectorItemControl.IsShowPhotoLink = !(Step == BookingSteps.Confirmed || Step == BookingSteps.GuestInfo); ucRatePlanSelectorItemControl.RoomRateSelected += ucRoomDetailSelectorControl_RatePlanSelected; ucRoomDetailSelectorControl.AddRatePlanSelectorItem(ucRatePlanSelectorItemControl); if (!roomTypesForFilter.Contains(roomRate.RoomTypeCode) && !string.IsNullOrWhiteSpace(roomRate.RoomTypeCode)) roomTypesForFilter.Add(roomRate.RoomTypeCode); } } if (!bShowRoomTypePhoto) ucRemoteContentContainer.Src += string.Format("?show={0}", string.Join(",", roomTypesForFilter)); } else if (selectedRoomRate != null && !string.IsNullOrWhiteSpace(selectedRoomRate.RatePlanCode)) { HotelAvailRoomRate roomRate = (from item in objHotelRoomAvailInfo.RoomRates where item.RoomTypeCode == selectedRoomRate.RoomTypeCode && item.RatePlanCode == selectedRoomRate.RatePlanCode select item).FirstOrDefault(); RatePlanSelectorItemControl ucSelectedRatePlanSelectorItemControl = (RatePlanSelectorItemControl)LoadControl(strRatePlanSelectorItemControlPath); ucSelectedRatePlanSelectorItemControl.Mode = (this.bIsConfirmed ? SelectionMode.NonModifiable : SelectionMode.Selected); ucSelectedRatePlanSelectorItemControl.ID = string.Format("{0}_{1}_{2}_{3}" , "SelectedRatePlanSelectorItem" , ucRoomDetailSelectorControl.RoomRefID , selectedRoomRate.RoomTypeCode , RemoveSpecialCharFromString(selectedRoomRate.RatePlanCode)); ucSelectedRatePlanSelectorItemControl.RoomRefID = selectedRoomRate.RoomRefID; ucSelectedRatePlanSelectorItemControl.RoomRate = roomRate; ucSelectedRatePlanSelectorItemControl.RoomTypeDescription = objHotelDescriptiveInfo.RoomTypes.FirstOrDefault(item => item.Code == selectedRoomRate.RoomTypeCode); ucSelectedRatePlanSelectorItemControl.CreditCardCodes = objHotelDescriptiveInfo.CreditCardCodes; ucSelectedRatePlanSelectorItemControl.RatePlan = objHotelRoomAvailInfo.RatePlans.FirstOrDefault(item => item.Code == selectedRoomRate.RatePlanCode); ucSelectedRatePlanSelectorItemControl.IsShowPhotoLink = !(Step == BookingSteps.Confirmed || Step == BookingSteps.GuestInfo); ucRoomDetailSelectorControl.AddSelectedRoomRate(ucSelectedRatePlanSelectorItemControl); } }
private void ConfigureRoomExtra(RoomDetailSelectorControl ucRoomDetailSelectorControl, HotelRoomAvailInfo objHotelRoomAvailInfo, HotelDescriptiveInfo objHotelDescriptiveInfo) { // Selected Room Rate var selectedRoomRate = (from rrs in RoomRateSelections where rrs.RoomRefID == ucRoomDetailSelectorControl.RoomRefID select rrs).FirstOrDefault(); if (selectedRoomRate == null || string.IsNullOrWhiteSpace(selectedRoomRate.RatePlanCode)) return; var roomRateInfo = (from item in objHotelRoomAvailInfo.RatePlans where item.Code == selectedRoomRate.RatePlanCode select item).FirstOrDefault(); var packages = from package in roomRateInfo.Packages where package.RoomTypeCode.Equals(string.Empty) || package.RoomTypeCode == selectedRoomRate.RoomTypeCode select package; var roomOccupantSelection = StayCriteriaSelection.RoomOccupantSelections.FirstOrDefault(room => room.RoomRefID == ucRoomDetailSelectorControl.RoomRefID); var selectedExtras = from extra in AddOnPackageSelections where extra.RoomRefID == ucRoomDetailSelectorControl.RoomRefID select extra; List<string> packageForShowingInRemoteContent = new List<string>(); //Render selected Extras if (selectedExtras.Count() > 0) { foreach (var extra in selectedExtras) { var localExtra = extra; var selectedPackage = packages.Where(pkg => pkg.Code == localExtra.PackageCode).FirstOrDefault(); AddOnPackageSelectorItemControl ucAddOnPackageSelectorItemControl = (AddOnPackageSelectorItemControl)LoadControl(strAddOnPackageSelectorItemControlPath); ucAddOnPackageSelectorItemControl.ID = string.Format("{0}_{1}_{2}_selected" , "AddOnPackageSelectorItemControl" , ucRoomDetailSelectorControl.RoomRefID , RemoveSpecialCharFromString(selectedPackage.Code)); ucAddOnPackageSelectorItemControl.IsItemRemovable = (!bIsConfirmed && Step != BookingSteps.GuestInfo); ucAddOnPackageSelectorItemControl.RoomRefID = ucRoomDetailSelectorControl.RoomRefID; ucAddOnPackageSelectorItemControl.NumberAdults = roomOccupantSelection.NumberAdults; ucAddOnPackageSelectorItemControl.NumberStayNights = (StayCriteriaSelection.DepartureDate - StayCriteriaSelection.ArrivalDate).Days; ucAddOnPackageSelectorItemControl.PackageDescription = objHotelDescriptiveInfo.Packages.FirstOrDefault(pkg => pkg.Code == selectedPackage.Code); ucAddOnPackageSelectorItemControl.PackageRate = packages.FirstOrDefault(pkg => pkg.Code == selectedPackage.Code); ucAddOnPackageSelectorItemControl.PackageQuantity = localExtra.Quantity; ucAddOnPackageSelectorItemControl.Selected = true; ucRoomDetailSelectorControl.AddSelectedRoomExtraItemControl(ucAddOnPackageSelectorItemControl); } } //Render available extras if (CurrentRoomRefID == ucRoomDetailSelectorControl.RoomRefID && ucRoomDetailSelectorControl.Step == RoomDetailSelectionStep.SelectExtra) { foreach (HotelAvailPackage package in packages) { var localPackage = package; if (!packageForShowingInRemoteContent.Contains(localPackage.Code)) packageForShowingInRemoteContent.Add(localPackage.Code); if (selectedExtras.Count() > 0) { HotelAvailPackage cpPackage = package; var selectedAddOn = selectedExtras.Where(addOn => addOn.RoomRefID == CurrentRoomRefID && addOn.PackageCode == cpPackage.Code); if (selectedAddOn.Count() > 0) continue; } AddOnPackageSelectorItemControl ucAddOnPackageSelectorItemControl = (AddOnPackageSelectorItemControl)LoadControl(strAddOnPackageSelectorItemControlPath); ucAddOnPackageSelectorItemControl.ID = string.Format("{0}_{1}_{2}_available" , "AddOnPackageSelectorItemControl" , ucRoomDetailSelectorControl.RoomRefID , RemoveSpecialCharFromString(package.Code)); ucAddOnPackageSelectorItemControl.RoomRefID = ucRoomDetailSelectorControl.RoomRefID; ucAddOnPackageSelectorItemControl.NumberAdults = roomOccupantSelection.NumberAdults; ucAddOnPackageSelectorItemControl.NumberStayNights = (StayCriteriaSelection.DepartureDate - StayCriteriaSelection.ArrivalDate).Days; ucAddOnPackageSelectorItemControl.PackageDescription = objHotelDescriptiveInfo.Packages.FirstOrDefault(pkg => pkg.Code == localPackage.Code); ucAddOnPackageSelectorItemControl.PackageRate = packages.FirstOrDefault(pkg => pkg.Code == localPackage.Code); ucAddOnPackageSelectorItemControl.PackageQuantity = 0; ucAddOnPackageSelectorItemControl.Selected = false; ucRoomDetailSelectorControl.AddRoomExtraItemControl(ucAddOnPackageSelectorItemControl); } } if (Step == BookingSteps.SelectRoomDetail && CurrentRoomDetailStep == RoomDetailSelectionStep.SelectExtra && !bShowRoomTypePhoto) ucRemoteContentContainer.Src += string.Format("?show={0}", string.Join(",", packageForShowingInRemoteContent)); }
private void ConfigureBookingSummaryControl() { HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"]; HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"]; StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection]; RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"]; AddOnPackageSelection[] objAddOnPackageSelections = (AddOnPackageSelection[])Session["AddOnPackageSelections"]; HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo(); if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0) { objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0]; } HotelPricing[] objHotelPricings = HotelPricingHelper.GetHotelPricing(objStayCriteriaSelection, objRoomRateSelections, objAddOnPackageSelections, objHotelAvailabilityRS.HotelRoomAvailInfos, objHotelDescriptiveInfo.CurrencyCode); int intNumberStayNights = ((TimeSpan)objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate)).Days; string strBookingSummaryRoomItemControlPath = ConfigurationManager.AppSettings["BookingSummaryRoomItemControl.ascx"]; string strBookingSummaryAddOnPackageItemControlPath = ConfigurationManager.AppSettings["BookingSummaryAddOnPackageItemControl.ascx"]; ucBookingSummaryControl.Clear(); ucBookingSummaryControl.ID = "BookingSummaryControl"; ucBookingSummaryControl.HotelDescriptiveInfo = objHotelDescriptiveInfo; ucBookingSummaryControl.StayCriteriaSelection = objStayCriteriaSelection; ucBookingSummaryControl.GuestDetailsEntryInfo = null; ucBookingSummaryControl.HotelPricings = objHotelPricings; ucBookingSummaryControl.PaymentReceipt = null; ucBookingSummaryControl.MasterConfirmationNumber = ""; for (int ri = 0; ri < objStayCriteriaSelection.RoomOccupantSelections.Length; ri++) { RoomRateSelection objRoomRateSelection = new RoomRateSelection(); for (int i = 0; i < objRoomRateSelections.Length; i++) { if (objRoomRateSelections[i].RoomRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objRoomRateSelection = objRoomRateSelections[i]; break; } } HotelDescRoomType objHotelDescRoomType = new HotelDescRoomType(); for (int i = 0; i < objHotelDescriptiveInfo.RoomTypes.Length; i++) { if (objHotelDescriptiveInfo.RoomTypes[i].Code == objRoomRateSelection.RoomTypeCode) { objHotelDescRoomType = objHotelDescriptiveInfo.RoomTypes[i]; break; } } HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo(); for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++) { if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i]; break; } } HotelAvailRatePlan objHotelAvailRatePlan = new HotelAvailRatePlan(); for (int i = 0; i < objHotelRoomAvailInfo.RatePlans.Length; i++) { if (objHotelRoomAvailInfo.RatePlans[i].Code == objRoomRateSelection.RatePlanCode) { objHotelAvailRatePlan = objHotelRoomAvailInfo.RatePlans[i]; break; } } HotelAvailRoomRate objHotelAvailRoomRate = new HotelAvailRoomRate(); for (int i = 0; i < objHotelRoomAvailInfo.RoomRates.Length; i++) { if (objHotelRoomAvailInfo.RoomRates[i].RoomTypeCode == objRoomRateSelection.RoomTypeCode && objHotelRoomAvailInfo.RoomRates[i].RatePlanCode == objRoomRateSelection.RatePlanCode) { objHotelAvailRoomRate = objHotelRoomAvailInfo.RoomRates[i]; break; } } HotelPricing objHotelPricing = new HotelPricing(); for (int i = 0; i < objHotelPricings.Length; i++) { if (objHotelPricings[i].SegmentRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objHotelPricing = objHotelPricings[i]; break; } } BookingSummaryRoomItemControl ucBookingSummaryRoomItemControl = (BookingSummaryRoomItemControl)LoadControl(strBookingSummaryRoomItemControlPath); ucBookingSummaryControl.AddRoomSummaryItem(ucBookingSummaryRoomItemControl); ucBookingSummaryRoomItemControl.Clear(); ucBookingSummaryRoomItemControl.ID = "BookingSummaryRoomItem" + ((int)(ri + 1)).ToString(); ucBookingSummaryRoomItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID; ucBookingSummaryRoomItemControl.RoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[ri]; ucBookingSummaryRoomItemControl.RoomType = objHotelDescRoomType; ucBookingSummaryRoomItemControl.RatePlan = objHotelAvailRatePlan; ucBookingSummaryRoomItemControl.RoomRate = objHotelAvailRoomRate; ucBookingSummaryRoomItemControl.HotelPricing = objHotelPricing; ucBookingSummaryRoomItemControl.ConfirmationNumber = ""; for (int pi = 0; pi < objAddOnPackageSelections.Length; pi++) { if (objAddOnPackageSelections[pi].RoomRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { HotelDescPackage objHotelDescPackage = new HotelDescPackage(); for (int i = 0; i < objHotelDescriptiveInfo.Packages.Length; i++) { if (objHotelDescriptiveInfo.Packages[i].Code == objAddOnPackageSelections[pi].PackageCode) { objHotelDescPackage = objHotelDescriptiveInfo.Packages[i]; break; } } HotelAvailPackage objHotelAvailPackage = new HotelAvailPackage(); for (int i = 0; i < objHotelAvailRatePlan.Packages.Length; i++) { if (objHotelAvailRatePlan.Packages[i].Code == objAddOnPackageSelections[pi].PackageCode) { if (objHotelAvailRatePlan.Packages[i].RoomTypeCode == "" || objHotelAvailRatePlan.Packages[i].RoomTypeCode == objRoomRateSelection.RoomTypeCode) { objHotelAvailPackage = objHotelAvailRatePlan.Packages[i]; break; } } } BookingSummaryAddOnPackageItemControl ucBookingSummaryAddOnPackageItemControl = (BookingSummaryAddOnPackageItemControl)LoadControl(strBookingSummaryAddOnPackageItemControlPath); ucBookingSummaryRoomItemControl.AddAddOnPackageSummaryItem(ucBookingSummaryAddOnPackageItemControl); ucBookingSummaryAddOnPackageItemControl.ID = "BookingSummaryAddOnPackageItem" + ((int)(pi + 1)).ToString(); ucBookingSummaryAddOnPackageItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID; ucBookingSummaryAddOnPackageItemControl.NumberStayNights = intNumberStayNights; ucBookingSummaryAddOnPackageItemControl.PackageQuantity = objAddOnPackageSelections[pi].Quantity; ucBookingSummaryAddOnPackageItemControl.PackageDescription = objHotelDescPackage; ucBookingSummaryAddOnPackageItemControl.PackageRate = objHotelAvailPackage; } } } return; }
private void ConfigureAddOnPackageSelectorControl() { string strSelectedRoom = (string)Session["SelectedRoom"]; HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"]; HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"]; StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection]; RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"]; AddOnPackageSelection[] objAddOnPackageSelections = (AddOnPackageSelection[])Session["AddOnPackageSelections"]; RoomOccupantSelection objRoomOccupantSelection = new RoomOccupantSelection(); for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom) { objRoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[i]; break; } } RoomRateSelection objRoomRateSelection = new RoomRateSelection(); for (int i = 0; i < objRoomRateSelections.Length; i++) { if (objRoomRateSelections[i].RoomRefID == strSelectedRoom) { objRoomRateSelection = objRoomRateSelections[i]; break; } } HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo(); for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++) { if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == strSelectedRoom) { objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i]; break; } } List<AddOnPackageSelection> lAddOnPackageSelections = new List<AddOnPackageSelection>(); for (int i = 0; i < objAddOnPackageSelections.Length; i++) { if (objAddOnPackageSelections[i].RoomRefID == strSelectedRoom) { lAddOnPackageSelections.Add(objAddOnPackageSelections[i]); } } HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo(); if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0) { objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0]; } int intNumberStayNights = ((TimeSpan)objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate)).Days; string strRoomSelectorItemControlPath = ConfigurationManager.AppSettings["RoomSelectorItemControl.ascx"]; string strAddOnPackageSelectorItemControlPath = ConfigurationManager.AppSettings["AddOnPackageSelectorItemControl.ascx"]; ucAddOnPackageSelectorControl.Clear(); ucAddOnPackageSelectorControl.ID = "AddOnPackageSelector"; ucAddOnPackageSelectorControl.RoomRefID = strSelectedRoom; ucAddOnPackageSelectorControl.RoomOccupantSelection = objRoomOccupantSelection; for (int i = 0; i < objStayCriteriaSelection.RoomOccupantSelections.Length; i++) { RoomSelectorItemControl ucRoomSelectorItemControl = (RoomSelectorItemControl)LoadControl(strRoomSelectorItemControlPath); ucAddOnPackageSelectorControl.AddRoomSelectorItem(ucRoomSelectorItemControl); ucRoomSelectorItemControl.ID = "RoomSelectorItem" + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; ucRoomSelectorItemControl.RoomRefIDMenuText = (String)GetGlobalResourceObject("SiteResources", "RoomSelectorMenuText") + " " + objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID; if (objStayCriteriaSelection.RoomOccupantSelections[i].RoomRefID == strSelectedRoom) ucRoomSelectorItemControl.Selected = true; else ucRoomSelectorItemControl.Selected = false; } for (int i = 0; i < objHotelRoomAvailInfo.RatePlans.Length; i++) { if (objHotelRoomAvailInfo.RatePlans[i].Code == objRoomRateSelection.RatePlanCode) { for (int j = 0; j < objHotelRoomAvailInfo.RatePlans[i].Packages.Length; j++) { if (objHotelRoomAvailInfo.RatePlans[i].Packages[j].RoomTypeCode == "" || objHotelRoomAvailInfo.RatePlans[i].Packages[j].RoomTypeCode == objRoomRateSelection.RoomTypeCode) { AddOnPackageSelectorItemControl ucAddOnPackageSelectorItemControl = (AddOnPackageSelectorItemControl)LoadControl(strAddOnPackageSelectorItemControlPath); ucAddOnPackageSelectorControl.AddAddOnPackageSelectorItem(ucAddOnPackageSelectorItemControl); ucAddOnPackageSelectorItemControl.ID = "AddOnPackageSelectorItemControl" + ((int)(j + 1)).ToString(); ucAddOnPackageSelectorItemControl.RoomRefID = strSelectedRoom; ucAddOnPackageSelectorItemControl.NumberAdults = objRoomOccupantSelection.NumberAdults; ucAddOnPackageSelectorItemControl.NumberStayNights = intNumberStayNights; for (int k = 0; k < objHotelDescriptiveInfo.Packages.Length; k++) { if (objHotelDescriptiveInfo.Packages[k].Code == objHotelRoomAvailInfo.RatePlans[i].Packages[j].Code) { ucAddOnPackageSelectorItemControl.PackageDescription = objHotelDescriptiveInfo.Packages[k]; break; } } ucAddOnPackageSelectorItemControl.PackageRate = objHotelRoomAvailInfo.RatePlans[i].Packages[j]; ucAddOnPackageSelectorItemControl.PackageQuantity = 0; ucAddOnPackageSelectorItemControl.Selected = false; for (int k = 0; k < objAddOnPackageSelections.Length; k++) { if (objAddOnPackageSelections[k].RoomRefID == strSelectedRoom && objAddOnPackageSelections[k].PackageCode == objHotelRoomAvailInfo.RatePlans[i].Packages[j].Code) { ucAddOnPackageSelectorItemControl.PackageQuantity = objAddOnPackageSelections[k].Quantity; ucAddOnPackageSelectorItemControl.Selected = true; break; } } } } break; } } return; }
private void ConfigureBookingSummaryControl() { HotelAvailabilityRS objHotelAvailabilityRS = (HotelAvailabilityRS)Session["HotelAvailabilityRS"]; HotelDescriptiveInfoRS objHotelDescriptiveInfoRS = (HotelDescriptiveInfoRS)Session["HotelDescriptiveInfoRS"]; HotelBookingRS objHotelBookingRS = (HotelBookingRS)Session["HotelBookingRS"]; StayCriteriaSelection objStayCriteriaSelection = (StayCriteriaSelection)Session[Constants.Sessions.StayCriteriaSelection]; RoomRateSelection[] objRoomRateSelections = (RoomRateSelection[])Session["RoomRateSelections"]; AddOnPackageSelection[] objAddOnPackageSelections = (AddOnPackageSelection[])Session["AddOnPackageSelections"]; GuestDetailsEntryInfo objGuestDetailsEntryInfo = (GuestDetailsEntryInfo)Session["GuestDetailsEntryInfo"]; PaymentGatewayInfo objPaymentGatewayInfo = (PaymentGatewayInfo)Session[Constants.Sessions.PaymentGatewayInfo]; HotelBookingPaymentAllocation[] objHotelBookingPaymentAllocations = (HotelBookingPaymentAllocation[])Session[Constants.Sessions.HotelBookingPaymentAllocations]; HotelPaymentRS objHotelPaymentRS = (HotelPaymentRS)Session["HotelPaymentRS"]; HotelDescriptiveInfo objHotelDescriptiveInfo = new HotelDescriptiveInfo(); if (objHotelDescriptiveInfoRS.HotelDescriptiveInfos.Length != 0) { objHotelDescriptiveInfo = objHotelDescriptiveInfoRS.HotelDescriptiveInfos[0]; } HotelPricing[] objHotelPricings = HotelPricingHelper.GetHotelPricing(objStayCriteriaSelection, objRoomRateSelections, objAddOnPackageSelections, objHotelAvailabilityRS.HotelRoomAvailInfos, objHotelDescriptiveInfo.CurrencyCode); OnlinePaymentReceipt objOnlinePaymentReceipt = null; decimal decTotalPaymentCardPayment = WBSPGHelper.GetTotalPaymentCardPayment(objHotelBookingPaymentAllocations); if (objPaymentGatewayInfo != null && decTotalPaymentCardPayment != 0) { objOnlinePaymentReceipt = new OnlinePaymentReceipt(); objOnlinePaymentReceipt.PaymentCard = objHotelPaymentRS.PaymentCard; objOnlinePaymentReceipt.PaymentGatewayCardType = objHotelPaymentRS.PaymentGatewayCardType; objOnlinePaymentReceipt.PaymentDateTime = TZNet.ToLocal(WbsUiHelper.GetTimeZone(objStayCriteriaSelection.HotelCode), DateTime.UtcNow).Date; objOnlinePaymentReceipt.AuthCode = objHotelPaymentRS.PaymentAuthCode; objOnlinePaymentReceipt.TransRefID = objHotelPaymentRS.PaymentTransRefID; objOnlinePaymentReceipt.Amount = decTotalPaymentCardPayment; objOnlinePaymentReceipt.CurrencyCode = objHotelDescriptiveInfo.CurrencyCode; } string strMasterConfirmationNumber = ""; if (objHotelBookingRS.Segments.Length != 0) { strMasterConfirmationNumber = objHotelBookingRS.Segments[0].MasterConfirmationNumber; } int intNumberStayNights = ((TimeSpan)objStayCriteriaSelection.DepartureDate.Subtract(objStayCriteriaSelection.ArrivalDate)).Days; string strBookingSummaryRoomItemControlPath = ConfigurationManager.AppSettings["BookingSummaryRoomItemControl.ascx"]; string strBookingSummaryAddOnPackageItemControlPath = ConfigurationManager.AppSettings["BookingSummaryAddOnPackageItemControl.ascx"]; ucBookingSummaryControl.Clear(); ucBookingSummaryControl.ID = "BookingSummaryControl"; ucBookingSummaryControl.HotelDescriptiveInfo = objHotelDescriptiveInfo; ucBookingSummaryControl.StayCriteriaSelection = objStayCriteriaSelection; ucBookingSummaryControl.GuestDetailsEntryInfo = objGuestDetailsEntryInfo; ucBookingSummaryControl.HotelPricings = objHotelPricings; ucBookingSummaryControl.PaymentReceipt = objOnlinePaymentReceipt; ucBookingSummaryControl.MasterConfirmationNumber = strMasterConfirmationNumber; for (int ri = 0; ri < objStayCriteriaSelection.RoomOccupantSelections.Length; ri++) { RoomRateSelection objRoomRateSelection = new RoomRateSelection(); for (int i = 0; i < objRoomRateSelections.Length; i++) { if (objRoomRateSelections[i].RoomRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objRoomRateSelection = objRoomRateSelections[i]; break; } } HotelDescRoomType objHotelDescRoomType = new HotelDescRoomType(); for (int i = 0; i < objHotelDescriptiveInfo.RoomTypes.Length; i++) { if (objHotelDescriptiveInfo.RoomTypes[i].Code == objRoomRateSelection.RoomTypeCode) { objHotelDescRoomType = objHotelDescriptiveInfo.RoomTypes[i]; break; } } HotelRoomAvailInfo objHotelRoomAvailInfo = new HotelRoomAvailInfo(); for (int i = 0; i < objHotelAvailabilityRS.HotelRoomAvailInfos.Length; i++) { if (objHotelAvailabilityRS.HotelRoomAvailInfos[i].SegmentRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objHotelRoomAvailInfo = objHotelAvailabilityRS.HotelRoomAvailInfos[i]; break; } } HotelAvailRatePlan objHotelAvailRatePlan = new HotelAvailRatePlan(); for (int i = 0; i < objHotelRoomAvailInfo.RatePlans.Length; i++) { if (objHotelRoomAvailInfo.RatePlans[i].Code == objRoomRateSelection.RatePlanCode) { objHotelAvailRatePlan = objHotelRoomAvailInfo.RatePlans[i]; break; } } HotelAvailRoomRate objHotelAvailRoomRate = new HotelAvailRoomRate(); for (int i = 0; i < objHotelRoomAvailInfo.RoomRates.Length; i++) { if (objHotelRoomAvailInfo.RoomRates[i].RoomTypeCode == objRoomRateSelection.RoomTypeCode && objHotelRoomAvailInfo.RoomRates[i].RatePlanCode == objRoomRateSelection.RatePlanCode) { objHotelAvailRoomRate = objHotelRoomAvailInfo.RoomRates[i]; break; } } HotelPricing objHotelPricing = new HotelPricing(); for (int i = 0; i < objHotelPricings.Length; i++) { if (objHotelPricings[i].SegmentRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { objHotelPricing = objHotelPricings[i]; break; } } BookingSummaryRoomItemControl ucBookingSummaryRoomItemControl = (BookingSummaryRoomItemControl)LoadControl(strBookingSummaryRoomItemControlPath); ucBookingSummaryControl.AddRoomSummaryItem(ucBookingSummaryRoomItemControl); ucBookingSummaryRoomItemControl.Clear(); ucBookingSummaryRoomItemControl.ID = "BookingSummaryRoomItem" + ((int)(ri + 1)).ToString(); ucBookingSummaryRoomItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID; ucBookingSummaryRoomItemControl.RoomOccupantSelection = objStayCriteriaSelection.RoomOccupantSelections[ri]; ucBookingSummaryRoomItemControl.RoomType = objHotelDescRoomType; ucBookingSummaryRoomItemControl.RatePlan = objHotelAvailRatePlan; ucBookingSummaryRoomItemControl.RoomRate = objHotelAvailRoomRate; ucBookingSummaryRoomItemControl.HotelPricing = objHotelPricing; ucBookingSummaryRoomItemControl.ConfirmationNumber = ""; for (int pi = 0; pi < objAddOnPackageSelections.Length; pi++) { if (objAddOnPackageSelections[pi].RoomRefID == objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID) { HotelDescPackage objHotelDescPackage = new HotelDescPackage(); for (int i = 0; i < objHotelDescriptiveInfo.Packages.Length; i++) { if (objHotelDescriptiveInfo.Packages[i].Code == objAddOnPackageSelections[pi].PackageCode) { objHotelDescPackage = objHotelDescriptiveInfo.Packages[i]; break; } } HotelAvailPackage objHotelAvailPackage = new HotelAvailPackage(); for (int i = 0; i < objHotelAvailRatePlan.Packages.Length; i++) { if (objHotelAvailRatePlan.Packages[i].Code == objAddOnPackageSelections[pi].PackageCode) { if (objHotelAvailRatePlan.Packages[i].RoomTypeCode == "" || objHotelAvailRatePlan.Packages[i].RoomTypeCode == objRoomRateSelection.RoomTypeCode) { objHotelAvailPackage = objHotelAvailRatePlan.Packages[i]; break; } } } BookingSummaryAddOnPackageItemControl ucBookingSummaryAddOnPackageItemControl = (BookingSummaryAddOnPackageItemControl)LoadControl(strBookingSummaryAddOnPackageItemControlPath); ucBookingSummaryRoomItemControl.AddAddOnPackageSummaryItem(ucBookingSummaryAddOnPackageItemControl); ucBookingSummaryAddOnPackageItemControl.ID = "BookingSummaryAddOnPackageItem" + ((int)(pi + 1)).ToString(); ucBookingSummaryAddOnPackageItemControl.RoomRefID = objStayCriteriaSelection.RoomOccupantSelections[ri].RoomRefID; ucBookingSummaryAddOnPackageItemControl.NumberStayNights = intNumberStayNights; ucBookingSummaryAddOnPackageItemControl.PackageQuantity = objAddOnPackageSelections[pi].Quantity; ucBookingSummaryAddOnPackageItemControl.PackageDescription = objHotelDescPackage; ucBookingSummaryAddOnPackageItemControl.PackageRate = objHotelAvailPackage; } } } return; }
private static HotelAvailRoomRate GetHotelAvailRoomRate(RoomRateSelection objRoomRateSelection, HotelRoomAvailInfo[] objHotelRoomAvailInfos) { for (int i = 0; i < objHotelRoomAvailInfos.Length; i++) { if (objHotelRoomAvailInfos[i].SegmentRefID == objRoomRateSelection.RoomRefID) { for (int j = 0; j < objHotelRoomAvailInfos[i].RoomRates.Length; j++) { if (objHotelRoomAvailInfos[i].RoomRates[j].RoomTypeCode == objRoomRateSelection.RoomTypeCode && objHotelRoomAvailInfos[i].RoomRates[j].RatePlanCode == objRoomRateSelection.RatePlanCode) { return objHotelRoomAvailInfos[i].RoomRates[j]; } } } } return null; }
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; }