public static PropDetailsM GetPropertyFacility(string sVendorId) { PropDetailsM propM = new PropDetailsM(); using (OneFineRateEntities db = new OneFineRateEntities()) { #region General Details var prop = db.tblPropertyMs.Where(x => x.iVendorId == sVendorId).Select(x => new { x.sAddress, x.sHotelName, x.iPropId }).FirstOrDefault(); propM.sPropertyAddress = prop.sAddress; propM.sPropertyName = prop.sHotelName; propM.iPropId = prop.iPropId; SqlParameter[] hotelFacilitiesParam = new SqlParameter[1]; hotelFacilitiesParam[0] = new SqlParameter("@VendorId", sVendorId); var objresultHotelFacilities = db.Database.SqlQuery <etblHotelFacilities>("uspGetOfferReviewHotelAmentiesTG @VendorId", hotelFacilitiesParam).ToList(); propM.lstetblHotelFacilities = objresultHotelFacilities; #endregion return(propM); } }
public ActionResult Negotiation(PropDetailsM objlist) { //var propDetails = JsonConvert.DeserializeObject<PropDetailsM>(propObj); var propDetails = Session[objlist.TempDataPropDetails] as PropDetailsM; if (propDetails == null) { propDetails = new PropDetailsM(); } //Insert data in view conversion table DataTable dtPropIds = new DataTable(); dtPropIds.Columns.AddRange(new DataColumn[1] { new DataColumn("Id", typeof(int)) }); DataRow drpropid = dtPropIds.NewRow(); drpropid["Id"] = Convert.ToInt32(propDetails.iPropId); dtPropIds.Rows.Add(drpropid); // Task.Run(() => BL_PropDetails.UpdateViewForConversion(objlist.sActionType, dtPropIds)); propDetails.dSummaryRoomRate = Convert.ToDecimal(objlist.sSummaryRoomRate.Replace(",", "")); propDetails.dSummaryExtraBedCharges = Convert.ToDecimal(objlist.sSummaryExtraBedCharges.Replace(",", "")); propDetails.dSummaryTaxes = Convert.ToDecimal(objlist.sSummaryTaxes.Replace(",", "")); propDetails.dSummaryGrandTotal = Convert.ToDecimal(objlist.sSummaryGrandTotal.Replace(",", "")); propDetails.sSummaryRoomRate = objlist.sSummaryRoomRate; propDetails.sSummaryExtraBedCharges = objlist.sSummaryExtraBedCharges; propDetails.sSummaryTaxes = objlist.sSummaryTaxes; propDetails.sSummaryGrandTotal = objlist.sSummaryGrandTotal; propDetails.sSummaryRoomRate_display = objlist.sSummaryRoomRate_display; propDetails.sSummaryExtraBedCharges_display = objlist.sSummaryExtraBedCharges_display; propDetails.sSummaryTaxes_display = objlist.sSummaryTaxes_display; propDetails.sSummaryGrandTotal_display = objlist.sSummaryGrandTotal_display; propDetails.lstOccData = objlist.lstOccData; propDetails.sOccuDataModified = objlist.sOccuDataModified; 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++) { propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms = objlist.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms; } } } propDetails.sActionType = objlist.sActionType; // var propdetailguid = "PropDetails" + Guid.NewGuid().ToString(); if (User.Identity.IsAuthenticated) { // TempData[objlist.TempDataPropDetails] = propDetails; //var redirectResult = RedirectToAction("BookerInformation", "Negotiation"); TempData["PropDetails"] = propDetails; return(RedirectToAction("Index", "Negotiation", new { type = "O", info = "", propdetailguid = objlist.TempDataPropDetails })); } else { TempData["PropDetails"] = propDetails; return(RedirectToAction("Index", "Negotiation", new { type = "test", info = "", propdetailguid = objlist.TempDataPropDetails })); } }
// GET: OfferReview /// <summary> /// Load the Hoteal page for public view /// </summary> /// <param name="model"></param> /// <returns></returns> public ActionResult Index(PropSearchRequestModel model) { //Fetch OFR service charge // Session["BidMaster"] = BL_Bidding.GetBidMaster(CurrencyCode); PropDetailsM objlist = new PropDetailsM(); string Slocation = ""; string CIn = ""; string COut = ""; string Modify = ""; string sRoomData = ""; if (HttpContext.Request.Params["Slocation"] != null) { Slocation = HttpContext.Request.Params["Slocation"]; } if (HttpContext.Request.Params["CIn"] != null) { CIn = HttpContext.Request.Params["CIn"].ToString(); } if (HttpContext.Request.Params["COut"] != null) { COut = HttpContext.Request.Params["COut"].ToString(); } if (HttpContext.Request.Params["M"] != null) { Modify = HttpContext.Request.Params["M"]; } if (HttpContext.Request.Params["Id"] != null) { HotelId = Convert.ToInt32(OneFineRateAppUtil.clsUtils.Decode(HttpContext.Request.Params["Id"].ToString())); } if (HttpContext.Request.Params["sRoomData"] != null) { sRoomData = HttpContext.Request.Params["sRoomData"].ToString(); } //To make a count to update in the database Task.Run(() => BL_PropDetails.UpdateRecentViewAsync(HotelId, User.Identity.GetUserId <long>())); if (Modify == "1") //In this modify user can only chnage the check in check out date with in the hotel { if (Session[model.PropDetailsTempData] != null) //Take the data form the View only { objlist = Session[model.PropDetailsTempData] as PropDetailsM; ViewData["dOFRServiceCharge"] = (objlist.TaxCharges.dOFRServiceCharge + objlist.TaxCharges.TaxOnServiceCharge); // TempData.Keep(); } objlist.sRequestType = model.sRequestType; objlist.bOccuData = true; return(View(objlist)); } if (CIn != "" && COut != "" && sRoomData != "") { #region FetchRoomData and bind in datatables var roomDataResult = new List <RoomData>(); if (model.sRoomData != null) { roomDataResult = new JavaScriptSerializer().Deserialize <List <RoomData> >(model.sRoomData); } 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)) }); 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); } } #endregion #region OfferReviewTracker //To Track the request form which ip on which date and the same get saved into DB also var tracker = new etblOfferReviewTrackerTx(); tracker.iPropId = HotelId; tracker.dtActionDate = DateTime.Now; tracker.sIPAddress = OneFineRateAppUtil.clsUtils.getIpAddress(); //Get IP Address using "HTTP_X_FORWARDED_FOR" Server Variables //Call to Business logic to add record BL_tblOfferReviewTrackerTx.AddRecord(tracker); #endregion // To get all room of the selected hotel which is full fill the occupancy and the other criteria objlist.iPropId = HotelId; objlist.dtCheckIn = DateTime.Parse(CIn); objlist.dtCheckOut = DateTime.Parse(COut); objlist.bLogin = User.Identity.IsAuthenticated; objlist.Currency = CurrencyCode; objlist.bIsAirConditioning = false; objlist.bIsBathtub = false; objlist.bIsFlatScreenTV = false; objlist.bIsSoundproof = false; objlist.bIsView = false; objlist.bIsInternetFacilities = false; objlist.bIsPrivatePool = false; objlist.bIsRoomService = false; objlist.dMinPrice = 0; objlist.dMaxPrice = 0; objlist.SpecialDeal = true; //Bussiness logic call to search tha available room objlist = BL_PropDetails.GetPropertyDetails(objlist.iPropId, objlist, dtTblRoomOccupancySearch, dtTblChildrenAgeSearch); //When no room available if (objlist.lstetblRooms.Count == 0) { objlist.bRoomAvailable = false; } objlist.sCheckInDate = CIn; objlist.sCheckOutDate = COut; objlist.dtCheckIn = DateTime.Parse(CIn); objlist.dtCheckOut = DateTime.Parse(COut); objlist.iTotalDays = (objlist.dtCheckOut - objlist.dtCheckIn).TotalDays.ToString(); objlist.Currency = CurrencyCode; objlist.hdnJsonData = sRoomData; objlist.sRequestType = model.sRequestType; if (objlist.TaxCharges != null) { ViewData["dOFRServiceCharge"] = (objlist.TaxCharges.dOFRServiceCharge + objlist.TaxCharges.TaxOnServiceCharge); } string propDetailsName = "propDetails" + Guid.NewGuid().ToString(); objlist.TempDataPropDetails = propDetailsName; Session[propDetailsName] = objlist; //s.Keep(propDetailsName); return(View(objlist)); } if (HotelId != 0) { PropDetailsM objSearch = new PropDetailsM(); objSearch.iPropId = HotelId; objSearch.dtCheckIn = DateTime.Now.Date.AddDays(5); objSearch.dtCheckOut = DateTime.Now.Date.AddDays(6); objSearch.bLogin = User.Identity.IsAuthenticated; objSearch.Currency = CurrencyCode; objSearch.bIsAirConditioning = false; objSearch.bIsBathtub = false; objSearch.bIsFlatScreenTV = false; objSearch.bIsSoundproof = false; objSearch.bIsView = false; objSearch.bIsInternetFacilities = false; objSearch.bIsPrivatePool = false; objSearch.bIsRoomService = false; objSearch.dMinPrice = 0; objSearch.dMaxPrice = 0; objSearch.SpecialDeal = true; #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)) }); #endregion #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); } else { roomDataResult = new List <RoomData> { new RoomData { adult = 2, room = 1, child = 0, ChildAge = new List <ChildAge>() } }; } 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); } } #endregion #region OfferReviewTracker var tracker = new etblOfferReviewTrackerTx(); tracker.iPropId = HotelId; tracker.dtActionDate = DateTime.Now; tracker.sIPAddress = OneFineRateAppUtil.clsUtils.getIpAddress(); BL_tblOfferReviewTrackerTx.AddRecord(tracker); #endregion objlist = BL_PropDetails.GetPropertyDetails(HotelId, objSearch, dtRoomOccupancySearch, dtChildrenAgeSearch); objlist.sRequestType = model.sRequestType; objlist.bRoomAvailable = true; objlist.sRequestType = model.sRequestType; if (objlist.TaxCharges != null) { ViewData["dOFRServiceCharge"] = (objlist.TaxCharges.dOFRServiceCharge + objlist.TaxCharges.TaxOnServiceCharge); } string propDetailsName = "propDetails" + Guid.NewGuid().ToString(); objlist.TempDataPropDetails = propDetailsName; TempData[propDetailsName] = objlist; TempData.Keep(propDetailsName); } return(View(objlist)); }
public static PropDetailsM GetPropertyDetails(string sVendorId, string roomTypeIds) { PropDetailsM propM = new PropDetailsM(); using (OneFineRateEntities db = new OneFineRateEntities()) { #region General Details SqlParameter[] MyParam = new SqlParameter[1]; MyParam[0] = new SqlParameter("@VendorId", sVendorId); propM = db.Database.SqlQuery <PropDetailsM>("uspGetOfferReviewDetailsbyID_TG @VendorId", MyParam).FirstOrDefault(); propM.TG_Hotel = new TG_Hotel(); propM.TG_Hotel.RoomAmenities = GetRoomAmenities(sVendorId, roomTypeIds); SqlParameter[] tripAdvisorParam = new SqlParameter[1]; tripAdvisorParam[0] = new SqlParameter("@VendorId", sVendorId); DataSet ds = SqlHelper.ExecuteDataset(ConfigurationManager.AppSettings["ConnectionString"].ToString(), CommandType.StoredProcedure, "uspGetTripAdvisorRating_TG", tripAdvisorParam); if (ds.Tables[0].Rows.Count > 0) { propM.objTripAdvisonReviews = (from rw in ds.Tables[0].AsEnumerable() select new etblPropertyTripAdvisorM() { iRating = Convert.ToDecimal(rw["iRating"]), sRatingImageURL = Convert.ToString(rw["sRatingImageURL"]), sRankingString = Convert.ToString(rw["sRankingString"]), iReviewsCount = Convert.ToInt32(rw["iReviewsCount"]), sWebURL = Convert.ToString(rw["sWebURL"]) }).FirstOrDefault(); } if (ds.Tables[1].Rows.Count > 0) { propM.lstTripAdvisonReviews = (from rw in ds.Tables[1].AsEnumerable() select new etblTripAdvisorReviews() { iReviewId = Convert.ToInt32(rw["iReviewId"]), sTitle = Convert.ToString(rw["sTitle"]), sText = Convert.ToString(rw["sText"]), sReviewer = Convert.ToString(rw["sReviewer"]), iRating = Convert.ToDecimal(rw["iRating"]), sRatingImageURL = Convert.ToString(rw["sRatingImageURL"]), sReviewURL = Convert.ToString(rw["sReviewURL"]), sTripType = Convert.ToString(rw["sTripType"]) }).ToList(); } SqlParameter[] hotelFacilitiesParam = new SqlParameter[1]; hotelFacilitiesParam[0] = new SqlParameter("@VendorId", sVendorId); var objresultHotelFacilities = db.Database.SqlQuery <etblHotelFacilities>("uspGetOfferReviewHotelAmentiesTG @VendorId", hotelFacilitiesParam).ToList(); propM.lstetblHotelFacilities = objresultHotelFacilities; string[] arrMapURL = new string[50]; string sPropertyNameresult = ""; arrMapURL = propM.sPropertyName.Split(' '); for (int i = 0; i < arrMapURL.Length; i++) { if (i == 0) { sPropertyNameresult = arrMapURL[i]; } else { sPropertyNameresult += "+" + arrMapURL[i]; } } sPropertyNameresult += "+" + propM.sCity; propM.slargeMapURL = "https://www.google.com/maps/place/" + sPropertyNameresult + "/@" + propM.dLatitude + "," + propM.dLongitude + ",17z?hl=en-US"; #endregion #region Gallery Details DataSet dsGallery = new DataSet(); using (SqlConnection objConn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString())) { System.Data.SqlClient.SqlParameter[] MyParams = new System.Data.SqlClient.SqlParameter[1]; MyParams[0] = new System.Data.SqlClient.SqlParameter("@VendorId", sVendorId); dsGallery = SqlHelper.ExecuteDataset(objConn, CommandType.StoredProcedure, "uspGetPropertyPhotosTG", MyParams); } List <etblPhotoGallery> objresulttblPhotoGallery = new List <etblPhotoGallery>(); for (int lstphoto = 0; lstphoto < dsGallery.Tables[0].Rows.Count; lstphoto++) { objresulttblPhotoGallery.Add(new etblPhotoGallery() { //iVendorId = dsGallery.Tables[0].Rows[lstphoto]["sHotelCode"].ToString(), sMainImgUrl = dsGallery.Tables[0].Rows[lstphoto]["sImageUrl"].ToString(), // sthumbImgUrl = dsGallery.Tables[0].Rows[lstphoto]["sThumbImgUrl"].ToString(), bIsPrimaryH = dsGallery.Tables[0].Rows[lstphoto]["bIsPrimaryH"] == "1" ? true : false, }); } propM.lstetblPhotoGallery = objresulttblPhotoGallery; //List<etblHotelFacilities> objresultetblHotelFacilities = new List<etblHotelFacilities>(); //for (int lstHotelFacilities = 0; lstHotelFacilities < dsGallery.Tables[1].Rows.Count; lstHotelFacilities++) //{ // objresultetblHotelFacilities.Add(new etblHotelFacilities() // { // iHoteFacilityId = Convert.ToInt32(dsGallery.Tables[1].Rows[lstHotelFacilities]["iAmenityId"].ToString()), // sHotelFacilites = dsGallery.Tables[1].Rows[lstHotelFacilities]["sDescription"].ToString(), // }); //} //propM.lstetblHotelFacilities = objresultetblHotelFacilities; #endregion #region DistanceToAirportRailway if (propM.sDistanceToAirportRailway1 != null && (propM.dDistanceToAirportRailway1 != null || propM.dDistanceToAirportRailway1 != 0)) { propM.sDistanceToAirportRailway = propM.sDistanceToAirportRailway1 + "(" + propM.dDistanceToAirportRailway1 + " Km) "; } if (propM.sDistanceToAirportRailway2 != null && (propM.dDistanceToAirportRailway2 != null || propM.dDistanceToAirportRailway2 != 0)) { propM.sDistanceToAirportRailway = propM.sDistanceToAirportRailway + propM.sDistanceToAirportRailway2 + "(" + propM.dDistanceToAirportRailway2 + " Km) "; } if (propM.sDistanceToAirportRailway3 != null && (propM.dDistanceToAirportRailway3 != null || propM.dDistanceToAirportRailway3 != 0)) { propM.sDistanceToAirportRailway = propM.sDistanceToAirportRailway + propM.sDistanceToAirportRailway3 + "(" + propM.dDistanceToAirportRailway3 + " Km)"; } #endregion #region NearestTransport1 if (propM.sNearestTransport1 != null && (propM.dNearestTransport1 != null || propM.dNearestTransport1 != 0)) { propM.sNearestTransport = propM.sNearestTransport1 + "(" + propM.dNearestTransport1 + " Km) "; } if (propM.sNearestTransport2 != null && (propM.dNearestTransport2 != null || propM.dNearestTransport2 != 0)) { propM.sNearestTransport = propM.sNearestTransport + propM.sNearestTransport2 + "(" + propM.dNearestTransport2 + " Km) "; } if (propM.sNearestTransport3 != null && (propM.dNearestTransport3 != null || propM.dNearestTransport3 != 0)) { propM.sNearestTransport = propM.sNearestTransport + propM.sNearestTransport3 + "(" + propM.dNearestTransport3 + " Km) "; } #endregion return(propM); } }
//Save booking data in Database private int SaveBookingAndGetBookingId(PropDetailsM obj) { int result = 0; try { Decimal?ExchangeRate = 1; Decimal?OriginalTotalAmt = 0; int? Days = 0; etblOriginalBookingPrice objOrgBook = new etblOriginalBookingPrice(); etblBookingNegotiationTx objNego = new etblBookingNegotiationTx(); etblBookingTrakerTx objTrck = new etblBookingTrakerTx(); List <etblBookingGuestMap> lst = new List <etblBookingGuestMap>(); List <etblBookingDetailsTx> lstBookDetails = new List <etblBookingDetailsTx>(); List <etblBookingCancellationPolicyMap> lstCancelPolicy = new List <etblBookingCancellationPolicyMap>(); List <etblBookedDayWiseTaxAmountDetails> lstDayTaxes = new List <etblBookedDayWiseTaxAmountDetails>(); List <etblBookedDayWiseTaxAmountDetailsAll> lstDayTaxesDateWise = new List <etblBookedDayWiseTaxAmountDetailsAll>(); obj.objBooking.iPropId = obj.iPropId; obj.objBooking.iCustomerId = obj.iUserId; obj.objBooking.iGuestId = obj.iGuestId; if (obj.iUserId == 0) { obj.objBooking.iCustomerId = null; } if (obj.iGuestId == 0) { obj.objBooking.iGuestId = null; } obj.objBooking.dtCheckIn = obj.dtCheckIn; obj.objBooking.dtChekOut = obj.dtCheckOut; obj.objBooking.dtReservationDate = DateTime.Now; obj.objBooking.sTitleOFR = obj.sUserTitle; obj.objBooking.sFirstNameOFR = obj.sUserFirstName; obj.objBooking.sLastNameOFR = obj.sUserLastName; obj.objBooking.sEmailOFR = obj.sUserEmail; obj.objBooking.sMobileOFR = obj.sUserMobileNo; obj.objBooking.sCountryPhoneCode = obj.sCountryPhoneCode; obj.objBooking.dtActionDate = DateTime.Now; obj.objBooking.BookingStatus = "PP"; obj.objBooking.PaymentStatus = "P"; obj.objBooking.sExtra3 = "Redeem"; obj.objBooking.sExtra4 = obj.sTotalPoints; obj.objBooking.sCurrencyCode = obj.Currency; obj.objBooking.dServiceCharge = obj.TaxCharges.dOFRServiceCharge; obj.objBooking.dGSTOnServiceCharge = obj.TaxCharges.TaxOnServiceCharge; obj.objBooking.dGSTValue = obj.TaxCharges.dGstValue; obj.objBooking.dGSTServiceType = obj.TaxCharges.cGstValueType; if (obj.objBooking.sCurrencyCode != "INR") { etblExchangeRatesM objExchange = BL_ExchangeRate.GetSingleRecordById("INR", obj.objBooking.sCurrencyCode); if (objExchange.dRate != 0) { ExchangeRate = 1 / objExchange.dRate; } } Days = Convert.ToInt32((Convert.ToDateTime(obj.objBooking.dtChekOut) - Convert.ToDateTime(obj.objBooking.dtCheckIn)).TotalDays); obj.objBooking.dTotalAmount = obj.dSummaryRoomRate * ExchangeRate; decimal OFRServiceTax = obj.objBooking.dServiceCharge + obj.objBooking.dGSTOnServiceCharge; if (!String.IsNullOrEmpty(obj.objBooking.sExtra2)) { obj.objBooking.sExtra2 = (Convert.ToDecimal(obj.objBooking.sExtra2) * Convert.ToDecimal(ExchangeRate)).ToString(); } obj.objBooking.dTaxes = obj.dSummaryTaxes * ExchangeRate; obj.objBooking.dTaxesForHotel = obj.dSummaryTaxes * ExchangeRate; obj.objBooking.dTotalExtraBedAmount = obj.dSummaryExtraBedCharges * ExchangeRate; obj.objBooking.dTaxesOriginal = obj.dSummaryTaxes * ExchangeRate; string TimeZone = Session["TimeZone"] != null ? Session["TimeZone"].ToString() : "+5:30"; decimal zone = Convert.ToDecimal(TimeZone.Replace(":", ".").Replace("+", "")); obj.objBooking.iCountryOffset = zone; if (obj.objBooking.PromoCodeApplied == true) { obj.objBooking.dDiscountedBidPrice = obj.objBooking.PromoCodeValue * ExchangeRate; } decimal Rate = obj.dCommissionRate; if (Rate != 0) { decimal Comm = (obj.dSummaryRoomRate + obj.dSummaryExtraBedCharges) * Rate / 100; obj.objBooking.dTotalComm = Comm * ExchangeRate; obj.objBooking.dTotalCommOriginal = Comm * ExchangeRate; } obj.objBooking.cBookingType = "R"; objTrck.BookingStatus = "PP"; objTrck.dtActionDate = DateTime.Now; for (int i = 0; i < obj.lstetblRooms.Count; i++) { for (int j = 0; j < obj.lstetblRooms[i].lstRatePlan.Count; j++) { for (int lstOcc = 0; lstOcc < obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy.Count; lstOcc++) { if (obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms != 0) { for (int k = 0; k < obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms; k++) { int extrabed = obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].ExtraBeds; decimal extrabedcharges = Convert.ToDecimal(obj.lstetblRooms[i].ExtraBedCharges) * Convert.ToDecimal(ExchangeRate); decimal total = extrabedcharges * extrabed; decimal?dPriceRP = Convert.ToDecimal(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dPriceRP) * Convert.ToDecimal(ExchangeRate); decimal?dBasePrice = Convert.ToDecimal(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dBasePrice) * Convert.ToDecimal(ExchangeRate); if (dPriceRP > dBasePrice) { OriginalTotalAmt += dPriceRP * Days; } else { OriginalTotalAmt += dBasePrice * Days; } lstBookDetails.Add(new etblBookingDetailsTx() { iRoomId = Convert.ToString(obj.lstetblRooms[i].iRoomId), iRPId = Convert.ToString(obj.lstetblRooms[i].lstRatePlan[j].RPID), iRooms = 1, sRoomName = obj.lstetblRooms[i].sRoomName, sRPName = obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].RatePlan, iOccupancy = Convert.ToInt16(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iOccupancy), dRoomRate = obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dPrice * ExchangeRate, dExtraBedRate = total, sAmenityRatePlan = obj.lstetblRooms[i].lstRatePlan[j].RateInclusion, iAdults = Convert.ToInt16(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iAdults), iChildren = Convert.ToInt16(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iChildrens), iExtraBeds = Convert.ToInt16(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].ExtraBeds), sChildrenAge = obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].ChildrenAge, dTaxes = (obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dTaxes * ExchangeRate) / Days, dTaxesForHotel = ((obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dTaxes) * ExchangeRate) / Days, dtActionDate = DateTime.Now, iPromoType = Convert.ToInt16(obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iPromoType) }); } var lstTaxes = obj.lstTaxesDateWise_OfferReview.Where(u => u.RPID == obj.lstetblRooms[i].lstRatePlan[j].RPID && u.RoomID == obj.lstetblRooms[i].iRoomId && u.iOccupancy == obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iOccupancy).ToList(); for (int tax = 0; tax < lstTaxes.Count; tax++) { lstDayTaxes.Add(new etblBookedDayWiseTaxAmountDetails() { dtStayDay = Convert.ToDateTime(lstTaxes[tax].dtDate), dAmount = Convert.ToDecimal(lstTaxes[tax].dBasePrice) * ExchangeRate, dTaxPerc = Convert.ToDecimal(lstTaxes[tax].TaxPer), dTaxVal = Convert.ToDecimal(lstTaxes[tax].TaxVal) * ExchangeRate, RoomID = Convert.ToInt32(lstTaxes[tax].RoomID), RPID = Convert.ToInt32(lstTaxes[tax].RPID), iOccupancy = Convert.ToInt32(lstTaxes[tax].iOccupancy), bIsPromo = Convert.ToBoolean(lstTaxes[tax].bIsPromo) }); } var lstTaxesDateWise = obj.lstTaxesDateWiseAll_OfferReview.Where(u => u.RPID == obj.lstetblRooms[i].lstRatePlan[j].RPID && u.iRoomId == obj.lstetblRooms[i].iRoomId && u.iOccupancy == obj.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iOccupancy).ToList(); for (int tax = 0; tax < lstTaxesDateWise.Count; tax++) { lstDayTaxesDateWise.Add(new etblBookedDayWiseTaxAmountDetailsAll() { dtStayDay = Convert.ToDateTime(lstTaxesDateWise[tax].dtStay), dAmount = Convert.ToDecimal(lstTaxesDateWise[tax].dPrice) * ExchangeRate, dTaxPerc = Convert.ToDecimal(lstTaxesDateWise[tax].MaxTaxPer), dTaxVal = Convert.ToDecimal(lstTaxesDateWise[tax].MaxTaxVal) * ExchangeRate, RoomID = Convert.ToInt32(lstTaxesDateWise[tax].iRoomId), RPID = Convert.ToInt32(lstTaxesDateWise[tax].RPID), iOccupancy = Convert.ToInt32(lstTaxesDateWise[tax].iOccupancy), iTaxId = Convert.ToInt32(lstTaxesDateWise[tax].TaxId) }); } for (int lstCancellation = 0; lstCancellation < obj.lstetblRooms[i].lstRatePlan[j].lstCancellationPolcy.Count; lstCancellation++) { DateTime StarDate = obj.lstetblRooms[i].lstRatePlan[j].lstCancellationPolcy[lstCancellation].ValidFrom; DateTime EndDate = obj.lstetblRooms[i].lstRatePlan[j].lstCancellationPolcy[lstCancellation].ValidTo; var res = new List <string>(); for (var date = StarDate; date <= EndDate; date = date.AddDays(1)) { res.Add(date.ToString()); } foreach (var ddate in res) { lstCancelPolicy.Add(new etblBookingCancellationPolicyMap() { sPolicyName = obj.lstetblRooms[i].lstRatePlan[j].lstCancellationPolcy[lstCancellation].PolicyName, dtDate = Convert.ToDateTime(ddate), dtActionDate = DateTime.Now, iRPId = obj.lstetblRooms[i].lstRatePlan[j].lstCancellationPolcy[lstCancellation].iRPId.ToString() }); } } } } } } objOrgBook.dOriginalTotalAmount = OriginalTotalAmt; result = BL_Booking.AddBooking(obj, objNego, objTrck, lstBookDetails, lst, lstCancelPolicy, lstDayTaxes, objOrgBook, lstDayTaxesDateWise); } catch (Exception) { result = 0; } return(result); }
public ActionResult Index(string propId, string checkIn, string checkOut, string sRoomData) { PropDetailsM propDetailRequestModel = new PropDetailsM(); PropDetailsM propDetails = new PropDetailsM(); if (!string.IsNullOrEmpty(propId)) { if (!string.IsNullOrEmpty(checkIn) && !string.IsNullOrEmpty(checkOut)) { propDetailRequestModel.dtCheckIn = DateTime.Parse(checkIn); propDetailRequestModel.dtCheckOut = DateTime.Parse(checkOut); } else { propDetailRequestModel.dtCheckIn = DateTime.Now.Date.AddDays(1); propDetailRequestModel.dtCheckOut = DateTime.Now.Date.AddDays(2); checkIn = DateTime.Today.ToString("dd/MM/yyyy"); checkOut = DateTime.Today.AddDays(1).ToString("dd/MM/yyyy"); } var decodedPropId = Convert.ToInt32(clsUtils.Decode(propId)); propDetailRequestModel.iPropId = decodedPropId; propDetailRequestModel.iUserId = User.Identity.GetUserId <int>(); propDetailRequestModel.Currency = CurrencyCode; #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); } else { roomDataResult = new List <RoomData> { new RoomData { adult = 2, room = 1, child = 0, ChildAge = new List <ChildAge>() } }; } 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; dtChildrenAge["Age"] = child.Age; dtChildrenAgeSearch.Rows.Add(dtChildrenAge); } } #endregion #region OfferReviewTracker var tracker = new etblOfferReviewTrackerTx(); tracker.iPropId = decodedPropId; tracker.dtActionDate = DateTime.Now; tracker.sIPAddress = OneFineRateAppUtil.clsUtils.getIpAddress(); BL_tblOfferReviewTrackerTx.AddRecord(tracker); #endregion propDetails = BL_PropDetails.GetPropertyDetailsToRedeemPoints(decodedPropId, propDetailRequestModel, dtRoomOccupancySearch, dtChildrenAgeSearch); propDetails.bRoomAvailable = true; propDetails.cStatus = "A"; propDetails.dtCheckIn = propDetailRequestModel.dtCheckIn; propDetails.dtCheckOut = propDetailRequestModel.dtCheckOut; propDetails.sCheckInDate = checkIn; propDetails.sCheckOutDate = checkOut; propDetails.sRoomData = sRoomData; propDetails.hdnJsonData = sRoomData; ViewBag.GuestDetailString = roomDataResult.FirstOrDefault().adult + roomDataResult.FirstOrDefault().child + " Guests in 1 Room"; var uniqueSessionId = Guid.NewGuid().ToString(); propDetails.TempDataPropDetails = uniqueSessionId; } return(View(propDetails)); }
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 !")); } }
//[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)); }