コード例 #1
0
 //
 public void SaveSearchData(SearchData searchData)
 {
     try
     {
         SearchRepo repo = new SearchRepo();
         repo.SaveSearchData(searchData);
     }catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #2
0
 public void MovieSearch()
 {
     using (var httpTest = new HttpTest())
     {
         var search = new SearchRepo();
         var result = search.GetMovieSearch("Guardians");
         Assert.IsNotNull(result);
         Assert.IsInstanceOfType(result, typeof(Task <List <MovieSearch> >));
         httpTest.ShouldHaveCalled("http://www.omdbapi.com").WithVerb(HttpMethod.Get);
     }
 }
コード例 #3
0
 public void SaveSearchResult(List <HotelSearchResult> hotelSearchResults, string sID)
 {
     try
     {
         SearchRepo repo = new SearchRepo();
         repo.SaveSearchResult(hotelSearchResults, sID);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #4
0
        // Hotel Rooms HotelSearchRoom
        public HotelSearchRoom GetAvailableRoom(string SessionId, int ResIndex, string HotelCode, string SID)
        {
            //var roomexists=
            //if (true)
            //{

            //}
            var Result = RoomAvailabiltyService.Availabilty(SessionId, ResIndex, HotelCode, SID);
            //map tbo rooms rsp to general res
            HotelSearchRoom hotelSearchRoom = RoomMapper.MapTboRoomRspTogenrl(Result, SID);
            // apply business rules on rooms
            //ApplyRoomsBusiness(rooms);
            //save rooms in DB
            SearchRepo manager = new SearchRepo();

            manager.SaveSearchRooms(hotelSearchRoom.Packages, SID, HotelCode);

            var Res = manager.GetTBOHotelDetails(hotelSearchRoom, HotelCode, SID);


            // return Res;
            return(hotelSearchRoom);
        }
コード例 #5
0
        private async Task <ActionResult> LoadDefaultService(SearchOptions searchOptions)
        {
            ActionResult result = null;

            try
            {
                Log(LogLevel.Trace, "(Checking for default service", searchOptions);
                var defaultServiceId = GetDefaultServiceId();
                if (defaultServiceId == 0)
                {
                    return(null);
                }

                Log(LogLevel.Trace, "Start loading default service {id}", searchOptions, defaultServiceId);
                var results = await SearchRepo.GetProducts(new[] { defaultServiceId }, searchOptions);

                Log(LogLevel.Trace, "End loading default service {id}", searchOptions, defaultServiceId);

                if (results.Length == 0)
                {
                    var message = $"Service {defaultServiceId} is not found";
                    LogException(null, message, searchOptions);
                    return(NotFound(message));
                }

                Services = new [] { results[0] };
            }

            catch (Exception ex)
            {
                var message = $"Exception occurs while using Elastic Search: {ex.Message}";
                LogException(ex, message, searchOptions);
                result = BadRequest(message);
            }
            return(result);
        }
コード例 #6
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;
            //}
        }
コード例 #7
0
        //map tbo rooms rsp to general res

        public static HotelSearchRoom MapTboRoomRspTogenrl(HotelRoomAvailabilityResponse response, string SID)
        {
            if (response.HotelRooms == null)
            {
                return(null);
            }
            //get ADT CHD NO
            SearchRepo manager = new SearchRepo();
            var        rooms   = manager.GetADTCHDNoBySid(SID);

            CurrencyManager   currencyManager           = new CurrencyManager();
            SalesRulesManager ServiceChargeManager      = new SalesRulesManager();
            SalesRulesManager CancellationChargeManager = new SalesRulesManager();
            var BaseCur = ConfigurationSettings.AppSettings["BaseCur"];

            double ProviderExcahngeRate = currencyManager.GetCurrencyConversion(response.HotelRooms[0].RoomRate.Currency, BaseCur, SID);

            double ExcahngeRate = currencyManager.GetCurrencyConversion(BaseCur, response.HotelRooms[0].RoomRate.Currency, SID);

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

            //
            //options for booking
            List <OptionsForBooking> options = new List <OptionsForBooking>();

            foreach (var item in response.OptionsForBooking.RoomCombination)
            {
                options.Add(new OptionsForBooking
                {
                    RoomIndex = item.RoomIndex
                });
            }
            List <RoomResult> roomResults = new List <RoomResult>();

            foreach (var item in response.HotelRooms.ToList())
            {
                //supplements
                List <Hotels.Common.Models.RoomResult.Supplement> supplements = new List <Hotels.Common.Models.RoomResult.Supplement>();
                if (item.Supplements != null)
                {
                    foreach (var sup in item.Supplements)
                    {
                        supplements.Add(new Hotels.Common.Models.RoomResult.Supplement
                        {
                            Price          = sup.Price,
                            SuppChargeType = sup.SuppChargeType.ToString(),
                            SuppID         = sup.SuppID,
                            SuppIsSelected = sup.SuppIsMandatory,
                            Cur            = sup.CurrencyCode,
                        });
                    }
                }

                List <CancellationRule> cancellationRules = new List <CancellationRule>();
                foreach (var cancel in item.CancelPolicies.CancelPolicy)
                {
                    double costToSave = 0;
                    string Cur        = "";
                    //Enum.TryParse(cancel.ChargeType.ToString(), out CancellationChargeTypeForHotel Type);

                    if (cancel.ChargeType == CancellationChargeTypeForHotel.Percentage)
                    {
                        costToSave = (double)cancel.CancellationCharge;
                        Cur        = "%";
                    }
                    else
                    {
                        Cur        = "KWD";
                        costToSave = (double)cancel.CancellationCharge * ProviderExcahngeRate; //Math.Round((double)cancel.CancellationCharge * ProviderExcahngeRate, 3);
                    }
                    cancellationRules.Add(new CancellationRule
                    {
                        Price    = costToSave,
                        Curency  = Cur,
                        FromDate = cancel.FromDate,
                        ToDate   = cancel.ToDate,
                        //Cost = (double)cancel.CancellationCharge,
                        Cost       = (double)cancel.CancellationCharge,
                        ChargeType = cancel.ChargeType.ToString(),
                    });
                }
                //foreach (var PaxNo in rooms)
                //{

                roomResults.Add(new RoomResult
                {
                    RoomIndex = item.RoomIndex,
                    RoomType  = item.RoomTypeName + "   " + item?.RoomPromtion,
                    //RoomCode = item.RoomIndex,
                    RoomCode      = item.RoomTypeCode,
                    RoomReference = item.RatePlanCode,
                    //Adult = rooms.FirstOrDefault(ad=>ad.roomNo == item.RoomIndex).adultNo ?? default(int),
                    //Child = rooms.FirstOrDefault(ad => ad.roomNo == item.RoomIndex).childernNo ?? default(int),
                    // RatePerNight = ((double)item.RoomRate.TotalFare * ProviderExcahngeRate ) * ExcahngeRate,

                    //TotalSellPrice = Math.Round(((double)item.RoomRate.TotalFare * ProviderExcahngeRate) * ExcahngeRate, 3),

                    //tax
                    rateType = item.RoomRate.RoomTax.ToString(),
                    //base
                    rateClass = item.RoomRate.RoomFare.ToString(),
                    //RatePerNight = (double)item.RoomRate.DayRates[0].BaseFare,
                    CostPrice = (double)item.RoomRate.TotalFare,
                    Tax       = item.RoomRate.RoomTax,
                    RoomMeal  = item.MealType,
                    //sell curency   kwd
                    Curency           = BaseCur,
                    TotalSellPrice    = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3),
                    Supplements       = supplements,
                    cancellationRules = cancellationRules,
                    Images            = item?.RoomAdditionalInfo?.ImageURLs.ToList(),
                    Amenities         = item.Amenities,
                    Inclusion         = item.Inclusion
                });
                //}
            }
            HotelSearchRoom hotelSearchRoom = new HotelSearchRoom();
            int             PkageNO         = 0;

            foreach (var item in options)
            {
                PkageNO++;
                SearchRoomData roomresult = new SearchRoomData();
                roomresult = null;
                SeparatedRoom srts = new SeparatedRoom();
                for (int i = 0; i < item.RoomIndex.Count(); i++)
                {
                    var resultsR = roomResults.Where(res => res.RoomIndex == item.RoomIndex[i]).FirstOrDefault();
                    resultsR.PackageNO = PkageNO;
                    srts.RoomResults.Add(resultsR);
                }
                hotelSearchRoom.rooms.Add(srts);
            }

            SeparatedRoom separatedRoom = new SeparatedRoom
            {
                OptionsForBookings = options,
                RoomResults        = roomResults
            };

            var singles = roomResults.GroupBy(n => n.RoomCode).ToList()
                          //.Where(g => g.Count() == 1)
                          .Select(g => g.First()).ToList();

            hotelSearchRoom.Packages = singles;
            return(hotelSearchRoom);
        }