Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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 }));
            }
        }
Esempio n. 3
0
        // 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));
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        //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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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 !"));
            }
        }
Esempio n. 8
0
        //[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));
        }