public static AvailabilityReq GetAvailabilityForCancelFromDB(string sid, string HotelCode, string roomcode, string pid) { AvailabilityReq availabilityReq = new AvailabilityReq(); try { SearchDBEntities searchDB = new SearchDBEntities(); using (HotelBookingDBEntities db = new HotelBookingDBEntities()) { availabilityReq.HotelCode = HotelCode; availabilityReq.PID = pid; availabilityReq.Sid = sid; var roomsData = searchDB.SearchRoomResults.Where(x => x.sID == sid && x.HotelCode == HotelCode && x.RoomCode == roomcode && x.ProviderId.ToString() == pid).ToList(); for (int i = 0; i < roomsData.Count; i++) { RoomAvailability room = new RoomAvailability(); room.RoomId = int.Parse(roomsData[i].RoomCode); room.RoomRef = roomsData[i].RoomReference; availabilityReq.Rooms.Add(room); availabilityReq.TotalCost += roomsData[i].costPrice.Value; } } return(availabilityReq); } catch (Exception ex) { throw ex; } }
public static List <CancellationRule> GetCancelFromDB(string sid, string HotelCode, string roomcode, string pid) { try { List <CancelPolicy> cancelPolicies = new List <CancelPolicy>(); List <CancellationRule> cancellationRules = new List <CancellationRule>(); SearchDBEntities searchDB = new SearchDBEntities(); using (HotelBookingDBEntities db = new HotelBookingDBEntities()) { cancelPolicies = db.CancelPolicies.Where(a => a.Sid == sid && a.HotelCode == HotelCode && a.RoomCode.ToString() == roomcode && a.ProviderID == pid).ToList(); } if (cancelPolicies.Count > 0) { var searchData = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == sid); foreach (var item in cancelPolicies) { CancellationRule cancellation = new CancellationRule(); cancellation.FromDate = item.FromDate.ToString(); cancellation.Price = (double)item.SellPrice.Value; cancellation.CanellationRuleText = searchData.language.ToLower() == "en" ? item.SellPrice.Value + " " + searchData.currency + " of the booking amount " + item.FromDate.Value.ToString("MMMM dd, yyyy") : item.FromDate.Value.ToString("MMMM dd, yyyy") + " إلى " + "" + searchData.currency + item.SellPrice; cancellationRules.Add(cancellation); } return(cancellationRules); } return(new List <CancellationRule>()); } catch (Exception ex) { LoggingHelper.WriteToFile("AvailabilityController/Errors/", "getcancelpolicy" + "INDAL" + sid, ex.InnerException?.Message, ex.Message + ex.StackTrace); return(new List <CancellationRule>()); } }
public RestCriteraiData GetDataForGatewayDA(string BN) { try { SearchDBEntities searchDB = new SearchDBEntities(); HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities(); hotelsDBEntities hotelsDB = new hotelsDBEntities(); SearchData searchData = new SearchData(); RestCriteraiData restCriterai = new RestCriteraiData(); var booking = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.Booking_No == BN); var search = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == booking.SessionId); restCriterai.searchData = new SearchData(); restCriterai.searchData.CityName = search.cityName; restCriterai.searchData.Currency = search.currency; restCriterai.searchData.DateFrom = search.dateFrom.Value; restCriterai.searchData.DateTo = search.dateTo.Value; restCriterai.searchData.Lang = search.language; restCriterai.searchData.Nat = search.passengerNationality; restCriterai.searchData.POS = search.pos; restCriterai.pos = search.pos; restCriterai.searchData.sID = search.sID; restCriterai.searchData.Source = search.source; var Rooms = searchDB.SearchRoomDatas.Where(a => a.sID == booking.SessionId).ToList(); foreach (var item in Rooms) { SearchRoom searchRoom = new SearchRoom(); searchRoom.Adult = item.adultNo.Value; for (int i = 0; i < item.childernNo.Value; i++) { searchRoom.Child.Add(2); } restCriterai.searchData.SearchRooms.Add(searchRoom); } // var booking = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.SessionId == Sid && x.Booking_No == BN); restCriterai.cost = booking.Sell_Price.Value; restCriterai.Curr = booking.Sell_Currency; restCriterai.Pid = booking.Provider_ID; if (restCriterai.Pid == "5") { TBOContext bOContext = new TBOContext(); var Hotel = bOContext.HotelDetails.FirstOrDefault(a => a.HotelCode == booking.Hotel_ID); restCriterai.HotelName = Hotel.HotelName; //restCriterai.HotelStars = int.Parse(Hotel.rating); } else if (restCriterai.Pid == "4") { var Hotel = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == booking.Hotel_ID); restCriterai.HotelName = Hotel.hotelName; restCriterai.HotelStars = int.Parse(Hotel.rating); } return(restCriterai); } catch (Exception ex) { return(null); } }
public static List <SearchRoomResult> getRoomsRules(string Hotelcode, string SessionId, string pid) { List <string> Rooms = new List <string>(); SearchDBEntities db = new SearchDBEntities(); int provider = int.Parse(pid); var RoomsDB = db.SearchRoomResults.Where(a => a.HotelCode == Hotelcode && a.ProviderId == provider && a.sID == SessionId).ToList(); return(RoomsDB); }
public static SearchCriteria GetSearchDataBySession(string sid) { SearchCriteria searchCriteria = new SearchCriteria(); using (SearchDBEntities db = new SearchDBEntities()) { searchCriteria = db.SearchCriterias.FirstOrDefault(a => a.sID == sid); } return(searchCriteria); }
//TBO public List <SearchRoomData> GetADTCHDNoBySid(string sid) { List <SearchRoomData> rooms = new List <SearchRoomData>(); using (SearchDBEntities db = new SearchDBEntities()) { rooms = db.SearchRoomDatas.Where(dd => dd.sID == sid).ToList(); } return(rooms); }
public static List <SearchRoomResult> GetRoomsForTraveller(string sid, string hotel, string Pid, List <string> RoomsCode) { SearchDBEntities searchDB = new SearchDBEntities(); List <SearchRoomResult> requiredBooking = new List <SearchRoomResult>(); requiredBooking = searchDB.SearchRoomResults.Where(a => RoomsCode.Contains(a.RoomCode) && a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList(); //requiredBooking = searchDB.SearchRoomDatas.Where(a => a.sID == sid).ToList(); return(requiredBooking); }
public async void AddMetaSearchStatistic(CheckOutData data, string BN) { try { SearchDBEntities searchDB = new SearchDBEntities(); hotelsDBEntities db = new hotelsDBEntities(); SearchStatistic metaData = new SearchStatistic(); var SearchData = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == data.Sid); var hotel = db.hotels.FirstOrDefault(h => h.hotelID == data.HotelID); // var PosData= db. if (hotel != null && SearchData != null) { metaData.BookingNo = BN; metaData.BookingStatus = "New Booking"; metaData.CheckOut = SearchData.dateTo.Value; metaData.ChekIn = SearchData.dateFrom.Value; metaData.CityName = hotel.cityName; metaData.Date = SearchData.sessionCreatedAt.Value; metaData.HotelID = data.HotelID; metaData.HotelName = hotel.hotelName; metaData.POS = SearchData.pos; metaData.ProvideID = data.Pid; metaData.sID = data.Sid; metaData.Source = SearchData.source; } string path = ConfigurationSettings.AppSettings["metaData"]; var client = new HttpClient(); var url = path + "/api/MetaSearchStatistics/POST"; var response = client.PostAsJsonAsync(url, metaData).Result; LoggingHelper.WriteToFile("AddMetaSearchStatistic/", "InSearchstatisticDA ", "ResponseData", response.StatusCode.ToString()); //if (response.IsSuccessStatusCode) //{ //} //else //{ //} }catch (Exception ex) { LoggingHelper.WriteToFile("AddMetaSearchStatistic/Errors/", "InSearchstatisticDA" + data.Sid, ex.Message, ex.Message + ex.StackTrace); } }
public bool ChechSessionStatus(SearchData searchData) { using (SearchDBEntities db = new SearchDBEntities()) { var validSession = db.SearchCriterias.FirstOrDefault(a => a.sID == searchData.sID && a.dateFrom == searchData.DateFrom && a.source == searchData.Source); if (validSession == null) { return(false); } else { return(true); } } }
public static string GetBookingNumber(string sid, string Src, string Pid) { try { SearchDBEntities searchDB = new SearchDBEntities(); // HotelBookingDBEntitiy dB = new HotelBookingDBEntitiy(); var searchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid); if (searchData != null) { string BookingNum; string connstring = ConfigurationSettings.AppSettings["HB_CS"]; string BookNoPrefix = ConfigurationSettings.AppSettings["BookNoPrefix"]; using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); SqlCommand cmd = new SqlCommand("CreateBookingNum", conn); // 2. set the command object so it knows to execute a stored procedure cmd.CommandType = CommandType.StoredProcedure; // execute the command cmd.Parameters.Add(new SqlParameter("Bn", BookNoPrefix));// 3 cmd.Parameters.Add(new SqlParameter("User", sid)); cmd.Parameters.Add(new SqlParameter("lang", searchData.language)); cmd.Parameters.Add(new SqlParameter("pos", searchData.pos)); cmd.Parameters.Add(new SqlParameter("sc", Src)); cmd.Parameters.Add(new SqlParameter("pid ", Pid)); cmd.Parameters.Add(new SqlParameter("status", "Bending")); cmd.Parameters.Add("@newBN", SqlDbType.NVarChar, 50).Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); // read output value from @NewId string BookingNumberId = Convert.ToString(cmd.Parameters["@newBN"].Value); return(BookingNumberId); } } return(null); } catch (Exception ex) { LoggingHelper.WriteToFile("SaveBookingController/Errors/", "SaveController", "GetBookingNumber" + sid, ex.InnerException?.Message + "//" + ex.Message + ex.StackTrace); return(null); } }
public IHttpActionResult Get(string sid, string hotel, string Pid) { // call bll try { LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "INController" + sid, "Rooms:", "Sid: " + sid + " , pid: " + Pid + " , hotelId: " + hotel); //TBO if (Pid == "5") { SearchDBEntities searchDB = new SearchDBEntities(); // call Room availablity api string TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == sid).PSession; //Select(s => s.PSession).ToString(); int ResIndex = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == sid && hotl.HotelCode == hotel).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString(); TBOSearchManager manager = new TBOSearchManager(); var TBORooms = manager.GetAvailableRoom(TBOSession, ResIndex, hotel, sid); if (TBORooms != null) { LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(TBORooms)); return(Ok(TBORooms)); } else { return(Ok("No Result Found")); } } else { var Rooms = GetRoom.GetRoomsByHotelIDAndProvide(sid, Pid, hotel); if (Rooms != null) { LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(Rooms)); return(Ok(Rooms)); } else { return(Ok("No Result Found")); } } } catch (Exception ex) { LoggingHelper.WriteToFile("HotelRoomsController/Errors/", "INController" + sid, "Exception", ex.InnerException?.Message + ex.Message + ex.StackTrace); return(BadRequest(ex.Message)); } }
public static List <string> getRoomsReference(List <string> Rids, string Hotelcode, string SessionId, string pid) { List <string> Rooms = new List <string>(); SearchDBEntities db = new SearchDBEntities(); int provider = int.Parse(pid); var RoomsDB = db.SearchRoomResults.Where(a => a.HotelCode == Hotelcode && a.ProviderId == provider && a.sID == SessionId).ToList(); foreach (var item in RoomsDB) { if (Rids.Contains(item.RoomCode)) { Rooms.Add(item.RoomReference); } } return(Rooms); }
public static ConfirmData GetAllConfirmationData(string Sid, string BN) { try { // get holder from (hotelBooking) and roomsandpaxes from (hotelBookingpax) HotelBookingDBEntities db = new HotelBookingDBEntities(); SearchDBEntities SDB = new SearchDBEntities(); ConfirmData confirmData = new ConfirmData(); List <SearchRoomResult> Roomrates = new List <SearchRoomResult>(); var BookingData = db.HotelsBookings.FirstOrDefault(s => s.SessionId == Sid && s.Booking_No == BN); var Paxes = db.HotelBookingPaxs.Where(a => a.SID == Sid && a.Booking_No == BN).ToList(); var rooms = Paxes.Where(x => x.PaxNo == 1).Select(a => a.Room_No.Value.ToString()).ToList(); // rate from searchroom result foreach (var item in rooms) { Roomrates.Add(SDB.SearchRoomResults.Where(a => /* rooms.Contains(a.RoomCode)*/ a.RoomCode == item && a.sID == Sid && a.HotelCode == BookingData.Hotel_ID).FirstOrDefault()); } confirmData.hotelsBooking = BookingData; var searchReq = SDB.SearchCriterias.FirstOrDefault(a => a.sID == Sid); var toDated = searchReq.dateTo.Value; var fromDated = searchReq.dateFrom.Value; confirmData.fromDate = Convert.ToDateTime(searchReq.dateFrom.Value).ToString("yyyy-MM-dd"); confirmData.ToDate = Convert.ToDateTime(searchReq.dateTo.Value).ToString("yyyy-MM-dd"); confirmData.Dur = Convert.ToInt32((toDated - fromDated).TotalDays).ToString(); confirmData.PropertyTS = SDB.SearchHotelResults.FirstOrDefault(x => x.sID == Sid && x.HotelCode == BookingData.Hotel_ID).ProviderHotelCode; confirmData.Pid = BookingData.Provider_ID; int indx = 1; foreach (var item in Roomrates) { RoomDTP roomDTP = new RoomDTP(); roomDTP.Rate = item.RoomReference; roomDTP.RoomN = int.Parse(item.RoomCode); roomDTP.roomResult = item; roomDTP.bookingPaxes = Paxes.Where(a => a.Room_No.ToString() == item.RoomCode && a.RoomRef == indx).ToList(); confirmData.Rooms.Add(roomDTP); indx = indx + 1; } return(confirmData); }catch (Exception ex) { LoggingHelper.WriteToFile("SaveBookingConfirmationController/Errors/", "ConfirmationDate GetConfirmationDate" + "DAL" + Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace); return(null); } }
public List <SearchStatistic> SearchStatisticTransaction(DateTime fromDate, DateTime toDate) { try { HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); SearchDBEntities searchDB = new SearchDBEntities(); hotelsDBEntities db = new hotelsDBEntities(); List <SearchStatistic> searchStatistics = new List <SearchStatistic>(); var SearchesData = searchDB.SearchCriterias.Where(x => x.sessionCreatedAt >= fromDate && x.sessionCreatedAt <= toDate).ToList(); foreach (var item in SearchesData) { SearchStatistic searchStatistic = new SearchStatistic(); searchStatistic.ChekIn = item.dateFrom.Value; searchStatistic.CheckOut = item.dateTo.Value; searchStatistic.Date = item.sessionCreatedAt.Value; searchStatistic.POS = item.pos; searchStatistic.sID = item.sID; searchStatistic.Source = item.source; var cityD = db.Cities.FirstOrDefault(x => x.ID.ToString() == item.cityName); if (cityD != null) { searchStatistic.CityName = cityD.City1; } var BookingData = BookingDB.HotelsBookings.FirstOrDefault(a => a.SessionId == item.sID); if (BookingData != null) { searchStatistic.BookingNo = BookingData.Booking_No; searchStatistic.BookingStatus = BookingData.Booking_Status; searchStatistic.HotelID = BookingData.Hotel_ID; searchStatistic.ProvideID = BookingData.Provider_ID; var hotel = db.hotels.FirstOrDefault(h => h.hotelID == BookingData.Hotel_ID); if (hotel != null) { searchStatistic.HotelName = hotel.hotelName; } } searchStatistics.Add(searchStatistic); } return(searchStatistics); }catch (Exception ex) { LoggingHelper.WriteToFile("StatisticController/Errors/", "INDAL", "FromData" + fromDate + "to" + toDate, ex.InnerException?.Message + "//" + ex.Message + ex.StackTrace); return(new List <SearchStatistic>()); } }
public List <AdminRequiredData> GetHotelAdimSearchData(string Key) { try { HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); SearchDBEntities searchDB = new SearchDBEntities(); List <AdminRequiredData> requiredData = new List <AdminRequiredData>(); var ListSearchData = BookingDB.HotelsBookings.Where(a => a.Booking_No.ToLower().Contains(Key.ToLower()) || a.Booking_Email.ToLower().Contains(Key.ToLower()) || a.Booking_Status.ToLower().Contains(Key.ToLower())).ToList(); foreach (var item in ListSearchData) { AdminRequiredData adminData = new AdminRequiredData(); adminData.bookingNumber = item.Booking_No; adminData.creationDate = item.Booking_Time.Value; adminData.customerEmail = item.Booking_Email; adminData.proveider = item.Provider_ID; adminData.status = item.Booking_Status; var Criteria = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == item.SessionId); adminData.checkin = Criteria.dateFrom.Value; adminData.checkout = Criteria.dateTo.Value; var Names = item.Pax_Name.Split(' '); adminData.LeadFirstName = Names[0]; adminData.LeadLastName = Names[1]; adminData.Price = item.Sell_Price.Value; adminData.Currency = item.Sell_Currency; if (item.Provider_ID == "4") { adminData.proveiderName = "HotelBeds"; } else if (item.Provider_ID == "2") { adminData.proveiderName = "Total Stay"; } requiredData.Add(adminData); } return(requiredData); } catch (Exception ex) { LoggingHelper.WriteToFile("AdminPannelController/ERROR/", "HotelAdminSearchController" + "INDAL" + Key, "Data", "key is " + Key + " and key is" + Key + ex.InnerException?.Message + ex.Message + ex.StackTrace); return(new List <AdminRequiredData>()); } }
public CheckAvailabilityForTs GetHotelDataForTsAvailability(AvailabilityReq roomsReq) { try { SearchDBEntities dBEntities = new SearchDBEntities(); CheckAvailabilityForTs checkAvailability = new CheckAvailabilityForTs(); checkAvailability.HodelData = dBEntities.SearchHotelResults.FirstOrDefault(a => a.sID == roomsReq.Sid && a.HotelCode == roomsReq.HotelCode && a.ProviderID.Value.ToString() == roomsReq.PID); var RoomsData = roomsReq.Rooms.Select(a => a.RoomId.ToString()).ToList(); checkAvailability.roomResults = dBEntities.SearchRoomResults.Where(a => a.sID == roomsReq.Sid && a.HotelCode == roomsReq.HotelCode && a.ProviderId.Value.ToString() == roomsReq.PID && RoomsData.Contains(a.RoomCode)).ToList(); return(checkAvailability); } catch (Exception ex) { LoggingHelper.WriteToFile("AvailabilityController/Errors/", "HotelRepo" + "GetHotelDataForTsAvailability" + roomsReq.Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace); return(null); } }
public void CreateSession(string sID) { using (SearchDBEntities db = new SearchDBEntities()) { SearchSession existisSession = db.SearchSessions.Where(a => a.Session_Id == sID).FirstOrDefault(); if (existisSession != null) { db.SearchSessions.Remove(existisSession); } db.SearchSessions.Add(new SearchSession() { Session_Id = sID, Status = "Created" }); db.SaveChanges(); } }
public static AvailabilityValidModel GetAvailabilityFromDB(string sid, string BN) { AvailabilityValidModel availabilityValid = new AvailabilityValidModel(); AvailabilityReq availabilityReq = new AvailabilityReq(); try { SearchDBEntities searchDB = new SearchDBEntities(); using (HotelBookingDBEntities db = new HotelBookingDBEntities()) { var HotelBookin = db.HotelsBookings.FirstOrDefault(x => x.SessionId == sid && x.Booking_No == BN); availabilityReq.HotelCode = HotelBookin.Hotel_ID; availabilityReq.BookingNum = BN; availabilityReq.PID = HotelBookin.Provider_ID; availabilityReq.Sid = sid; availabilityValid.Curr = HotelBookin.Sell_Currency; var BookedRooms = db.HotelBookingRooms.Where(x => x.SID == sid && x.Booking_No == BN).ToList(); var lstRooms = BookedRooms.Select(s => s.Room_No.ToString()).ToList(); var roomsData = searchDB.SearchRoomResults.Where(x => x.sID == sid && x.HotelCode == HotelBookin.Hotel_ID && lstRooms.Contains(x.RoomCode) && x.ProviderId.ToString() == HotelBookin.Provider_ID).ToList(); if (roomsData != null && roomsData.Count > 0) { for (int i = 0; i < BookedRooms.Count; i++) { RoomAvailability room = new RoomAvailability(); var roomData = roomsData.FirstOrDefault(a => a.RoomCode == BookedRooms[i].Room_No.ToString()); room.RoomId = int.Parse(roomData.RoomCode); room.RoomRef = roomData.RoomReference; room.Cost = roomData.costPrice.Value; availabilityReq.Rooms.Add(room); availabilityReq.TotalCost += roomData.costPrice.Value; } } } availabilityValid.availabilityReq = availabilityReq; return(availabilityValid); } catch (Exception ex) { throw ex; } }
//save sessions public void SaveSessions(int pid, string PSession, string SearchId, List <SearchRoom> rooms) { using (SearchDBEntities db = new SearchDBEntities()) { for (int i = 0; i < rooms.Count; i++) { db.ProviderSessions.Add(new ProviderSession { PID = pid, PSession = PSession, SearchId = SearchId, Adult = rooms[i].Adult, Child = rooms[i].Child.Count, ChildAges = string.Join(",", rooms[i].Child.Select(n => n.ToString()).ToArray()), RoomRef = i + 1 }); } db.SaveChanges(); } }
public void SaveSearchData(SearchData searchData) { try { using (SearchDBEntities db = new SearchDBEntities()) { SearchCriteria searchCriteria = new SearchCriteria(); searchCriteria.cityName = searchData.CityName.ToUpper(); searchCriteria.currency = searchData.Currency; searchCriteria.dateFrom = searchData.DateFrom; searchCriteria.dateTo = searchData.DateTo; searchCriteria.duration = Convert.ToInt32((searchData.DateTo - searchData.DateFrom).TotalDays); searchCriteria.language = searchData.Lang; searchCriteria.passengerNationality = searchData.Nat; searchCriteria.pos = searchData.POS; searchCriteria.roomNo = searchData.SearchRooms.Count(); searchCriteria.sID = searchData.sID; searchCriteria.source = searchData.Source; for (int i = 0; i < searchData.SearchRooms.Count; i++) { SearchRoomData searchRoomData = new SearchRoomData(); searchRoomData.sID = searchData.sID; searchRoomData.childernNo = searchData.SearchRooms[i].Child.Count; searchRoomData.childAge = string.Join("-", searchData.SearchRooms[i].Child); searchRoomData.adultNo = searchData.SearchRooms[i].Adult; searchRoomData.roomNo = i + 1; db.SearchRoomDatas.Add(searchRoomData); } db.SearchCriterias.Add(searchCriteria); db.SaveChanges(); } } catch (Exception ex) { LoggingHelper.WriteToFile("SearchRepo/Errors/", "SaveSearchData_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace); throw ex; } }
public HotelPackagesDetails GetHotelPackages(string pid, string sid, string hid) { HotelPackagesDetails hotelPackages = new HotelPackagesDetails(); SearchDBEntities searchDB = new SearchDBEntities(); hotelsDBEntities hotelsDB = new hotelsDBEntities(); var hotelSearchData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == hid); var hotelSearchpro = hotelsDB.hotelsProviders.FirstOrDefault(a => a.hotelID == hotelSearchData.ID.ToString() && a.providerID == pid); var hotelSearchDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == hid); var Imgs = hotelsDB.HotelsImages.Where(a => a.HotelID == hid).ToList(); List <string> images = Imgs.Select(x => x.URL).ToList(); hotelPackages.providerHotelID = hotelSearchpro.providerHotelID; hotelPackages.hotelCode = hotelSearchData.hotelID; hotelPackages.Address = hotelSearchData.address; hotelPackages.Lng = hotelSearchData.Lng; hotelPackages.Lat = hotelSearchData.Lat; hotelPackages.hotelStars = int.Parse(hotelSearchData.rating);// hotelPackages.hotelName = hotelSearchData.hotelName; hotelPackages.providerID = hotelSearchpro.providerID; hotelPackages.Location = hotelSearchData.location; hotelPackages.hotelDescription = hotelSearchDesc.Description1; hotelPackages.shortcutHotelDescription = hotelSearchDesc.Description2; hotelPackages.City = hotelSearchData.cityName; hotelPackages.Country = hotelSearchData.countryName; hotelPackages.hotelImages = images; var packages = searchDB.HotelPackages.Where(a => a.Session == sid && a.Hotelid == hid && a.Provider.ToString() == pid).ToList(); var Rooms = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hid && a.ProviderId.ToString() == pid).ToList(); RoomPackages roomPackage = new RoomPackages(); foreach (var item in packages) { // var availableCate = hotelPackages.packages.FirstOrDefault(a => a.RoomCategory == item.Category); if (roomPackage.RoomCategory != item.Category) { if (roomPackage.roomPackages.Count != 0) { roomPackage.PackagesNo = roomPackage.roomPackages.Count; hotelPackages.packages.Add(roomPackage); } roomPackage = new RoomPackages(); roomPackage.RoomCategory = item.Category; } RoomPackage roomPack = new RoomPackage(); roomPack.No = item.PackageNum.Value; roomPack.PricePerAllNight = item.PricePerAllNight.Value; roomPack.PricePerNight = item.PricePerNight.Value; var specPack = Rooms.Where(x => x.PackageNo == item.PackageNum).ToList(); foreach (var r in specPack) { RoomResult result = new RoomResult(); result.CostPrice = r.costPrice.Value; result.DiscountId = r.DiscountId.Value; result.PackageNO = r.PackageNo.Value; result.DiscountValue = r.DiscountVal.Value; result.Images = Imgs.Where(x => x.Category.ToLower() == "hotel rooms").Select(a => a.URL).ToList(); result.MarkupId = r.MarkupId.Value; result.MarkupValue = r.MarkupVal.Value; result.Paxs = r.PaxSQty.Value; result.RoomCode = r.roomType; result.RoomIndex = int.Parse(r.RoomCode); result.RoomMeal = r.meal; result.RoomReference = r.RoomReference; result.RoomType = r.RoomName; result.TotalSellPrice = r.SellPrice.Value; result.Adult = r.Adults.Value; result.Child = r.Childern.Value; if (r.IsRefundable.Value != null) { result.IsRefundable = r.IsRefundable.Value; } roomPack.roomResults.Add(result); } roomPackage.roomPackages.Add(roomPack); //hotelPackages.packages.Add(roomPackage); } if (roomPackage.roomPackages.Count != 0) { hotelPackages.packages.Add(roomPackage); } return(hotelPackages); }
public IHttpActionResult Get(string sid, string hotel, string Pid, string rooms) { // call bll try { LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsNumber/", "SearchController" + "INController" + sid, "Rooms", "Sid" + sid); var Rooms = GetRoom.GetRoomsData(sid, hotel, Pid, rooms); if (Rooms != null && Rooms.rooms.Count > 0) { #region tbo disable to not calling pricing api if (Pid == "5") { // var ActionUrlData = ConfigurationSettings.AppSettings["ActionUrl"]; // var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; //payLinkData.ActionsUrl.ValidationUrl = ActionUrlData + "/api/HotelCheckAvailability?sid=" + Sid + "&bookingnum=" + BN; SearchDBEntities searchDB = new SearchDBEntities(); RequiredBookingData requiredBooking = new RequiredBookingData(); //var data = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid); var HRooms = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList(); //requiredBooking.Currency = data?.currency; //requiredBooking.City = data?.cityName; var RoomsCode = rooms.Split('-'); foreach (var item in RoomsCode) { var roomdata = HRooms.FirstOrDefault(a => a.RoomCode == item); requiredBooking.rooms.Add(roomdata); } //TBO //call check availability tbo to get hotel norms and cancel policy //get room indexes to send in pricing req List <int> indexs = new List <int>(); foreach (var indx in requiredBooking.rooms) { indexs.Add(int.Parse(indx.RoomCode)); } string TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == sid).PSession; //Select(s => s.PSession).ToString(); int ResIndex = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == sid && hotl.HotelCode == hotel).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString(); AvailabilityAndPricingRequest req = new AvailabilityAndPricingRequest { SessionId = TBOSession, ResultIndex = ResIndex, OptionsForBooking = new TBO.WSDL.hotelServiceRef.BookingOptions { RoomCombination = new TBO.WSDL.hotelServiceRef.RoomCombination[] { new TBO.WSDL.hotelServiceRef.RoomCombination { RoomIndex = indexs.ToArray() } } } }; var availRes = AvailablityPricingService.PricingService(req, sid); RoomResult roomResult = new RoomResult(); if (availRes != null) { if (availRes?.PriceVerification?.Status == PriceVerificationStatus.Failed || availRes?.PriceVerification?.Status == PriceVerificationStatus.NotAvailable) { return(Ok("No Result Found")); } if (availRes.HotelCancellationPolicies != null) { roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms; //handel cancel policy var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; CurrencyManager currencyManager = new CurrencyManager(); double ProviderExcahngeRate = currencyManager.GetCurrencyConversion("USD", BaseCur, sid); foreach (var cancel in availRes.HotelCancellationPolicies?.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); } CancellationRule cancellation = new CancellationRule(); cancellation.FromDate = cancel.FromDate; cancellation.ToDate = cancel.ToDate; cancellation.Cost = (double)cancel.CancellationCharge; cancellation.ChargeType = cancel.ChargeType.ToString(); cancellation.Curency = Cur; cancellation.Price = costToSave; // roomResult.cancellationRules.Add(cancellation); } if (availRes?.PriceVerification?.PriceChanged == true) { //var roomsTbo = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList(); Rooms.Status = 1; Rooms.Message = "Price Change"; //results.Status = 1; foreach (var item in availRes?.PriceVerification.HotelRooms) { roomResult.TotalSellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3); roomResult.CostPrice = (double)item.RoomRate.TotalFare; //results.TotalCost += roomResult.TotalSellPrice; //Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3); roomResult.RoomIndex = item.RoomIndex; //results.Result.Add(roomResult); //update Rooms obj with new price Rooms.rooms.FirstOrDefault(r => r.RoomCode == item.RoomIndex.ToString()).costPrice = (double)item.RoomRate.TotalFare; Rooms.rooms.FirstOrDefault(r => r.RoomCode == item.RoomIndex.ToString()).SellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3); // update price in search db // update tbo new rooms prices SearchRoomResult Newroom = new SearchRoomResult(); Newroom = searchDB.SearchRoomResults.FirstOrDefault(room => room.sID == sid && room.RoomCode == item.RoomIndex.ToString()); Newroom.costPrice = (double)item.RoomRate.TotalFare; Newroom.rateClass = item.RoomRate.RoomFare.ToString(); Newroom.rateType = item.RoomRate.RoomTax.ToString(); Newroom.SellPrice = roomResult.TotalSellPrice; searchDB.SaveChanges(); } } else { Rooms.Status = 0; Rooms.Message = "No Price Change"; } Rooms.TBoRooms.Add(roomResult); } } #endregion LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "SearchController" + "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(Rooms)); return(Ok(Rooms)); } } return(Ok("No Result Found")); } catch (Exception ex) { LoggingHelper.WriteToFile("HotelRoomsController/Errors/", "SearchController" + "INController" + sid, "Exception", ex.InnerException?.Message + ex.Message + ex.StackTrace); return(BadRequest(ex.Message)); } }
public HotelSearchResponse GetDataBySession(SearchData searchData) { try { #region Hotelbeds pid 5 HotelSearchResponse hotelsSearch = new HotelSearchResponse(); HotelRepo repo = new HotelRepo(); hotelsDBEntities dbh = new hotelsDBEntities(); using (SearchDBEntities db = new SearchDBEntities()) { int duration = Convert.ToInt32((searchData.DateTo - searchData.DateFrom).TotalDays); var HotelResults = db.SearchHotelResults.Where(a => a.sID == searchData.sID).ToList(); var providers = HotelResults.GroupBy(x => x.ProviderID).Select(x => x.FirstOrDefault()).Select(a => a.ProviderID.Value).ToList(); var hotelIds = HotelResults.Select(a => a.HotelCode).ToList(); //List<HotelDetails> HotelDataList = repo.GetHotelData(hotelIds, "4");/// List <HotelDetails> HotelDataList = new List <HotelDetails>(); hotelsSearch.CheckIn = searchData.DateFrom; hotelsSearch.CheckOut = searchData.DateTo; using (var _TBOContext = new TBOContext()) { List <Image> imagesdata = (from i in _TBOContext.HotelImages // join i in dbh.HotelsImages on h.hotelID equals i.HotelID where hotelIds.Contains(i.HotelCode) select new Image() { Thum = i.URL, HotelId = i.HotelCode, Category = "", Url = i.URL }).ToList(); //List<HotelsAmenity> imagesdata = (from i in _TBOContext.Facilities // // join i in dbh.HotelsImages on h.hotelID equals i.HotelID // where hotelIds.Contains(i.HotelCode) // select new Image() // { // }).ToList(); /* List<HotelAmenity> amenties = (from h in dbh.hotels * * join A in dbh.HotelsAmenities on h.hotelID equals A.hotelID * where hotelIds.Contains(h.hotelID) * select new HotelAmenity() * { * Amenity = A.amenitie, * HotelCode = h.hotelID, * status = A.Status * }).ToList();*/ var list = (from h in _TBOContext.HotelDetails where hotelIds.Contains(h.HotelCode) select new HotelDetails() { ID = h.HotelDetailId, HotelId = h.HotelCode, Address = h.Address, Rating = h.HotelRating, HotelName = h.HotelName, Zipcode = h.PinCode, //ProviderHotelId = h.h, // ProviderID = p.providerID, Location = h.HotelLocation, ShortDescription = h.Description, LongDescriptin = h.Description, City = h.CityName, Country = h.CountryName, //Lat = h., //Lng = h., Location1 = h.HotelLocation, Location2 = h.HotelLocation, Location3 = h.HotelLocation //{ images.Where(a => a.HotelId == h.hotelID).ToList() } }).Distinct().ToList(); /* foreach (var item in list) * { * List<HotelAmenity> ams = new List<HotelAmenity>(); * var hotelAmenities = amenties.Where(a => a.HotelCode == item.HotelId).Distinct().ToList(); * foreach (var am in hotelAmenities) * { * * am.Amenity = am.Amenity.Replace(" ", String.Empty); * if (ams.FirstOrDefault(x => x.Amenity == am.Amenity) == null) * { * ams.Add(am); * } * } * item.hotelAmenities = ams; * }*/ var stars = new List <string> { "OneStar", "TwoStar", "ThreeStar", "FourStar", "FiveStar" }; list.ForEach(a => a.Images = imagesdata.Where(h => h.HotelId == a.HotelId).ToList()); HotelDataList.AddRange(list); foreach (var item in HotelResults) { HotelSearchResult hotel = new HotelSearchResult(); HotelDetails hotelData = HotelDataList.Where(a => a.HotelId == item.HotelCode).FirstOrDefault(); if (hotelData != null) { hotel.providerHotelCode = item.ProviderHotelCode; hotel.City = hotelData.City; hotel.hotelName = hotelData.HotelName; hotel.Country = hotelData.Country; hotel.hotelStars = stars.IndexOf(hotelData.Rating); var images = hotelData.Images.FirstOrDefault(); if (images != null) { hotel.hotelThumb = images.Thum; } //*** hotel.hotelImages = hotelData.Images.Select(a => a.Url).ToList(); //** hotel.Amenities = hotelData.hotelAmenities; hotel.Lat = hotelData.Lat ?? ""; hotel.Lng = hotelData.Lng ?? ""; hotel.providerID = item.ProviderID.Value.ToString(); hotel.hotelDescription = hotelData.LongDescriptin; hotel.shortcutHotelDescription = hotelData.ShortDescription; hotel.ZipCode = hotelData.Zipcode ?? ""; hotel.Location = hotelData.Location; hotel.Address = hotelData.Address; hotel.providerHotelID = item.ProviderHotelId; hotel.hotelCode = hotelData.HotelId; hotel.sellCurrency = searchData.Currency; hotel.hotelRate = item.SellPrice.Value / duration; hotel.costPrice = item.CostPrice.Value; hotel.TotalSellPrice = item.SellPrice.Value; hotel.rooms = new List <RoomResult>(); hotelsSearch.HotelResult.Add(hotel); } } } } hotelsSearch.Locations = hotelsSearch.HotelResult.GroupBy(x => x.Location).Select(x => x.FirstOrDefault()).Select(a => a.Location).ToList(); return(hotelsSearch); #endregion }catch (Exception ex) { return(null); } }
public ConfirmationModel GetConfirmationData(string sid, string BN) { try { ConfirmationModel confirmationModel = new ConfirmationModel(); HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); SearchDBEntities searchDB = new SearchDBEntities(); hotelsDBEntities hotelsDB = new hotelsDBEntities(); HotelBedEntity HBDB = new HotelBedEntity(); List <SearchRoomResult> searchRoomResults = new List <SearchRoomResult>(); List <SearchRoomResult> SelectedRooms = new List <SearchRoomResult>(); var BookingData = BookingDB.HotelsBookings.FirstOrDefault(a => a.SessionId == sid && a.Booking_No == BN); var Paxes = BookingDB.HotelBookingPaxs.Where(x => x.Booking_No == BN && x.SID == sid && x.PaxNo == 1); var SearchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid); var RoomData = searchDB.SearchRoomDatas.Where(a => a.sID == sid).ToList(); var Rooms = Paxes.Select(x => x.RoomRef.ToString()).ToList(); foreach (var item in Rooms) { var roomsearch = searchDB.SearchRoomResults.FirstOrDefault(r => r.sID == sid && r.HotelCode == BookingData.Hotel_ID && r.RoomCode == item); SelectedRooms.Add(roomsearch); } if (BookingData.Provider_ID == "4") { var hotelData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == BookingData.Hotel_ID); var hotelDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == BookingData.Hotel_ID); confirmationModel.hotel.HotelDescription = hotelDesc.Description1; var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == BookingData.Hotel_ID).ToList(); confirmationModel.hotel.City = hotelData.cityName; confirmationModel.hotel.Country = hotelData.countryName; confirmationModel.hotel.hotelCode = BookingData.Hotel_ID; confirmationModel.hotel.hotelName = hotelData.hotelName; confirmationModel.hotel.Address = hotelData.address; confirmationModel.hotel.hotelStars = int.Parse(hotelData.rating); if (hotelsImage.Count > 0) { confirmationModel.hotel.hotelThumb = hotelsImage[0].Thum; } confirmationModel.hotel.Location = hotelData.location; } else if (BookingData.Provider_ID == "5") { using (TBOContext tBOContext = new TBOContext()) { var hotelData = tBOContext.HotelDetails.FirstOrDefault(a => a.HotelCode == BookingData.Hotel_ID); var hotelDesc = hotelData.Description; var hotelsImage = tBOContext.HotelImages.Where(a => a.HotelCode == BookingData.Hotel_ID).ToList(); confirmationModel.hotel.City = hotelData.CityName; confirmationModel.hotel.Country = hotelData.CountryName; confirmationModel.hotel.hotelCode = BookingData.Hotel_ID; confirmationModel.hotel.hotelName = hotelData.HotelName; confirmationModel.hotel.Address = hotelData.Address; //confirmationModel.hotel.hotelStars = int.Parse(hotelData.rating); if (hotelsImage.Count > 0) { confirmationModel.hotel.hotelThumb = hotelsImage[0].URL; } confirmationModel.hotel.Location = hotelData.HotelLocation; } } confirmationModel.hotel.CheckIn = SearchData.dateFrom.Value.ToString(); confirmationModel.BookingTime = BookingData.Booking_Time.Value; confirmationModel.hotel.CheckOut = SearchData.dateTo.Value.ToString(); confirmationModel.hotel.Paxes = BookingData.Pax_Qty.Value; confirmationModel.hotel.Rooms = BookingData.Rooms_Qty.Value; var PConfirm = BookingDB.BookingConfirmationDatas.FirstOrDefault(a => a.SessionID == sid && a.BookingNum == BN); if (PConfirm != null) { confirmationModel.ProviderConfirmation = PConfirm.Reference; } confirmationModel.hotel.sellCurrency = BookingData.Sell_Currency; confirmationModel.hotel.TotalSellPrice = BookingData.Sell_Price.Value; confirmationModel.bookingNum = BookingData.Booking_No; confirmationModel.mail = BookingData.Booking_Email; confirmationModel.status = BookingData.Booking_Status; CurrencyRepo repo = new CurrencyRepo(); double ExcahngeRate = repo.GetEveryDayCurrenciesConversion(SearchData.currency, BookingData.Sell_Currency, sid, DateTime.Now).Result.Customer_Sell_Rate; foreach (var item in Paxes) { ConfirmedTraveller traveller = new ConfirmedTraveller(); traveller.FirstName = item.First_name; traveller.LastName = item.Last_Name; traveller.Title = item.Salutations; var roomResult = SelectedRooms.FirstOrDefault(x => x.RoomCode == item.RoomRef.ToString()); searchRoomResults.Add(roomResult); var specRoom1 = SelectedRooms.FirstOrDefault(s => s.RoomCode == item.RoomRef.ToString()); if (specRoom1.Childern != 0) { var specRoom = SelectedRooms.FirstOrDefault(s => s.RoomCode == item.RoomRef.ToString()); var childern = RoomData.Where(a => a.adultNo == specRoom.Adults && a.childernNo == specRoom.Childern).ToList(); if (childern.Count == 1) { var childages = childern[0].childAge.Split('-'); traveller.ChildAge.AddRange(childages.ToList()); } else { var child = RoomData.FirstOrDefault(a => a.adultNo == specRoom.Adults && a.childernNo == specRoom.Childern && a.roomNo == item.RoomRef); var childages = child.childAge.Split('-'); traveller.ChildAge.AddRange(childages.ToList()); } } confirmationModel.travellers.Add(traveller); } foreach (var item in searchRoomResults) { ConfirmedRoom confirmedRoom = new ConfirmedRoom(); if (BookingData.Provider_ID == "5") { var roomNo = int.Parse(item.RoomCode); confirmedRoom.Adult = RoomData.FirstOrDefault(ad => ad.roomNo == roomNo).adultNo ?? default(int); confirmedRoom.Child = RoomData.FirstOrDefault(ad => ad.roomNo == roomNo).childernNo ?? default(int); } else { confirmedRoom.Adult = item.Adults.Value; confirmedRoom.Child = item.Childern.Value; } //var RoomsImage = hotelsImage.Where(a => a.Category.ToLower() == "hotel rooms").ToList(); //*************** //if (RoomsImage.Count > 0) //{ //confirmedRoom.Image = RoomsImage[0].URL; //} confirmedRoom.IsRefundable = item.IsRefundable.Value; confirmedRoom.Paxs = item.PaxSQty.Value; confirmedRoom.RoomCode = item.RoomCode; confirmedRoom.RoomMeal = item.meal; confirmedRoom.RoomType = item.RoomName; confirmedRoom.RateType = item.rateType; List <CancelPolicy> cancelPolicies = new List <CancelPolicy>(); using (HotelBookingDBEntities db = new HotelBookingDBEntities()) { cancelPolicies = db.CancelPolicies.Where(a => a.Sid == sid && a.HotelCode == BookingData.Hotel_ID && a.RoomCode.ToString() == item.RoomCode && a.ProviderID == BookingData.Provider_ID).ToList(); } if (cancelPolicies.Count > 0) { foreach (var p in cancelPolicies) { CancellationRule cancellation = new CancellationRule(); cancellation.FromDate = p.FromDate.ToString(); if (BookingData.Sell_Currency == p.Currency) { cancellation.Price = (double)p.SellPrice.Value; } else { cancellation.Price = (double)p.SellPrice.Value * ExcahngeRate; } cancellation.CanellationRuleText = cancellation.Price + " " + BookingData.Sell_Currency + " From " + p.FromDate.Value.ToString("MMMM dd, yyyy"); confirmedRoom.cancellations.Add(cancellation); } } confirmationModel.rooms.Add(confirmedRoom); } var ConfData = HBDB.BookingConfirmations.FirstOrDefault(a => a.BookingNum == BN); if (ConfData != null) { confirmationModel.PayableNote = "Payable through " + ConfData.supplier + ", acting as agent for the service operating company, details of which can be provided upon request. VAT: " + ConfData.Remark + " Reference:" + ConfData.Reference; } return(confirmationModel); }catch (Exception ex) { LoggingHelper.WriteToFile("ConfirmationController/ERROR/", "ConfirmationDAL" + "INDAL" + sid, "ConfirmData", "Sid is " + sid + " and Booking is" + BN + ex.InnerException?.Message + ex.Message + ex.StackTrace); return(null); } }
public static RequiredBookingData GetRoomsData(string sid, string hotel, string Pid, string rooms) { try { SearchDBEntities searchDB = new SearchDBEntities(); RequiredBookingData requiredBooking = new RequiredBookingData(); var data = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid); var HRooms = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList(); requiredBooking.Currency = data?.currency; requiredBooking.City = data?.cityName; var RoomsCode = rooms.Split('-'); foreach (var item in RoomsCode) { var roomdata = HRooms.FirstOrDefault(a => a.RoomCode == item); requiredBooking.rooms.Add(roomdata); } if (Pid == "4") { hotelsDBEntities hotelsDB = new hotelsDBEntities(); var HData = hotelsDB.hotels.FirstOrDefault(d => d.hotelID == hotel); var HDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(x => x.hotelID == hotel); var Hsearch = searchDB.SearchHotelResults.FirstOrDefault(x => x.HotelCode == hotel && x.sID == sid && x.ProviderID.ToString() == Pid); var Himage = hotelsDB.HotelsImages.FirstOrDefault(v => v.HotelID == hotel); requiredBooking.HotelName = HData?.hotelName; requiredBooking.Hotelstar = int.Parse(HData?.rating); requiredBooking.address = HData?.address; requiredBooking.CheckIn = data?.dateFrom.Value.ToString(); requiredBooking.Checkout = data?.dateTo.Value.ToString(); requiredBooking.City = HData?.cityName; requiredBooking.location = HData?.location; requiredBooking.HotelDesc = HDesc?.Description1; requiredBooking.providerHotelID = Hsearch?.ProviderHotelId; requiredBooking.providerID = Pid; //MG requiredBooking.Lat = HData?.Lat; requiredBooking.Lng = HData?.Lng; if (Himage != null) { requiredBooking.hotelThumb = Himage.Thum; } } else if (Pid == "5") { TBOContext hotelsDB = new TBOContext(); var HData = hotelsDB.HotelDetails.FirstOrDefault(d => d.HotelCode == hotel); var Hsearch = searchDB.SearchHotelResults.FirstOrDefault(x => x.HotelCode == hotel && x.sID == sid && x.ProviderID.ToString() == Pid); var Himage = hotelsDB.HotelImages.FirstOrDefault(v => v.HotelCode == hotel); Enum.TryParse(HData.HotelRating, out HotelStars stars); requiredBooking.HotelName = HData?.HotelName; requiredBooking.Hotelstar = (int)stars + 1; requiredBooking.address = HData?.Address; requiredBooking.CheckIn = data?.dateFrom.Value.ToString(); requiredBooking.Checkout = data?.dateTo.Value.ToString(); requiredBooking.City = HData?.CityName; requiredBooking.location = HData?.HotelLocation; requiredBooking.HotelDesc = HData.Description; requiredBooking.providerHotelID = HData?.HotelCode; requiredBooking.providerID = Pid; //MG requiredBooking.Lat = HData?.HotelLocation; requiredBooking.Lng = HData?.Map; if (Himage != null) { requiredBooking.hotelThumb = Himage.URL; } //instead of call pricing api //RoomResult roomResult = new RoomResult(); //using (HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities()) //{ // foreach (var item in requiredBooking.rooms) // { // var cancellations = hotelBookingDB.CancelPolicies.Where(x => x.HotelCode == hotel && x.Sid == sid && x.ProviderID.ToString() == Pid /*&& x.RoomCode ==int.Parse(item.RoomCode)*/).ToList(); // //roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms; // //handel cancel policy // foreach (var cancel in cancellations) // { // CancellationRule cancellation = new CancellationRule(); // //DateTime dateFrom = Convert.ToDateTime(cancel.FromDate); // cancellation.FromDate = cancel.FromDate.ToString();// dateFrom.ToString("MMMM dd, yyyy"); // cancellation.ToDate = cancel.ToDate.ToString(); // cancellation.Cost = (double)cancel.Cost; // cancellation.ChargeType = cancel.ChargeType.ToString(); // cancellation.Curency = cancel.Currency; // roomResult.cancellationRules.Add(cancellation); // } // } // requiredBooking.TBoRooms.Add(roomResult); //} } return(requiredBooking); // requiredBooking.rooms = searchDB.SearchRoomResults.Where(a => RoomsCode.Contains(a.RoomCode) && a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList(); } catch (Exception ex) { throw ex; } }
public static HotelSearchRoom GetRoomsByHotelIDAndProvide(string Sid, string pid, string Hid) { try { SearchDBEntities searchDB = new SearchDBEntities(); List <RoomResult> roomResults = new List <RoomResult>(); var RoomsRuslt = searchDB.SearchRoomResults.Where(a => a.HotelCode == Hid && a.sID == Sid && a.ProviderId.ToString() == pid).ToList(); var Dur = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == Sid).duration; if (pid == "5") { TBO.DAL.Models.Context.TBOContext context = new TBO.DAL.Models.Context.TBOContext(); var HImages = context.HotelImages.Where(a => a.HotelCode == Hid).ToList(); List <string> images = HImages.Select(x => x.URL).ToList(); var hotelSearchData = context.HotelDetails.FirstOrDefault(a => a.HotelCode == Hid); var facilties = context.Facilities.Where(ff => ff.HotelCode == Hid).ToList(); HotelSearchRoom hotelSearchRoom = new HotelSearchRoom(); //facilties foreach (var item in facilties) { hotelSearchRoom.Amenities.Add(new HotelAmenity { Amenity = item.FacilityVal, HotelCode = item.HotelCode }); } hotelSearchRoom.providerHotelID = hotelSearchData.HotelCode; hotelSearchRoom.hotelCode = hotelSearchData.HotelCode; hotelSearchRoom.Address = hotelSearchData.Address; hotelSearchRoom.Lng = hotelSearchData.Map; //hotelSearchRoom.Lat = hotelSearchData.Lat; //hotelSearchRoom.hotelStars = int.Parse(hotelSearchData.HotelRating);// hotelSearchRoom.hotelName = hotelSearchData.HotelName; hotelSearchRoom.providerID = "5"; hotelSearchRoom.Location = hotelSearchData.HotelLocation; hotelSearchRoom.hotelDescription = hotelSearchData.Description; //hotelSearchRoom.shortcutHotelDescription = hotelSearchDesc.Description2; hotelSearchRoom.City = hotelSearchData.CityName; hotelSearchRoom.Country = hotelSearchData.CountryName; hotelSearchRoom.hotelImages = images; #region instead call available hotel room api to get tbo rooms //if (RoomsRuslt.Count > 0) //{ // foreach (var item in RoomsRuslt) // { // RoomResult result = new RoomResult(); // result.CostPrice = item.costPrice.Value; // result.DiscountId = item.DiscountId.Value; // result.DiscountValue = item.DiscountVal.Value; // //result.Images = roomsImages.Select(a => a.URL).ToList(); // // result.IsRefundable=item. // result.MarkupId = item.MarkupId.Value; // result.MarkupValue = item.MarkupVal.Value; // result.Paxs = item.PaxSQty.Value; // result.RatePerNight = (item.SellPrice / Dur).Value; // result.RoomCode = item.roomType; // result.RoomIndex = int.Parse(item.RoomCode); // result.RoomMeal = item.meal; // result.RoomReference = item.RoomReference; // result.RoomType = item.RoomName; // result.TotalSellPrice = item.SellPrice.Value; // result.Adult = item.Adults.Value; // result.Child = item.Childern.Value; // result.IsRefundable = item.IsRefundable.Value; // //var repeatedRoom = roomResults.Where(x => x.RoomReference == item.RoomReference).ToList(); // //if (repeatedRoom.Count < 1) // roomResults.Add(result); // } // var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList(); // for (int i = 0; i < roomsDetails.Count; i++) // { // SearchRoomData roomresult = new SearchRoomData(); // roomresult = null; // var resultsR = roomResults.ToList();// Where(x => x.Adult == roomsDetails[i].adultNo.Value && x.Child == roomsDetails[i].childernNo.Value).ToList(); // SeparatedRoom srts = new SeparatedRoom(); // srts.RoomResults.AddRange(resultsR); // hotelSearchRoom.rooms.Add(srts); // } //} #endregion return(hotelSearchRoom); } else { hotelsDBEntities hotelsDB = new hotelsDBEntities(); var HImages = hotelsDB.HotelsImages.Where(a => a.HotelID == Hid).ToList(); var roomsImages = HImages.Where(a => a.Category.ToLower() == "hotel rooms"); if (RoomsRuslt.Count > 0) { foreach (var item in RoomsRuslt) { RoomResult result = new RoomResult(); result.CostPrice = item.costPrice.Value; result.DiscountId = item.DiscountId.Value; result.DiscountValue = item.DiscountVal.Value; result.Images = roomsImages.Select(a => a.URL).ToList(); // result.IsRefundable=item. result.MarkupId = item.MarkupId.Value; result.MarkupValue = item.MarkupVal.Value; result.Paxs = item.PaxSQty.Value; result.RatePerNight = (item.SellPrice / Dur).Value; result.RoomCode = item.roomType; result.RoomIndex = int.Parse(item.RoomCode); result.RoomMeal = item.meal; result.RoomReference = item.RoomReference; result.RoomType = item.RoomName; result.TotalSellPrice = item.SellPrice.Value; result.Adult = item.Adults.Value; result.Child = item.Childern.Value; result.IsRefundable = item.IsRefundable.Value; var repeatedRoom = roomResults.Where(x => x.RoomReference == item.RoomReference).ToList(); if (repeatedRoom.Count < 1) { roomResults.Add(result); } } //// get hotel HotelSearchRoom hotelSearchRoom = new HotelSearchRoom(); List <string> images = HImages.Select(x => x.URL).ToList(); List <HotelAmenity> amenties = (from A in hotelsDB.HotelsAmenities where A.hotelID == Hid select new HotelAmenity() { Amenity = A.amenitie, HotelCode = A.hotelID, status = A.Status }).ToList(); var hotelSearchData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == Hid); var hotelSearchpro = hotelsDB.hotelsProviders.FirstOrDefault(a => a.hotelID == hotelSearchData.ID.ToString() && a.providerID == pid); var hotelSearchDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == Hid); hotelSearchRoom.providerHotelID = hotelSearchpro.providerHotelID; hotelSearchRoom.hotelCode = hotelSearchData.hotelID; hotelSearchRoom.Address = hotelSearchData.address; hotelSearchRoom.Lng = hotelSearchData.Lng; hotelSearchRoom.Lat = hotelSearchData.Lat; hotelSearchRoom.hotelStars = int.Parse(hotelSearchData.rating);// hotelSearchRoom.hotelName = hotelSearchData.hotelName; hotelSearchRoom.providerID = hotelSearchpro.providerID; hotelSearchRoom.Location = hotelSearchData.location; hotelSearchRoom.hotelDescription = hotelSearchDesc.Description1; hotelSearchRoom.shortcutHotelDescription = hotelSearchDesc.Description2; hotelSearchRoom.City = hotelSearchData.cityName; hotelSearchRoom.Country = hotelSearchData.countryName; var hotelAmenities = amenties.Where(a => a.HotelCode == Hid).Distinct().ToList(); foreach (var am in hotelAmenities) { am.Amenity = am.Amenity.Replace(" ", String.Empty); if (hotelSearchRoom.Amenities.FirstOrDefault(x => x.Amenity == am.Amenity) == null) { hotelSearchRoom.Amenities.Add(am); } } // hotelSearchRoom.Amenities = ams; hotelSearchRoom.hotelImages = images; // searchDB to know list of each rooms if (pid == "4") { /* * List<RoomForSearch> searchRooms = new List<RoomForSearch>(); * var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList(); * foreach (var item in roomsDetails) * { * SearchRoomData roomresult = new SearchRoomData(); * roomresult = null; * var results = roomsDetails.Where(x => x.adultNo == item.adultNo && x.childernNo == item.childernNo).ToList(); * foreach (var r in searchRooms) * { * if (roomresult == null ) * { * roomresult = r.rooms.FirstOrDefault(a => a.adultNo == item.adultNo && a.childernNo == item.childernNo); * } * } * * if (roomresult == null) * { * * RoomForSearch roomFor = new RoomForSearch(); * roomFor.num = results.Count; * roomFor.rooms = results; * searchRooms.Add(roomFor); * * } * // * //var ReqiredRooms= roomResults.Where(x => x.Adult == item.adultNo && x.Child == item.childernNo).ToList(); * //SeparatedRoom sr = new SeparatedRoom(); * // sr.RoomResults.AddRange(ReqiredRooms); * // hotelSearchRoom.rooms.Add(sr); * * } * foreach (var item in searchRooms) * { * var ReqiredRooms = roomResults.Where(x => x.Adult == item.rooms[0].adultNo && x.Child == item.rooms[0].childernNo).ToList(); * if (item.num == 1) * { * SeparatedRoom sr = new SeparatedRoom(); * sr.RoomResults.AddRange(ReqiredRooms); * hotelSearchRoom.rooms.Add(sr); * } * else * { * int roomNum = ReqiredRooms.Count / item.num; * int skipNum = 0; * for (int i = 0; i < item.num; i++) * { * SeparatedRoom sr = new SeparatedRoom(); * List<RoomResult> roomResultsData = new List<RoomResult>(); * // var roomsReq = ReqiredRooms.Skip(skipNum).ToList(); * for (int j = skipNum; j < skipNum + roomNum; j++) * { * roomResultsData.Add(ReqiredRooms[j]); * * * } * // sr.RoomResults.AddRange(roomsReq.Take(roomNum).ToList()); * sr.RoomResults.AddRange(roomResultsData); * skipNum = roomNum * (i + 1); * hotelSearchRoom.rooms.Add(sr); * } * } * }*/ var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList(); for (int i = 0; i < roomsDetails.Count; i++) { SearchRoomData roomresult = new SearchRoomData(); roomresult = null; var resultsR = roomResults.Where(x => x.Adult == roomsDetails[i].adultNo.Value && x.Child == roomsDetails[i].childernNo.Value).ToList(); SeparatedRoom srts = new SeparatedRoom(); srts.RoomResults.AddRange(resultsR); hotelSearchRoom.rooms.Add(srts); } } if (pid == "2") { var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList(); for (int i = 0; i < roomsDetails.Count; i++) { SearchRoomData roomresult = new SearchRoomData(); roomresult = null; var resultsR = roomResults.Where(x => x.RoomCode == (i + 1).ToString()).ToList(); SeparatedRoom srts = new SeparatedRoom(); srts.RoomResults.AddRange(resultsR); hotelSearchRoom.rooms.Add(srts); } } // hotelSearchRoom.rooms= roomResults; var minRoom = roomResults.Where(a => a.RatePerNight == roomResults.Min(x => x.RatePerNight)).FirstOrDefault(); if (minRoom != null) { hotelSearchRoom.hotelRate = minRoom.RatePerNight; hotelSearchRoom.costPrice = minRoom.CostPrice; hotelSearchRoom.TotalSellPrice = minRoom.TotalSellPrice; hotelSearchRoom.MarkupId = minRoom.MarkupId; hotelSearchRoom.MarkupValue = minRoom.MarkupValue; hotelSearchRoom.DiscountId = minRoom.DiscountId; hotelSearchRoom.DiscountValue = minRoom.DiscountValue; } return(hotelSearchRoom); } return(null); } } catch (Exception ex) { throw ex; } }
public UpcomingHistory GetUpcomingAndHistoryData(string mail) { try { UpcomingHistory upcomingHistory = new UpcomingHistory(); HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); SearchDBEntities searchDB = new SearchDBEntities(); hotelsDBEntities hotelsDB = new hotelsDBEntities(); var BookingData = BookingDB.HotelsBookings.Where(a => a.Booking_Email == mail).ToList(); foreach (var item in BookingData) { ConfirmationModel BookingModel = new ConfirmationModel(); var SearchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == item.SessionId); if (SearchData.dateFrom >= DateTime.Now) { var hotelData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == item.Hotel_ID); var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == item.Hotel_ID).ToList(); BookingModel.hotel.CheckIn = SearchData.dateFrom.Value.ToString("dd-MM-yyyy"); BookingModel.hotel.CheckOut = SearchData.dateTo.Value.ToString("dd-MM-yyyy"); BookingModel.hotel.City = hotelData.cityName; BookingModel.hotel.Country = hotelData.countryName; BookingModel.hotel.hotelCode = item.Hotel_ID; BookingModel.hotel.hotelName = hotelData.hotelName; BookingModel.hotel.hotelStars = int.Parse(hotelData.rating) > 0 ? int.Parse(hotelData.rating) - 558 : 0; BookingModel.hotel.hotelThumb = hotelsImage[0].Thum; BookingModel.hotel.Location = hotelData.location; BookingModel.hotel.Paxes = item.Pax_Qty.Value; BookingModel.hotel.Rooms = item.Rooms_Qty.Value; BookingModel.hotel.sellCurrency = item.Sell_Currency; BookingModel.hotel.TotalSellPrice = item.Sell_Price.Value; BookingModel.bookingNum = item.Booking_No; BookingModel.mail = item.Booking_Email; BookingModel.status = item.Booking_Status; upcomingHistory.Upcoming.Add(BookingModel); } else { var hotelData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == item.Hotel_ID); var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == item.Hotel_ID).ToList(); BookingModel.hotel.CheckIn = SearchData.dateFrom.Value.ToString("dd-MM-yyyy"); BookingModel.hotel.CheckOut = SearchData.dateTo.Value.ToString("dd-MM-yyyy"); BookingModel.hotel.City = hotelData.cityName; BookingModel.hotel.Country = hotelData.countryName; BookingModel.hotel.hotelCode = item.Hotel_ID; BookingModel.hotel.hotelName = hotelData.hotelName; BookingModel.hotel.hotelStars = int.Parse(hotelData.rating) > 0 ? int.Parse(hotelData.rating) - 558 : 0; BookingModel.hotel.hotelThumb = hotelsImage[0].Thum; BookingModel.hotel.Location = hotelData.location; BookingModel.hotel.Paxes = item.Pax_Qty.Value; BookingModel.hotel.Rooms = item.Rooms_Qty.Value; BookingModel.hotel.sellCurrency = item.Sell_Currency; BookingModel.hotel.TotalSellPrice = item.Sell_Price.Value; BookingModel.bookingNum = item.Booking_No; BookingModel.mail = item.Booking_Email; BookingModel.status = item.Booking_Status; upcomingHistory.Histories.Add(BookingModel); } } return(upcomingHistory); } catch (Exception ex) { LoggingHelper.WriteToFile("UpcomingAndHistoryController/ERRor/", "UpcomingAndHistory" + "INController" + mail, "InComingData", ex.InnerException?.Message + ex.Message + ex.StackTrace); return(null); } }
public static void SaveBookingResult(CheckOutData BookingResults, string BNNum) { List <int> rooms = new List <int>(); try { var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; foreach (var item in BookingResults.Travellers) { if (!rooms.Contains(item.roomNo)) { rooms.Add(item.roomNo); } } using (DBConnection db = new DBConnection()) { db.DB_OpenConnection("HB"); SearchDBEntities searchDB = new SearchDBEntities(); #region old code save use SP // hotel rates //DataTable dt = new DataTable(); //DataColumn SessionId = new DataColumn("SessionId"); //DataColumn Booking_No = new DataColumn("Booking_No"); //DataColumn City = new DataColumn("City"); //DataColumn HotelId = new DataColumn("HotelId"); //DataColumn HotelPId = new DataColumn("HotelPId"); //DataColumn Rooms_Qty = new DataColumn("Rooms_Qty"); //DataColumn Pax_Qty = new DataColumn("Pax_Qty"); //DataColumn Booking_Status = new DataColumn("Booking_Status"); //DataColumn Customer_ID = new DataColumn("Customer_ID"); //DataColumn Provider_ID = new DataColumn("Provider_ID"); //DataColumn Sell_Price = new DataColumn("Sell_Price"); //DataColumn Sell_Currency = new DataColumn("Sell_Currency"); //DataColumn Booking_Phone_Code = new DataColumn("Booking_Phone_Code"); //DataColumn Booking_Phone = new DataColumn("Booking_Phone"); //DataColumn Booking_Email = new DataColumn("Booking_Email"); //DataColumn Pax_Name = new DataColumn("Pax_Name"); //DataColumn Foreign_Amount = new DataColumn("Foreign_Amount"); //DataColumn Total_Cost_main = new DataColumn("Total_Cost_main"); //DataColumn Bookingsrc = new DataColumn("src"); //Rooms_Qty.DataType = typeof(int); //Pax_Qty.DataType = typeof(int); //Sell_Price.DataType = typeof(double); //Foreign_Amount.DataType = typeof(double); //Total_Cost_main.DataType = typeof(int); //dt.Columns.Add(SessionId); //dt.Columns.Add(Booking_No); //dt.Columns.Add(City); //dt.Columns.Add(HotelId); //dt.Columns.Add(HotelPId); //dt.Columns.Add(Rooms_Qty); //dt.Columns.Add(Pax_Qty); //dt.Columns.Add(Booking_Status); //dt.Columns.Add(Customer_ID); //dt.Columns.Add(Provider_ID); //dt.Columns.Add(Sell_Price); //dt.Columns.Add(Sell_Currency); //dt.Columns.Add(Booking_Phone_Code); //dt.Columns.Add(Booking_Phone); //dt.Columns.Add(Booking_Email); //dt.Columns.Add(Pax_Name); //dt.Columns.Add(Foreign_Amount); //dt.Columns.Add(Total_Cost_main); //dt.Columns.Add(Bookingsrc); //// room result //DataTable dr = new DataTable(); //DataColumn rsID = new DataColumn("sID"); //DataColumn rProviderID = new DataColumn("ProviderId"); //DataColumn rBooking_No = new DataColumn("Booking_No"); //DataColumn rRoomNo = new DataColumn("RoomNo"); //DataColumn rRoomCat = new DataColumn("RoomCat"); //DataColumn rRoomType = new DataColumn("RoomType"); //DataColumn rMeal = new DataColumn("Meal"); //DataColumn rPaxesQty = new DataColumn("PaxesQty"); //DataColumn rRefund = new DataColumn("Refund"); //rProviderID.DataType = typeof(int); //rRoomNo.DataType = typeof(int); //rPaxesQty.DataType = typeof(int); //dr.Columns.Add(rsID); //dr.Columns.Add(rProviderID); //dr.Columns.Add(rBooking_No); //dr.Columns.Add(rRoomNo); //dr.Columns.Add(rRoomCat); //dr.Columns.Add(rRoomType); //dr.Columns.Add(rMeal); //dr.Columns.Add(rPaxesQty); //dr.Columns.Add(rRefund); //DataTable dn = new DataTable(); //DataColumn nBooking_No = new DataColumn("Booking_No"); //DataColumn nNdate = new DataColumn("Ndate"); //DataColumn nrate = new DataColumn("rate"); //DataColumn nCurrency = new DataColumn("Currency"); //DataColumn nRoomNo = new DataColumn("Room_No"); //DataColumn nExchangeRate = new DataColumn("ExchangeRate"); //nNdate.DataType = typeof(DateTime); //nrate.DataType = typeof(double); //nRoomNo.DataType = typeof(int); //nExchangeRate.DataType = typeof(double); //dn.Columns.Add(nBooking_No); //dn.Columns.Add(nNdate); //dn.Columns.Add(nrate); //dn.Columns.Add(nCurrency); //dn.Columns.Add(nRoomNo); //dn.Columns.Add(nExchangeRate); //DataTable dp = new DataTable(); //DataColumn pBooking_No = new DataColumn("Booking_No"); //DataColumn psID = new DataColumn("sID"); //DataColumn pRoomNo = new DataColumn("RoomNo"); //DataColumn ppaxtype = new DataColumn("paxtype"); //DataColumn pFirstName = new DataColumn("FirstName"); //DataColumn pLastName = new DataColumn("LastName"); //DataColumn saluation = new DataColumn("saluation"); //DataColumn pBD = new DataColumn("BD"); //DataColumn pNationality = new DataColumn("Nationality"); //DataColumn pphone = new DataColumn("phone"); //DataColumn pphoneCode = new DataColumn("phoneCode"); //DataColumn PPaxNo = new DataColumn("PaxNo"); //DataColumn PRoomRef = new DataColumn("Ref"); //pRoomNo.DataType = typeof(int); //PPaxNo.DataType = typeof(int); //PRoomRef.DataType = typeof(int); //dp.Columns.Add(psID); //dp.Columns.Add(pBooking_No); //dp.Columns.Add(pRoomNo); //dp.Columns.Add(ppaxtype); //dp.Columns.Add(pFirstName); //dp.Columns.Add(pLastName); //dp.Columns.Add(saluation); //dp.Columns.Add(pBD); //dp.Columns.Add(pNationality); //dp.Columns.Add(pphone); //dp.Columns.Add(pphoneCode); //dp.Columns.Add(PPaxNo); //dp.Columns.Add(PRoomRef); //DataRow DtHr = dt.NewRow(); //DtHr["SessionId"] = BookingResults.Sid; //DtHr["Booking_No"] = BNNum;//////////********************* //DtHr["City"] = BookingResults.CityName; //DtHr["HotelId"] = BookingResults.HotelID; //DtHr["HotelPId"] = BookingResults.ProviderHotelID; //DtHr["Rooms_Qty"] = int.Parse(BookingResults.RoomQty); //DtHr["Pax_Qty"] = BookingResults.Travellers.Count; //DtHr["Booking_Status"] = "NewBooking"; #endregion HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities(); var traveller = BookingResults.Travellers.FirstOrDefault(a => a.Main == true); var customer = hotelBookingDB.Customers.FirstOrDefault(a => a.Email == BookingResults.Mail); var CusID = 0; if (customer != null) { //DtHr["Customer_ID"] = customer.ID; CusID = customer.ID; } else { Customer cus = new Customer(); cus.Country = traveller.nationality; cus.Date_Of_Birth = traveller.DateOfBirth; cus.Email = BookingResults.Mail; cus.First_Name = traveller.firstName; cus.Last_Name = traveller.lastName; cus.Phone = traveller.phone; cus.Phone_Code = traveller.phoneCode; cus.Salutations = traveller.salutation; hotelBookingDB.Customers.Add(cus); hotelBookingDB.SaveChanges(); //DtHr["Customer_ID"] = cus.ID; CusID = cus.ID; } //DtHr["Provider_ID"] = BookingResults.Pid; //DtHr["Sell_Price"] = BookingResults.SellPrice; //DtHr["Sell_Currency"] = BookingResults.Currency; //DtHr["Booking_Phone_Code"] = traveller.phoneCode; //DtHr["Booking_Phone"] = traveller.phone; //DtHr["Booking_Email"] = BookingResults.Mail; traveller.lastName = traveller.lastName.Replace(" ", String.Empty); //DtHr["Pax_Name"] = traveller.firstName + " " + traveller.lastName; //DtHr["Foreign_Amount"] = BookingResults.totalCost; //DtHr["Total_Cost_main"] = BookingResults.totalCost; //DtHr["src"] = BookingResults.Src; //TBO HotelsBooking hotelsBooking = new HotelsBooking { //Booking_Conf = Booking_Email = BookingResults.Mail, Booking_No = BNNum, Booking_phone = traveller.phone, Booking_Phone_Code = traveller.phoneCode, Booking_Status = "NewBooking", Booking_Time = DateTime.UtcNow, City = BookingResults.CityName, Customer_ID = CusID.ToString(), Foreign_Amount = BookingResults.totalCost, //Form_Of_Payment //HotelConfirmationNo HotelProviderID = BookingResults.ProviderHotelID, Hotel_ID = BookingResults.HotelID, //InvoicePdf //NotificationKey Pax_Name = traveller.firstName + " " + traveller.lastName, Pax_Qty = BookingResults.Travellers.Count, //PromoCode_Amount Provider_ID = BookingResults.Pid, Rooms_Qty = int.Parse(BookingResults.RoomQty), Sell_Currency = BookingResults.Currency, Sell_Price = BookingResults.SellPrice, Total_Cost_Main_Currency = BookingResults.totalCost, SessionId = BookingResults.Sid, Sales_Channel = BookingResults.Src }; hotelBookingDB.HotelsBookings.Add(hotelsBooking); // //dt.Rows.Add(DtHr); var searchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == BookingResults.Sid); int duration = Convert.ToInt32((searchData.dateTo - searchData.dateFrom).Value.TotalDays); var roomsDB = searchDB.SearchRoomResults.Where(a => a.sID == BookingResults.Sid && a.HotelCode == BookingResults.HotelID); var Bookingrooms = BookingResults.Travellers.Select(x => x.roomRef).ToList().Distinct(); foreach (var item in Bookingrooms) { var specificRoom = BookingResults.Travellers.FirstOrDefault(x => x.roomRef == item); var roomdata = roomsDB.FirstOrDefault(a => a.RoomCode == specificRoom.roomNo.ToString() && a.HotelCode == BookingResults.HotelID); HotelBookingRoom room = new HotelBookingRoom { Booking_No = BNNum, Meal = roomdata.meal, Paxs_Qty = roomdata.PaxSQty, PID = int.Parse(BookingResults.Pid), //Room_Category = roomdata.RoomName, Room_No = specificRoom.roomNo, //Room_Type = roomdata.roomType, SID = BookingResults.Sid, }; hotelBookingDB.HotelBookingRooms.Add(room); //DataRow DRR = dr.NewRow(); //DRR["sID"] = BookingResults.Sid; //DRR["ProviderId"] = int.Parse(BookingResults.Pid);////////// //DRR["Booking_No"] = BNNum;////////////////////////////************* //DRR["RoomNo"] = specificRoom.roomNo; //DRR["RoomCat"] = roomdata.RoomName; //DRR["RoomType"] = roomdata.roomType; //DRR["Meal"] = roomdata.meal; //DRR["PaxesQty"] = roomdata.PaxSQty; //// DRR["Refund"] = "";////////////// //dr.Rows.Add(DRR); for (int j = 0; j < duration; j++) { HotelBookingNight night = new HotelBookingNight { Booking_No = BNNum, Currency = roomdata.SellCurrency, NightDate = searchData.dateFrom.Value.AddDays(j + 1), Rate = roomdata.SellPrice.Value / duration, Room_No = specificRoom.roomNo }; hotelBookingDB.HotelBookingNights.Add(night); //DataRow DrN = dn.NewRow(); //DrN["Booking_No"] = BNNum;//*************************** //DrN["Ndate"] = searchData.dateFrom.Value.AddDays(j + 1); //DrN["rate"] = roomdata.SellPrice.Value / duration; //DrN["Currency"] = roomdata.SellCurrency; //DrN["Room_No"] = specificRoom.roomNo; //dn.Rows.Add(DrN); } HotelBookingRoomsStatu roomsStatus = new HotelBookingRoomsStatu(); roomsStatus.Booking_No = BNNum; roomsStatus.Room_No = specificRoom.roomNo; roomsStatus.Room_Status = 1; hotelBookingDB.HotelBookingRoomsStatus.Add(roomsStatus); } foreach (var item in BookingResults.Travellers) { HotelBookingPax pax = new HotelBookingPax { Booking_No = BNNum, DateOfBirth = item.DateOfBirth.ToString(), First_name = item.firstName, Last_Name = item.lastName, Nationality = item.nationality, PaxNo = item.TravellerId, Pax_Type = item.paxType, Phone = item.phone, Phone_Code = item.phoneCode, RoomRef = item.roomRef, Room_No = item.roomNo, //room index Salutations = item.salutation, SID = BookingResults.Sid, Lead = item.Main }; hotelBookingDB.HotelBookingPaxs.Add(pax); //DataRow Dpri = dp.NewRow(); //Dpri["sID"] = BookingResults.Sid; //Dpri["Booking_No"] = BNNum;//////////**************** //Dpri["RoomNo"] = item.roomNo;//////////////////////////// //Dpri["paxtype"] = item.paxType; //Dpri["FirstName"] = item.firstName; //Dpri["LastName"] = item.lastName; //Dpri["saluation"] = item.salutation; //Dpri["BD"] = item.DateOfBirth.ToString(); //Dpri["Nationality"] = item.nationality; //Dpri["phone"] = item.phone; //Dpri["phoneCode"] = item.phoneCode; //Dpri["PaxNo"] = item.TravellerId; //Dpri["Ref"] = item.roomRef; //dp.Rows.Add(Dpri); } HotelBookingStatu bookingStatus = new HotelBookingStatu(); bookingStatus.Booking_No = BNNum; bookingStatus.Booking_Status = "New Booking"; bookingStatus.Status_Time = DateTime.Now; hotelBookingDB.HotelBookingStatus.Add(bookingStatus); //Dictionary<string, object> keyValues = new Dictionary<string, object>(); //keyValues.Add("Bookindata", dt); //keyValues.Add("RoomList", dr); //keyValues.Add("nigtData", dn); //keyValues.Add("paxes", dp); // db.SaveSP_Async("SaveBookingResult", keyValues); hotelBookingDB.SaveChanges(); } } catch (Exception ex) { LoggingHelper.WriteToFile("SaveBookingController/Errors/", "SaveSearchResult_" + BookingResults.Sid, "", ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace); throw ex; } }
public static CheckAvailabilityResult GetRoomsFromProviders(Common.Models.AvailabilityReq roomsReq, String ArrivalDate, string dur) { //try //{ CheckAvailabilityResult results = new CheckAvailabilityResult(); results.TotalCost = 0; #region redo //if (roomsReq.PID == "4") //{ // HotelBedsIntegration.Models.Availability.AvailabilityReq req = new HotelBedsIntegration.Models.Availability.AvailabilityReq(); // req.rooms = new List<RoomReq>(); // req.upselling = "True"; // foreach (var item in roomsReq.Rooms.Select(a => a.RoomRef).ToList()) // { // RoomReq roomReq = new RoomReq(); // roomReq.rateKey = item; // req.rooms.Add(roomReq); // } // var availabilityRes = HotelBedsIntegration.Controller.CheckAvailability.checkAvailability(req, roomsReq.Sid); // //MG // results.ProviderCur = availabilityRes.Result.currency; // if (availabilityRes.Result.rooms != null) // { // if (roomsReq.TotalCost == double.Parse(availabilityRes.Result.totalNet) || roomsReq.TotalCost > double.Parse(availabilityRes.Result.totalNet)) // { // results.Status = 0; // results.TotalCost = roomsReq.TotalCost; // } // else // { // results.Status = 1; // results.TotalCost = double.Parse(availabilityRes.Result.totalNet); // } // foreach (var item in availabilityRes.Result.rooms) // { // for (int i = 0; i < item.rates.Count; i++) // { // RoomResult roomResult = new RoomResult(); // roomResult.CostPrice = double.Parse(item.rates[i].net); // var room = roomsReq.Rooms.Where(a => a.RoomRef == item.rates[i].rateKey).OrderBy(a => a.RoomId).ToList();/////////get specific roomid // if (room.Count > 1) // { // if (results.Result.FirstOrDefault(x => x.RoomCode == item.rates[i].rateKey) == null) // { // roomResult.RoomIndex = room[0].RoomId; // } // else // { // roomResult.RoomIndex = room[results.Result.Where(x => x.RoomCode == item.rates[i].rateKey).ToList().Count].RoomId; // } // } // else // { // roomResult.RoomIndex = room[0].RoomId; // } // roomResult.RoomCode = item.rates[i].rateKey; // if (results.Status == 0) // { // roomResult.CostPrice = roomsReq.Rooms.FirstOrDefault(v => v.RoomRef == item.rates[i].rateKey).Cost; // } // else // { // roomResult.CostPrice = double.Parse(item.rates[i].net); // } // // roomResult.TotalSellPrice = double.Parse(r.net); // foreach (var Cancel in item.rates[i].cancellationPolicies) // { // roomResult.cancellationRules.Add(new CancellationRule // { // Cost = double.Parse(Cancel.amount), // FromDate = Cancel.from.ToLongDateString(), // ToDate = null, // CanellationRuleText = null // }); // } // results.Result.Add(roomResult); // } // } // } // else // { // results.Status = 2; // } //} //else if (roomsReq.PID == "2") //{ // // get hotelproperty and arrival and duration // get search rooms result from db // HotelManager hotelManager = new HotelManager(); // var hotelsData = hotelManager.GetHotelDataForTsAvailability(roomsReq); // if (hotelsData != null) // { // foreach (var item in hotelsData.roomResults) // { // // call ts and map it with db and ..or new obj // var roomsResults = new List<SearchRoomResult>(); // roomsResults.Add(item); // var availReq = AvailabiltyManager.prepareAvailabilityObj(roomsResults, hotelsData.HodelData.ProviderHotelCode, ArrivalDate, dur); // var availRes = IntegrationTotalStay.Controller.CheckAvailability.GetTSAvailability(availReq, roomsReq.Sid); // if (availRes != null) // { // RoomResult roomResult = new RoomResult(); // roomResult.Adult = item.Adults.Value; // roomResult.Child = item.Childern.Value; // roomResult.RoomIndex = int.Parse(item.RoomCode); // roomResult.RoomReference = availRes.PreBookingToken; // if (availRes.TotalPrice == item.costPrice.Value.ToString() || double.Parse(availRes.TotalPrice) < item.costPrice.Value) // { // results.Status = 0; // roomResult.CostPrice = item.costPrice.Value; // } // else // { // results.Status = 1; // roomResult.CostPrice = double.Parse(availRes.TotalPrice); // } // // handel cancel policy // foreach (var cancel in availRes.Cancellations.Cancellation) // { // CancellationRule cancellation = new CancellationRule(); // DateTime dateFrom = Convert.ToDateTime(cancel.StartDate); // cancellation.FromDate = dateFrom.ToString("MMMM dd, yyyy"); // cancellation.ToDate = cancel.EndDate; // cancellation.Cost = double.Parse(cancel.Penalty); // roomResult.cancellationRules.Add(cancellation); // } // // roomResult.RoomCode= // results.Result.Add(roomResult); // results.TotalCost += double.Parse(availRes.TotalPrice); // } // else // { // results.Status = 2; // } // } // } // else // { // return null; // } //} ////else if (PID == "3") //{ // var SearchData = SearchRepo.GetSearchDataBySession(Sid); // DateTime CheckInDate = SearchData.dateFrom.Value; //searchData.DateFrom; // var SMRRuslt = SMCLSValidation.ValidationQuote(Rooms[0], Sid); // results.TotalCost = double.Parse(SMRRuslt.Result.price.net.ToString()); // if (SMRRuslt.Result != null) // { // if (Cost == double.Parse(SMRRuslt.Result.price.net.ToString())) // { // results.Status = 0; // } // else // { // results.Status = 1; // } // foreach (var item in Rooms) // { // RoomResult SMroomResult = new RoomResult(); // SMroomResult.RoomCode = SMRRuslt.Result.optionRefId; // foreach (var c in SMRRuslt.Result.cancelPolicy.cancelPenalties) // { // SMroomResult.cancellationRules.Add(new CancellationRule // { // Cost = double.Parse(c.value.ToString()), // FromDate = CheckInDate.AddHours(-c.hoursBefore.Value).ToString("dd MMM yyyy") // // Cost = Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3), // //CanellationRuleText = searchData.Lang.ToLower() == "en" ? Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3) + "" + searchData.Currency + " To " + CheckInDate.AddHours(-a.hoursBefore.Value).ToString("dd MMM yyyy") : CheckInDate.AddHours(-a.hoursBefore.Value).ToString("dd MMM yyyy") + " إلى " + "" + searchData.Currency + Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3) // }); // } // results.Result.Add(SMroomResult); // } // } // else // { // results.Status = 2; // } //} #endregion if (roomsReq.PID == "5") { // get hotelproperty and arrival and duration // get search rooms result from db HotelManager hotelManager = new HotelManager(); //FOr TBO var hotelsData = hotelManager.GetHotelDataForTsAvailability(roomsReq); if (hotelsData != null) { //TBO SearchDBEntities searchDB = new SearchDBEntities(); string TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == roomsReq.Sid).PSession; //Select(s => s.PSession).ToString(); int ResIndex = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == roomsReq.Sid && hotl.HotelCode == roomsReq.HotelCode).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString(); //get room indexes to send in pricing req List <int> indexs = new List <int>(); foreach (var indx in roomsReq.Rooms) { indexs.Add(indx.RoomId); } //TBO.WSDL.hotelServiceRef.AvailabilityAndPricingRequest req = new TBO.WSDL.hotelServiceRef.AvailabilityAndPricingRequest //{ // SessionId = TBOSession, // ResultIndex = ResIndex, // OptionsForBooking = new TBO.WSDL.hotelServiceRef.BookingOptions // { // RoomCombination = new TBO.WSDL.hotelServiceRef.RoomCombination[] // { // new TBO.WSDL.hotelServiceRef.RoomCombination{RoomIndex = indexs.ToArray()} // } // } //}; //var availRes = AvailablityPricingService.PricingService(req, roomsReq.Sid); //if (availRes != null) //{ var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; CurrencyManager currencyManager = new CurrencyManager(); //double ProviderExcahngeRate = currencyManager.GetCurrencyConversion("USD", BaseCur, req.SessionId); RoomResult roomResult = new RoomResult(); //roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms; //if (availRes?.PriceVerification?.PriceChanged == false) //{ results.Status = 0; foreach (var item in hotelsData.roomResults) { roomResult.TotalSellPrice = (double)item.SellPrice; //Math.Round((double)item.SellPrice * ProviderExcahngeRate, 3); roomResult.CostPrice = item.SellPrice ?? default(double); results.TotalCost += (double)item.SellPrice; //Math.Round((double)item.SellPrice * ProviderExcahngeRate, 3); roomResult.Adult = item.Adults.Value; roomResult.Child = item.Childern.Value; roomResult.RoomIndex = int.Parse(item.RoomCode); results.Result.Add(roomResult); } //} //else //{ // results.Status = 1; // foreach (var item in availRes?.PriceVerification.HotelRooms) // { // roomResult.TotalSellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3); // roomResult.CostPrice = (double)item.RoomRate.TotalFare; // results.TotalCost += roomResult.TotalSellPrice; //Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3); // roomResult.RoomIndex = item.RoomIndex; // results.Result.Add(roomResult); // // update price in search db // //CheckAvailabilityRepo repo = new CheckAvailabilityRepo(); // //repo.UpdateTBORoomsPrice(availRes?.PriceVerification.HotelRooms); // //update tbo new rooms prices // var Newroom = searchDB.SearchRoomResults.FirstOrDefault(room => room.sID == req.SessionId && room.RoomCode == item.RoomIndex.ToString()); // Newroom.costPrice = (double)item.RoomRate.TotalFare; // Newroom.rateClass = item.RoomRate.RoomFare.ToString(); // Newroom.rateType = item.RoomRate.RoomTax.ToString(); // Newroom.SellPrice = roomResult.TotalSellPrice; // searchDB.SaveChanges(); // } } //handel cancel policy //foreach (var cancel in availRes.HotelCancellationPolicies?.CancelPolicies?.CancelPolicy) //{ // CancellationRule cancellation = new CancellationRule(); // //DateTime dateFrom = Convert.ToDateTime(cancel.FromDate); // cancellation.FromDate = cancel.FromDate;// dateFrom.ToString("MMMM dd, yyyy"); // cancellation.ToDate = cancel.ToDate; // cancellation.Cost = (double)cancel.CancellationCharge; // cancellation.ChargeType = cancel.ChargeType.ToString(); // roomResult.cancellationRules.Add(cancellation); //} //var countroom = 0; //foreach (var item in hotelsData.roomResults) //{ // countroom++; // // call ts and map it with db and ..or new obj // // var roomsResults = new List<SearchRoomResult>(); // // roomsResults.Add(item); // roomResult.Adult = item.Adults.Value; // roomResult.Child = item.Childern.Value; // roomResult.RoomIndex = int.Parse(item.RoomCode); //roomResult.RoomReference = availRes.PreBookingToken; //results = new CheckAvailabilityResult(); //if (availRes?.PriceVerification?.PriceChanged == false) //{ // //results.Status = 0; // roomResult.CostPrice = item.costPrice.Value; // results.TotalCost += item.costPrice.Value; //} //else //{ // // results.Status = 1; // roomResult.CostPrice = (double)availRes.PriceVerification.HotelRooms[countroom].RoomRate.TotalFare; // results.TotalCost += (double)availRes.PriceVerification.HotelRooms[countroom].RoomRate.TotalFare; //} //} //end foreach // roomResult.RoomCode= //results.Result.Add(roomResult); //} //else //{ // results.Status = 2; //} } else { return(null); } return(results); }
public PayLinkRequest GetPayLinkRequestDA(string BN, string Sid, string ip, string pos, string NotTok) { try { PayLinkRequest payLinkData = new PayLinkRequest(); SearchDBEntities searchDB = new SearchDBEntities(); CurrencyRepo currencyManager = new CurrencyRepo(); double totalPrice = 0; HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities(); var paxes = hotelBookingDB.HotelBookingPaxs.Where(x => x.Booking_No == BN && x.SID == Sid && x.PaxNo == 1); var Customer = paxes.FirstOrDefault(a => a.Booking_No == BN && a.SID == Sid && a.RoomRef == 1 && a.PaxNo == 1); var BookingData = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.Booking_No == BN && x.SessionId == Sid); var SearchData = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == Sid); var PaxsRooms = paxes.Select(x => x.Room_No.ToString()).ToList(); var Bookingrooms = searchDB.SearchRoomResults.Where(a => a.sID == Sid && a.HotelCode == BookingData.Hotel_ID && PaxsRooms.Contains(a.RoomCode)).ToList(); if (Customer == null || Bookingrooms.Count == 0 || SearchData == null || BookingData == null) { return(null); } payLinkData.Customer.CustomerEmail = BookingData.Booking_Email; payLinkData.Customer.CustomerPhone = Customer.Phone; payLinkData.Customer.FirstName = Customer.First_name; payLinkData.Customer.LastName = Customer.Last_Name; payLinkData.Customer.IP = ip; payLinkData.Customer.Nationality = SearchData.passengerNationality; payLinkData.Customer.PaymentLocation = pos; payLinkData.Customer.PhoneCodeCountry = Customer.Phone_Code; payLinkData.Customer.PhoneCountryCode = null; payLinkData.BookingInfo.BookingDate = Convert.ToDateTime(string.Format("{0:s}", DateTime.Now)); payLinkData.BookingInfo.CheckInDate = SearchData.dateFrom.Value; payLinkData.BookingInfo.Description = ""; payLinkData.BookingInfo.HGNumber = BN; payLinkData.BookingInfo.Product = "Hotel"; payLinkData.BookingInfo.SearchID = Sid; var url = ConfigurationSettings.AppSettings["SuccessUrl"]; payLinkData.PaymentAuthData.FailUrl = url + "?HG=" + BN + "&sid=" + Sid; payLinkData.PaymentAuthData.SuccessUrl = url + "?HG=" + BN + "&sid=" + Sid; payLinkData.PaymentAuthData.HGToken = null; payLinkData.PaymentAuthData.HGTokenStatus = 0; payLinkData.PaymentAuthData.HGTrackId = null; payLinkData.PaymentAuthData.PaymentMethod = null; payLinkData.PaymentAuthData.PaymentToken = null; var ActionUrlData = ConfigurationSettings.AppSettings["ActionUrl"]; var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; // stop call cHotelCheckAvailability for tbo payLinkData.ActionsUrl.ValidationUrl = ActionUrlData + "/api/HotelCheckAvailability?sid=" + Sid + "&bookingnum=" + BN; payLinkData.ActionsUrl.PostPaymentUrl = ActionUrlData + "/Api/ConfirmHotelStatus?sid=" + Sid + "&bookingNum=" + BN; payLinkData.ActionsUrl.PrePaymentUrl = ""; foreach (var item in Bookingrooms) { totalPrice += item.SellPrice.Value; } double BaseExcahngeRate = currencyManager.GetEveryDayCurrenciesConversion(Bookingrooms[0].SellCurrency, BaseCur, Sid, DateTime.Now).Result.Customer_Sell_Rate; double ExcahngeRate = currencyManager.GetEveryDayCurrenciesConversion(BaseCur, BookingData.Sell_Currency, Sid, DateTime.Now).Result.Customer_Sell_Rate; totalPrice = totalPrice * BaseExcahngeRate; payLinkData.PaymentFareDetails.CustomerPaymentCurrency = BookingData.Sell_Currency; payLinkData.PaymentFareDetails.FareAmount = totalPrice; payLinkData.PaymentFareDetails.TaxAmount = 0; payLinkData.PaymentFareDetails.TotalAmount = totalPrice; payLinkData.PaymentFareDetails.TotalChargeAmount = 0; payLinkData.PaymentFareDetails.ExchangeRate = ExcahngeRate; payLinkData.FormData = null; BookingData.NotificationKey = NotTok; hotelBookingDB.SaveChanges(); return(payLinkData); }catch (Exception ex) { LoggingHelper.WriteToFile("PaymentViewController/ERRor/", "PaymentView" + "INDAL" + Sid, "InComingData", ex.InnerException?.Message + ex.Message + ex.StackTrace); return(null); } }