コード例 #1
0
    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;
    }
コード例 #2
0
    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;
    }
コード例 #3
0
    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;
    }
コード例 #4
0
    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;
    }
コード例 #5
0
    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;
    }
コード例 #6
0
    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;
    }
コード例 #9
0
    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;
    }