コード例 #1
0
        public static CheckAvailabilityResult GetCheckAvailabilityResult(Hotels.Common.Models.AvailabilityReq availability, string curr, string src)
        {
            CheckAvailabilityResult availabilityResult = new CheckAvailabilityResult();

            availabilityResult = AvailabilityManager.checkAvailabilityManager(availability, curr, src);

            return(availabilityResult);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="availability"></param>
        /// <param name="Curr">user selected curency</param>
        /// <param name="src"></param>
        /// <returns></returns>
        public static CheckAvailabilityResult checkAvailabilityManager(Hotels.Common.Models.AvailabilityReq availability, string Curr, string src)
        {
            CheckAvailabilityResult availabilityResult = new CheckAvailabilityResult();

            //try
            //{
            CurrencyManager currencyManager = new CurrencyManager();

            SalesRulesManager CancellationChargeManager = new SalesRulesManager();

            CheckAvailabilityRepo.SaveRequestToDB(availability);
            double TotalCost            = 0;
            double ProviderExcahngeRate = 0;
            double newcost    = 0;
            var    SearchData = SearchRepo.GetSearchDataBySession(availability.Sid);
            int    duration   = SearchData.duration ?? default(int);//Convert.ToInt32((SearchData.dateTo - SearchData.dateFrom).Value.TotalDays);
            var    BaseCur    = ConfigurationSettings.AppSettings["BaseCur"];

            if (SearchData != null)
            {
                availabilityResult = GetRoomsFromProviders(availability, Convert.ToDateTime(SearchData.dateFrom).ToString("yyyy-MM-dd"), duration.ToString());
                if (availabilityResult == null)
                {
                    return(null);
                }
                if (availability.PID == "5")
                {
                    ProviderExcahngeRate = currencyManager.GetCurrencyConversion(Curr, BaseCur, availability.Sid);
                }
                if (availability.PID == "4")
                {
                    // get Hotel Beds provider Curency
                    var HotelBedsCur = ConfigurationSettings.AppSettings["HotelBedsCurency"];
                    ProviderExcahngeRate = currencyManager.GetCurrencyConversion(HotelBedsCur, BaseCur, availability.Sid);
                    ////ProviderExcahngeRate = currencyManager.GetCurrencyConversion("EUR", BaseCur);availabilityResult.ProviderCur
                }
                else if (availability.PID == "2")
                {
                    ProviderExcahngeRate = currencyManager.GetCurrencyConversion(availabilityResult.ProviderCur, BaseCur, availability.Sid);
                    ////providerexcahngerate = currencymanager.getcurrencyconversion("usd", basecur, availability.sid);
                }
                if (Curr == null)
                {
                    Curr = SearchData.currency;
                }
                double ExcahngeRate = currencyManager.GetCurrencyConversion(BaseCur, Curr, availability.Sid);
                double MarkUpRate   = currencyManager.GetCurrencyConversion(BaseCur, SearchData.currency, availability.Sid);
                var    roomsRules   = AvailabiltyRooms.getRoomsRules(availability.HotelCode, availability.Sid, availability.PID);
                if (roomsRules == null)
                {
                    return(null);
                }

                AppliedSalesRule AppliedCancellationMarkup = CancellationChargeManager.ApplySalesRules("Markup");

                for (int i = 0; i < availabilityResult.Result.Count; i++)
                {
                    var roomData = roomsRules.FirstOrDefault(a => a.RoomCode == availabilityResult.Result[i].RoomIndex.ToString());
                    availabilityResult.Result[i].RatePerNight   = ((availabilityResult.Result[i].CostPrice * ProviderExcahngeRate / duration) + (roomData.MarkupVal.Value / MarkUpRate) - (roomData.DiscountVal.Value / MarkUpRate)) * ExcahngeRate;
                    availabilityResult.Result[i].TotalSellPrice = Math.Round(availabilityResult.Result[i].RatePerNight * duration, 3);
                    TotalCost += availabilityResult.Result[i].CostPrice;
                    foreach (var item in availabilityResult.Result[i].cancellationRules) ////
                    {
                        item.Price = Math.Round(((item.Cost * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3);
                        item.CanellationRuleText = SearchData.language.ToLower() == "en" ? Math.Round(((item.Cost * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3) + " " + SearchData.currency + " of the booking amount " + item.FromDate : item.FromDate + " TO " + "" + SearchData.currency + Math.Round(((item.Cost * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3);
                    }
                }
                newcost = availability.TotalCost;

                //availabilityResult.TotalCost = TotalCost;
            }
            CheckAvailabilityRepo.SaveResponseToDB(availabilityResult, newcost, availability, SearchData.currency, src);
            return(availabilityResult);
            //}
            //catch (Exception ex)
            //{
            //    LoggingHelper.WriteToFile("AvailabilityController/Errors/", "AvailabilityController" + "providerManagement" + availability.Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);

            //    return null;
            //}
        }
コード例 #3
0
 public AvailabilityValidModel()
 {
     availabilityReq = new AvailabilityReq();
 }