//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); }