/// <summary> /// Get rates amount /// </summary> /// <param name="dailyRate">daily RateCache</param> /// <param name="numberOfGuests">the number of guests for the rate plan.</param> /// <returns>RateAmountMessageType</returns> private RateAmountMessageType GetRatesAmount(RateCache dailyRate, int numberOfGuests) { if (dailyRate.MinStay == 0) { Logger.LogError(string.Format("Minimum booking duration is invalid. It is set as 0 for room type id {0}, date {1} ", dailyRate.ProductId, dailyRate.Date)); } var rateAmountMessage = new RateAmountMessageType(); rateAmountMessage.StatusApplicationControl = new StatusApplicationControlType(); rateAmountMessage.StatusApplicationControl.InvTypeCode = dailyRate.RoomTypeId.ToString(); rateAmountMessage.StatusApplicationControl.RatePlanCode = dailyRate.RatePlanId.ToString(); rateAmountMessage.StatusApplicationControl.Start = dailyRate.Date.ToString(Formats.UNIVERSAL_SHORT_DATE); rateAmountMessage.StatusApplicationControl.End = dailyRate.Date.ToString(Formats.UNIVERSAL_SHORT_DATE); rateAmountMessage.Rates = new RateAmountMessageTypeRate[1]; rateAmountMessage.Rates[0] = new RateAmountMessageTypeRate(); rateAmountMessage.Rates[0].MinLOS = dailyRate.MinStay.ToString(); rateAmountMessage.Rates[0].BaseByGuestAmts = new RateUploadTypeBaseByGuestAmt[1]; rateAmountMessage.Rates[0].BaseByGuestAmts[0] = new RateUploadTypeBaseByGuestAmt(); rateAmountMessage.Rates[0].BaseByGuestAmts[0].AmountAfterTax = dailyRate.Rate; rateAmountMessage.Rates[0].BaseByGuestAmts[0].AmountAfterTaxSpecified = true; rateAmountMessage.Rates[0].BaseByGuestAmts[0].DecimalPlaces = "0"; rateAmountMessage.Rates[0].BaseByGuestAmts[0].CurrencyCode = dailyRate.CurrencyCode; rateAmountMessage.Rates[0].BaseByGuestAmts[0].NumberOfGuests = numberOfGuests.ToString(); return rateAmountMessage; }
/// <summary> /// Compare two reate amount type /// </summary> /// <param name="lastRateAmount">RateAmountMessageType</param> /// <param name="rateAmount">RateAmountMessageType</param> /// <returns>True if both type are equal</returns> private static bool CompareRateAmountValues(RateAmountMessageType lastRateAmount, RateAmountMessageType rateAmount) { if (lastRateAmount == null || lastRateAmount.Rates == null || rateAmount.Rates == null || !lastRateAmount.Rates.Any() || !rateAmount.Rates.Any()) { return false; } return lastRateAmount.StatusApplicationControl.InvTypeCode == rateAmount.StatusApplicationControl.InvTypeCode && lastRateAmount.StatusApplicationControl.RatePlanCode == rateAmount.StatusApplicationControl.RatePlanCode && lastRateAmount.Rates[0].BaseByGuestAmts[0].AmountAfterTax == rateAmount.Rates[0].BaseByGuestAmts[0].AmountAfterTax && lastRateAmount.Rates[0].BaseByGuestAmts[0].DecimalPlaces == rateAmount.Rates[0].BaseByGuestAmts[0].DecimalPlaces && lastRateAmount.Rates[0].MinLOS == rateAmount.Rates[0].MinLOS; }