public ActionResult GetRoomData(string sVendorId, string dCheckIn, string dCheckOut, string sRoomData) { try { DateTime checkIn = DateTime.ParseExact(dCheckIn, "dd/MM/yyyy", CultureInfo.InvariantCulture); DateTime checkOut = DateTime.ParseExact(dCheckOut, "dd/MM/yyyy", CultureInfo.InvariantCulture); var propDetail = new PropDetailsM(); propDetail.dtCheckIn = checkIn; propDetail.dtCheckOut = checkOut; propDetail.sRoomData = sRoomData; propDetail.iVendorId = sVendorId; propDetail.scheckIn = dCheckIn; propDetail.scheckOut = dCheckOut; #region RoomOccupancySearch DataTable dtTblRoomOccupancySearch = new DataTable(); dtTblRoomOccupancySearch.Columns.AddRange(new DataColumn[3] { new DataColumn("ID", typeof(int)), new DataColumn("iAdults", typeof(short)), new DataColumn("children", typeof(short)) }); DataTable dtTblChildrenAgeSearch = new DataTable(); dtTblChildrenAgeSearch.Columns.AddRange(new DataColumn[2] { new DataColumn("ID", typeof(int)), new DataColumn("Age", typeof(short)) }); var roomDataResult = new List <RoomData>(); if (!string.IsNullOrEmpty(sRoomData)) { roomDataResult = new JavaScriptSerializer().Deserialize <List <RoomData> >(sRoomData); foreach (var room in roomDataResult) { DataRow roomOccupancy = dtTblRoomOccupancySearch.NewRow(); roomOccupancy["ID"] = room.room; roomOccupancy["iAdults"] = room.adult; roomOccupancy["children"] = room.child; dtTblRoomOccupancySearch.Rows.Add(roomOccupancy); foreach (var child in room.ChildAge) { DataRow dtChildrenAge = dtTblChildrenAgeSearch.NewRow(); dtChildrenAge["ID"] = room.room; if (child.Age == "<1") { dtChildrenAge["Age"] = "0"; child.Age = "0"; } else { dtChildrenAge["Age"] = child.Age; } dtChildrenAge["Age"] = child.Age == "<1" ? "0" : child.Age; dtTblChildrenAgeSearch.Rows.Add(dtChildrenAge); } } } #endregion #region Hotel Detais var ofrCommision = BL_Bidding.GetBidMaster(CurrencyCode); var TG_Hotel_With_Rooms = clsSearchHotel.FetchHotelsDetailsByVendorId( true, sVendorId, checkIn.ToString("yyyy-MM-dd"), checkOut.ToString("yyyy-MM-dd"), dtTblRoomOccupancySearch, dtTblChildrenAgeSearch, roomDataResult ); propDetail.dOFRServiceCharge = ofrCommision.dOFRServiceCharge; string roomIds = string.Empty; List <string> roomIdsArr = new List <string>(); if (TG_Hotel_With_Rooms != null) { roomIdsArr = TG_Hotel_With_Rooms.RoomDetails.Select(x => x.RoomId).ToList(); roomIds = string.Join(",", roomIdsArr); } var db_roomAmenities = BL_PropDetailsTG.GetRoomAmenities(sVendorId, roomIds); if (db_roomAmenities.Count > 0) { foreach (var roomId in roomIdsArr) { var tgRoom = TG_Hotel_With_Rooms.RoomDetails.Where(x => x.RoomId == roomId).FirstOrDefault(); tgRoom.RoomAmenities = db_roomAmenities.Distinct().ToList(); } } propDetail.TG_Hotel = TG_Hotel_With_Rooms; ViewBag.dExchangeRate = 1; if (CurrencyCode != "INR") { etblExchangeRatesM objExchange = BL_ExchangeRate.GetSingleRecordById("INR", CurrencyCode); if (objExchange.dRate.HasValue) { ViewBag.dExchangeRate = objExchange.dRate.Value; } } propDetail.Symbol = BL_ExchangeRate.GetSymbolByCurrencyCode(CurrencyCode); #endregion return(PartialView("pvHotelRooms", propDetail)); } catch (Exception) { return(Content("An Error Occured !")); } }
public ActionResult Review(string propId, int roomId, string checkIn, string checkOut, int ratePlanId, string sRoomData, bool isPromo, string uniqueSessionId) { try { ViewBag.HeaderBarData = "Preview"; var decodedPropId = Convert.ToInt32(clsUtils.Decode(propId)); var customerId = User.Identity.GetUserId <long>(); DateTime dtCheckIn = DateTime.ParseExact(checkIn, "dd/MM/yyyy", CultureInfo.InvariantCulture); DateTime dtCheckOut = DateTime.ParseExact(checkOut, "dd/MM/yyyy", CultureInfo.InvariantCulture); #region RoomOccupancySearch DataTable dtRoomOccupancySearch = new DataTable(); dtRoomOccupancySearch.Columns.AddRange(new DataColumn[3] { new DataColumn("ID", typeof(int)), new DataColumn("iAdults", typeof(short)), new DataColumn("children", typeof(short)) }); DataTable dtChildrenAgeSearch = new DataTable(); dtChildrenAgeSearch.Columns.AddRange(new DataColumn[2] { new DataColumn("ID", typeof(int)), new DataColumn("Age", typeof(short)) }); var roomDataResult = new List <RoomData>(); if (!string.IsNullOrEmpty(sRoomData)) { roomDataResult = new JavaScriptSerializer().Deserialize <List <RoomData> >(sRoomData); foreach (var room in roomDataResult) { DataRow roomOccupancy = dtRoomOccupancySearch.NewRow(); roomOccupancy["ID"] = room.room; roomOccupancy["iAdults"] = room.adult; roomOccupancy["children"] = room.child; dtRoomOccupancySearch.Rows.Add(roomOccupancy); foreach (var child in room.ChildAge) { DataRow dtChildrenAge = dtChildrenAgeSearch.NewRow(); dtChildrenAge["ID"] = room.room; if (child.Age == "<1") { dtChildrenAge["Age"] = "0"; child.Age = "0"; } else { dtChildrenAge["Age"] = child.Age; } dtChildrenAge["Age"] = child.Age == "<1" ? "0" : child.Age; dtChildrenAgeSearch.Rows.Add(dtChildrenAge); } } } #endregion #region Hotel Details var propDetails = BL_PropDetails.GetRoomReviewDetailsToRedeemPoints(decodedPropId, customerId, dtCheckIn.ToString("yyyy-MM-dd"), dtCheckOut.ToString("yyyy-MM-dd"), CurrencyCode, roomId, ratePlanId, isPromo, dtRoomOccupancySearch, dtChildrenAgeSearch); if (propDetails != null) { if (User.Identity.IsAuthenticated) { var user = BL_WebsiteUser.GetSingleRecordById(User.Identity.GetUserId <long>()); propDetails.sUserTitle = user.Title; propDetails.sUserFirstName = user.FirstName; propDetails.sUserLastName = user.LastName; propDetails.sUserEmail = user.Email; propDetails.sUserMobileNo = user.PhoneNumber; propDetails.sCountryPhoneCode = user.sCountryPhoneCode; propDetails.iStateId = user.StateId.HasValue ? user.StateId.Value : 0; propDetails.iUserId = user.Id; } ViewBag.dExchangeRate = 1; if (CurrencyCode != "INR") { etblExchangeRatesM objExchange = BL_ExchangeRate.GetSingleRecordById("INR", CurrencyCode); if (objExchange.dRate.HasValue) { ViewBag.dExchangeRate = 1 / objExchange.dRate.Value; } } //Used to Remember when Modify Search ViewBag.sPropId = propId; ViewBag.scheckIn = checkIn; ViewBag.scheckOut = checkOut; ViewBag.sRoomData = sRoomData; ViewBag.iRoomId = roomId; ViewBag.iRatePlanId = ratePlanId; ViewBag.IsPromo = isPromo; propDetails.iPropId = decodedPropId; propDetails.Symbol = BL_ExchangeRate.GetSymbolByCurrencyCode(CurrencyCode); propDetails.sRoomData = sRoomData; propDetails.dtCheckIn = dtCheckIn; propDetails.dtCheckOut = dtCheckOut; propDetails.iTotalDays = (dtCheckOut - dtCheckIn).TotalDays.ToString(); propDetails.Currency = CurrencyCode; int RatePlan = 0, iNoRoom = 0, iDays = 0, iCount = 0; decimal RoomPrice = 0; decimal DTotal = 0; decimal ExtraCharges = 0; decimal totalTax = 0; int ExtraBed = 0; int totalPoints = 0; for (int i = 0; i < propDetails.lstetblRooms.Count; i++) { for (int j = 0; j < propDetails.lstetblRooms[i].lstRatePlan.Count; j++) { for (int lstOcc = 0; lstOcc < propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy.Count; lstOcc++) { if (propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms != 0) { for (int k = 0; k < propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms; k++) { ExtraBed = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].ExtraBeds; ExtraCharges = propDetails.lstetblRooms[i].ExtraBedCharges; totalTax += propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dTaxesForHotel; RatePlan = propDetails.lstetblRooms[i].lstRatePlan[j].RPID; RoomPrice = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dPrice; isPromo = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].blsPromo; totalPoints += propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iPoints; iNoRoom = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms; iDays = Convert.ToInt32(propDetails.iTotalDays); iCount = iNoRoom * iDays; RoomPrice = RoomPrice * (iDays); ExtraCharges = (ExtraBed * ExtraCharges) * iDays; DTotal += RoomPrice + ExtraCharges; iNoRoom++; } } } } } propDetails.dSummaryRoomRate = RoomPrice; propDetails.sSummaryRoomRate = clsUtils.ConvertNumberToCommaSeprated(RoomPrice); propDetails.dSummaryExtraBedCharges = ExtraCharges; propDetails.sSummaryExtraBedCharges = clsUtils.ConvertNumberToCommaSeprated(ExtraCharges); propDetails.dSummaryTaxes = totalTax; propDetails.sSummaryTaxes = clsUtils.ConvertNumberToCommaSeprated(totalTax); propDetails.dSummaryTotal = DTotal; propDetails.sSummaryTotal = clsUtils.ConvertNumberToCommaSeprated(DTotal); propDetails.sSummaryTaxes_display = clsUtils.ConvertNumberToCommaSeprated(totalTax + propDetails.TaxCharges.TotalServiceCharge); propDetails.sTotalPoints = clsUtils.ConvertNumberToCommaSeprated(totalPoints * Convert.ToInt32(propDetails.iTotalDays)); propDetails.TempDataPropDetails = uniqueSessionId; Session[uniqueSessionId] = propDetails; } #endregion Hotel Details return(View(propDetails)); } catch (Exception ex) { throw ex; } }
//[OutputCache(Duration = 30, VaryByParam = "Id;cIn;cOut;sLocation;sRoomData", VaryByCustom = "User")] // Cached for 30 second public ActionResult Index(string Id, string cIn, string cOut, string sLocation, string sRoomData, string sRequestType) { PropDetailsM propDetails = new PropDetailsM(); if (!string.IsNullOrEmpty(Id)) { PropSearchRequestModel dbRequestParamModel = new PropSearchRequestModel(); dbRequestParamModel.iVendorId = Id; var roomDataResult = new List <RoomData>(); #region RoomOccupancySearch DataTable dtTblRoomOccupancySearch = new DataTable(); dtTblRoomOccupancySearch.Columns.AddRange(new DataColumn[3] { new DataColumn("ID", typeof(int)), new DataColumn("iAdults", typeof(short)), new DataColumn("children", typeof(short)) }); DataTable dtTblChildrenAgeSearch = new DataTable(); dtTblChildrenAgeSearch.Columns.AddRange(new DataColumn[2] { new DataColumn("ID", typeof(int)), new DataColumn("Age", typeof(short)) }); if (!string.IsNullOrEmpty(cIn) && !string.IsNullOrEmpty(cOut)) { dbRequestParamModel.dtCheckIn = DateTime.Parse(cIn); dbRequestParamModel.dtCheckOut = DateTime.Parse(cOut); } else { dbRequestParamModel.dtCheckIn = DateTime.Now.Date.AddDays(1); dbRequestParamModel.dtCheckOut = DateTime.Now.Date.AddDays(2); cIn = DateTime.Today.ToString("dd/MM/yyyy"); cOut = DateTime.Today.AddDays(1).ToString("dd/MM/yyyy"); } dbRequestParamModel.bLogin = User.Identity.IsAuthenticated; dbRequestParamModel.sCurrency = CurrencyCode; //Insert the room data in the table created if (!string.IsNullOrEmpty(sRoomData)) { roomDataResult = new JavaScriptSerializer().Deserialize <List <RoomData> >(sRoomData); } else { roomDataResult.Add(new RoomData() { adult = 2, child = 0, room = 1, ChildAge = new List <ChildAge>() { new ChildAge() { Age = "0" } } }); } foreach (var room in roomDataResult) { DataRow roomOccupancy = dtTblRoomOccupancySearch.NewRow(); roomOccupancy["ID"] = room.room; roomOccupancy["iAdults"] = room.adult; roomOccupancy["children"] = room.child; dtTblRoomOccupancySearch.Rows.Add(roomOccupancy); foreach (var child in room.ChildAge) { DataRow dtChildrenAge = dtTblChildrenAgeSearch.NewRow(); dtChildrenAge["ID"] = room.room; dtChildrenAge["Age"] = child.Age; dtTblChildrenAgeSearch.Rows.Add(dtChildrenAge); } } sRoomData = clsUtils.ConvertToJson(roomDataResult); #endregion string roomIds = string.Empty; List <string> roomIdsArr = new List <string>(); List <int> hotelAmenitiesIdsArr = new List <int>(); var ofrServiceCharge = BL_PropDetailsTG.GetOfrServiceCharge(dbRequestParamModel.dtCheckIn, dbRequestParamModel.dtCheckOut); //Get TG hotel details var hotelDetailsFromApi = clsSearchHotel.FetchHotelsDetailsByVendorId(false, dbRequestParamModel.iVendorId, dbRequestParamModel.dtCheckIn.ToString("yyyy-MM-dd"), dbRequestParamModel.dtCheckOut.ToString("yyyy-MM-dd"), dtTblRoomOccupancySearch, dtTblChildrenAgeSearch, roomDataResult); if (hotelDetailsFromApi != null && !string.IsNullOrEmpty(hotelDetailsFromApi.HotelCode)) { roomIdsArr = hotelDetailsFromApi.RoomDetails.Select(x => x.RoomId).ToList(); roomIds = string.Join(",", roomIdsArr); hotelAmenitiesIdsArr = hotelDetailsFromApi.HotelAmenities.Select(x => int.Parse(x.code)).ToList(); hotelDetailsFromApi.HotelAmenities = BL_PropDetailsTG.GetHotelAmenities(hotelAmenitiesIdsArr.ToArray()); if (hotelDetailsFromApi.GalleryImages.Count <= 0) { propDetails = BL_PropDetailsTG.GetPropertyDetails(dbRequestParamModel.iVendorId, roomIds); } else { propDetails = BL_PropDetailsTG.GetPropertyDetailsWithoutGallery(dbRequestParamModel.iVendorId, roomIds); } } else { propDetails = BL_PropDetailsTG.GetPropertyDetails(dbRequestParamModel.iVendorId, roomIds); } propDetails.ServiceChargeTG = ofrServiceCharge; propDetails.cStatus = "A"; propDetails.iVendorId = Id; propDetails.sRoomData = sRoomData; propDetails.scheckIn = cIn; propDetails.scheckOut = cOut; propDetails.dtCheckIn = dbRequestParamModel.dtCheckIn; propDetails.dtCheckOut = dbRequestParamModel.dtCheckOut; hotelDetailsFromApi.RoomAmenities = propDetails.TG_Hotel.RoomAmenities; propDetails.TG_Hotel = hotelDetailsFromApi; propDetails.sRequestType = sRequestType; propDetails.Currency = dbRequestParamModel.sCurrency; if (propDetails.TG_Hotel != null && propDetails.TG_Hotel.RoomAmenities != null) { foreach (var roomId in roomIdsArr) { var tgRoom = hotelDetailsFromApi.RoomDetails.Where(x => x.RoomId == roomId).FirstOrDefault(); tgRoom.RoomAmenities = propDetails.TG_Hotel.RoomAmenities.Where(x => x.iRoomTypeId == tgRoom.RoomId).ToList(); } } Task.Run(() => BL_PropDetails.UpdateRecentViewAsync(propDetails.iPropId, User.Identity.GetUserId <long>())); ViewBag.dExchangeRate = 1; if (CurrencyCode != "INR") { etblExchangeRatesM objExchange = BL_ExchangeRate.GetSingleRecordById("INR", CurrencyCode); if (objExchange.dRate.HasValue) { ViewBag.dExchangeRate = objExchange.dRate.Value; } } propDetails.Symbol = BL_ExchangeRate.GetSymbolByCurrencyCode(CurrencyCode); } return(View(propDetails)); }