Пример #1
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 !"));
            }
        }
Пример #2
0
        public ActionResult Review(string propId, int roomId, string checkIn, string checkOut, int ratePlanId, string sRoomData, bool isPromo, string uniqueSessionId)
        {
            try
            {
                ViewBag.HeaderBarData = "Preview";

                var decodedPropId = Convert.ToInt32(clsUtils.Decode(propId));
                var customerId    = User.Identity.GetUserId <long>();

                DateTime dtCheckIn  = DateTime.ParseExact(checkIn, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                DateTime dtCheckOut = DateTime.ParseExact(checkOut, "dd/MM/yyyy", CultureInfo.InvariantCulture);

                #region RoomOccupancySearch

                DataTable dtRoomOccupancySearch = new DataTable();
                dtRoomOccupancySearch.Columns.AddRange(new DataColumn[3]
                {
                    new DataColumn("ID", typeof(int)),
                    new DataColumn("iAdults", typeof(short)),
                    new DataColumn("children", typeof(short))
                });

                DataTable dtChildrenAgeSearch = new DataTable();
                dtChildrenAgeSearch.Columns.AddRange(new DataColumn[2]
                {
                    new DataColumn("ID", typeof(int)),
                    new DataColumn("Age", typeof(short))
                });

                var roomDataResult = new List <RoomData>();

                if (!string.IsNullOrEmpty(sRoomData))
                {
                    roomDataResult = new JavaScriptSerializer().Deserialize <List <RoomData> >(sRoomData);

                    foreach (var room in roomDataResult)
                    {
                        DataRow roomOccupancy = dtRoomOccupancySearch.NewRow();
                        roomOccupancy["ID"]       = room.room;
                        roomOccupancy["iAdults"]  = room.adult;
                        roomOccupancy["children"] = room.child;
                        dtRoomOccupancySearch.Rows.Add(roomOccupancy);

                        foreach (var child in room.ChildAge)
                        {
                            DataRow dtChildrenAge = dtChildrenAgeSearch.NewRow();
                            dtChildrenAge["ID"] = room.room;
                            if (child.Age == "<1")
                            {
                                dtChildrenAge["Age"] = "0";
                                child.Age            = "0";
                            }
                            else
                            {
                                dtChildrenAge["Age"] = child.Age;
                            }
                            dtChildrenAge["Age"] = child.Age == "<1" ? "0" : child.Age;

                            dtChildrenAgeSearch.Rows.Add(dtChildrenAge);
                        }
                    }
                }

                #endregion

                #region Hotel Details

                var propDetails = BL_PropDetails.GetRoomReviewDetailsToRedeemPoints(decodedPropId,
                                                                                    customerId,
                                                                                    dtCheckIn.ToString("yyyy-MM-dd"),
                                                                                    dtCheckOut.ToString("yyyy-MM-dd"),
                                                                                    CurrencyCode,
                                                                                    roomId,
                                                                                    ratePlanId,
                                                                                    isPromo,
                                                                                    dtRoomOccupancySearch,
                                                                                    dtChildrenAgeSearch);

                if (propDetails != null)
                {
                    if (User.Identity.IsAuthenticated)
                    {
                        var user = BL_WebsiteUser.GetSingleRecordById(User.Identity.GetUserId <long>());
                        propDetails.sUserTitle        = user.Title;
                        propDetails.sUserFirstName    = user.FirstName;
                        propDetails.sUserLastName     = user.LastName;
                        propDetails.sUserEmail        = user.Email;
                        propDetails.sUserMobileNo     = user.PhoneNumber;
                        propDetails.sCountryPhoneCode = user.sCountryPhoneCode;
                        propDetails.iStateId          = user.StateId.HasValue ? user.StateId.Value : 0;
                        propDetails.iUserId           = user.Id;
                    }

                    ViewBag.dExchangeRate = 1;

                    if (CurrencyCode != "INR")
                    {
                        etblExchangeRatesM objExchange = BL_ExchangeRate.GetSingleRecordById("INR", CurrencyCode);
                        if (objExchange.dRate.HasValue)
                        {
                            ViewBag.dExchangeRate = 1 / objExchange.dRate.Value;
                        }
                    }

                    //Used to Remember when Modify Search
                    ViewBag.sPropId     = propId;
                    ViewBag.scheckIn    = checkIn;
                    ViewBag.scheckOut   = checkOut;
                    ViewBag.sRoomData   = sRoomData;
                    ViewBag.iRoomId     = roomId;
                    ViewBag.iRatePlanId = ratePlanId;
                    ViewBag.IsPromo     = isPromo;

                    propDetails.iPropId    = decodedPropId;
                    propDetails.Symbol     = BL_ExchangeRate.GetSymbolByCurrencyCode(CurrencyCode);
                    propDetails.sRoomData  = sRoomData;
                    propDetails.dtCheckIn  = dtCheckIn;
                    propDetails.dtCheckOut = dtCheckOut;
                    propDetails.iTotalDays = (dtCheckOut - dtCheckIn).TotalDays.ToString();
                    propDetails.Currency   = CurrencyCode;

                    int     RatePlan = 0, iNoRoom = 0, iDays = 0, iCount = 0;
                    decimal RoomPrice    = 0;
                    decimal DTotal       = 0;
                    decimal ExtraCharges = 0;
                    decimal totalTax     = 0;
                    int     ExtraBed     = 0;
                    int     totalPoints  = 0;

                    for (int i = 0; i < propDetails.lstetblRooms.Count; i++)
                    {
                        for (int j = 0; j < propDetails.lstetblRooms[i].lstRatePlan.Count; j++)
                        {
                            for (int lstOcc = 0; lstOcc < propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy.Count; lstOcc++)
                            {
                                if (propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms != 0)
                                {
                                    for (int k = 0; k < propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms; k++)
                                    {
                                        ExtraBed     = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].ExtraBeds;
                                        ExtraCharges = propDetails.lstetblRooms[i].ExtraBedCharges;
                                        totalTax    += propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dTaxesForHotel;
                                        RatePlan     = propDetails.lstetblRooms[i].lstRatePlan[j].RPID;
                                        RoomPrice    = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].dPrice;
                                        isPromo      = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].blsPromo;
                                        totalPoints += propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iPoints;
                                        iNoRoom      = propDetails.lstetblRooms[i].lstRatePlan[j].lstetblOccupancy[lstOcc].iNoOfRooms;
                                        iDays        = Convert.ToInt32(propDetails.iTotalDays);
                                        iCount       = iNoRoom * iDays;

                                        RoomPrice    = RoomPrice * (iDays);
                                        ExtraCharges = (ExtraBed * ExtraCharges) * iDays;
                                        DTotal      += RoomPrice + ExtraCharges;
                                        iNoRoom++;
                                    }
                                }
                            }
                        }
                    }

                    propDetails.dSummaryRoomRate = RoomPrice;
                    propDetails.sSummaryRoomRate = clsUtils.ConvertNumberToCommaSeprated(RoomPrice);

                    propDetails.dSummaryExtraBedCharges = ExtraCharges;
                    propDetails.sSummaryExtraBedCharges = clsUtils.ConvertNumberToCommaSeprated(ExtraCharges);

                    propDetails.dSummaryTaxes = totalTax;
                    propDetails.sSummaryTaxes = clsUtils.ConvertNumberToCommaSeprated(totalTax);

                    propDetails.dSummaryTotal = DTotal;
                    propDetails.sSummaryTotal = clsUtils.ConvertNumberToCommaSeprated(DTotal);

                    propDetails.sSummaryTaxes_display = clsUtils.ConvertNumberToCommaSeprated(totalTax + propDetails.TaxCharges.TotalServiceCharge);
                    propDetails.sTotalPoints          = clsUtils.ConvertNumberToCommaSeprated(totalPoints * Convert.ToInt32(propDetails.iTotalDays));

                    propDetails.TempDataPropDetails = uniqueSessionId;

                    Session[uniqueSessionId] = propDetails;
                }

                #endregion Hotel Details

                return(View(propDetails));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #3
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));
        }