public static AvailabilityReq GetAvailabilityForCancelFromDB(string sid, string HotelCode, string roomcode, string pid)
        {
            AvailabilityReq availabilityReq = new AvailabilityReq();

            try
            {
                SearchDBEntities searchDB = new SearchDBEntities();
                using (HotelBookingDBEntities db = new HotelBookingDBEntities())
                {
                    availabilityReq.HotelCode = HotelCode;

                    availabilityReq.PID = pid;
                    availabilityReq.Sid = sid;



                    var roomsData = searchDB.SearchRoomResults.Where(x => x.sID == sid && x.HotelCode == HotelCode && x.RoomCode == roomcode && x.ProviderId.ToString() == pid).ToList();
                    for (int i = 0; i < roomsData.Count; i++)
                    {
                        RoomAvailability room = new RoomAvailability();

                        room.RoomId  = int.Parse(roomsData[i].RoomCode);
                        room.RoomRef = roomsData[i].RoomReference;
                        availabilityReq.Rooms.Add(room);
                        availabilityReq.TotalCost += roomsData[i].costPrice.Value;
                    }
                }

                return(availabilityReq);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static List <CancellationRule> GetCancelFromDB(string sid, string HotelCode, string roomcode, string pid)
        {
            try
            {
                List <CancelPolicy>     cancelPolicies    = new List <CancelPolicy>();
                List <CancellationRule> cancellationRules = new List <CancellationRule>();
                SearchDBEntities        searchDB          = new SearchDBEntities();

                using (HotelBookingDBEntities db = new HotelBookingDBEntities())
                {
                    cancelPolicies = db.CancelPolicies.Where(a => a.Sid == sid && a.HotelCode == HotelCode && a.RoomCode.ToString() == roomcode && a.ProviderID == pid).ToList();
                }
                if (cancelPolicies.Count > 0)
                {
                    var searchData = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == sid);
                    foreach (var item in cancelPolicies)
                    {
                        CancellationRule cancellation = new CancellationRule();
                        cancellation.FromDate = item.FromDate.ToString();
                        cancellation.Price    = (double)item.SellPrice.Value;

                        cancellation.CanellationRuleText = searchData.language.ToLower() == "en" ? item.SellPrice.Value + " " + searchData.currency + " of the booking amount " + item.FromDate.Value.ToString("MMMM dd, yyyy") : item.FromDate.Value.ToString("MMMM dd, yyyy") + " إلى " + "" + searchData.currency + item.SellPrice;
                        cancellationRules.Add(cancellation);
                    }
                    return(cancellationRules);
                }
                return(new List <CancellationRule>());
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("AvailabilityController/Errors/", "getcancelpolicy" + "INDAL" + sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);

                return(new List <CancellationRule>());
            }
        }
Example #3
0
        public RestCriteraiData GetDataForGatewayDA(string BN)
        {
            try
            {
                SearchDBEntities       searchDB       = new SearchDBEntities();
                HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities();
                hotelsDBEntities       hotelsDB       = new hotelsDBEntities();
                SearchData             searchData     = new SearchData();
                RestCriteraiData       restCriterai   = new RestCriteraiData();
                var booking = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.Booking_No == BN);

                var search = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == booking.SessionId);
                restCriterai.searchData          = new SearchData();
                restCriterai.searchData.CityName = search.cityName;
                restCriterai.searchData.Currency = search.currency;
                restCriterai.searchData.DateFrom = search.dateFrom.Value;
                restCriterai.searchData.DateTo   = search.dateTo.Value;
                restCriterai.searchData.Lang     = search.language;
                restCriterai.searchData.Nat      = search.passengerNationality;
                restCriterai.searchData.POS      = search.pos;
                restCriterai.pos               = search.pos;
                restCriterai.searchData.sID    = search.sID;
                restCriterai.searchData.Source = search.source;
                var Rooms = searchDB.SearchRoomDatas.Where(a => a.sID == booking.SessionId).ToList();
                foreach (var item in Rooms)
                {
                    SearchRoom searchRoom = new SearchRoom();
                    searchRoom.Adult = item.adultNo.Value;
                    for (int i = 0; i < item.childernNo.Value; i++)
                    {
                        searchRoom.Child.Add(2);
                    }
                    restCriterai.searchData.SearchRooms.Add(searchRoom);
                }
                // var booking = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.SessionId == Sid && x.Booking_No == BN);
                restCriterai.cost = booking.Sell_Price.Value;
                restCriterai.Curr = booking.Sell_Currency;
                restCriterai.Pid  = booking.Provider_ID;
                if (restCriterai.Pid == "5")
                {
                    TBOContext bOContext = new TBOContext();
                    var        Hotel     = bOContext.HotelDetails.FirstOrDefault(a => a.HotelCode == booking.Hotel_ID);
                    restCriterai.HotelName = Hotel.HotelName;
                    //restCriterai.HotelStars = int.Parse(Hotel.rating);
                }
                else if (restCriterai.Pid == "4")
                {
                    var Hotel = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == booking.Hotel_ID);
                    restCriterai.HotelName  = Hotel.hotelName;
                    restCriterai.HotelStars = int.Parse(Hotel.rating);
                }

                return(restCriterai);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public static List <SearchRoomResult> getRoomsRules(string Hotelcode, string SessionId, string pid)
        {
            List <string>    Rooms = new List <string>();
            SearchDBEntities db    = new SearchDBEntities();
            int provider           = int.Parse(pid);
            var RoomsDB            = db.SearchRoomResults.Where(a => a.HotelCode == Hotelcode && a.ProviderId == provider && a.sID == SessionId).ToList();

            return(RoomsDB);
        }
        public static SearchCriteria GetSearchDataBySession(string sid)
        {
            SearchCriteria searchCriteria = new SearchCriteria();

            using (SearchDBEntities db = new SearchDBEntities())
            {
                searchCriteria = db.SearchCriterias.FirstOrDefault(a => a.sID == sid);
            }
            return(searchCriteria);
        }
        //TBO
        public List <SearchRoomData> GetADTCHDNoBySid(string sid)
        {
            List <SearchRoomData> rooms = new List <SearchRoomData>();

            using (SearchDBEntities db = new SearchDBEntities())
            {
                rooms = db.SearchRoomDatas.Where(dd => dd.sID == sid).ToList();
            }
            return(rooms);
        }
        public static List <SearchRoomResult> GetRoomsForTraveller(string sid, string hotel, string Pid, List <string> RoomsCode)
        {
            SearchDBEntities searchDB = new SearchDBEntities();

            List <SearchRoomResult> requiredBooking = new List <SearchRoomResult>();

            requiredBooking = searchDB.SearchRoomResults.Where(a => RoomsCode.Contains(a.RoomCode) && a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList();
            //requiredBooking = searchDB.SearchRoomDatas.Where(a => a.sID == sid).ToList();

            return(requiredBooking);
        }
Example #8
0
        public async void  AddMetaSearchStatistic(CheckOutData data, string BN)
        {
            try
            {
                SearchDBEntities searchDB = new SearchDBEntities();
                hotelsDBEntities db       = new hotelsDBEntities();
                SearchStatistic  metaData = new SearchStatistic();
                var SearchData            = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == data.Sid);
                var hotel = db.hotels.FirstOrDefault(h => h.hotelID == data.HotelID);
                //   var PosData= db.
                if (hotel != null && SearchData != null)
                {
                    metaData.BookingNo     = BN;
                    metaData.BookingStatus = "New Booking";
                    metaData.CheckOut      = SearchData.dateTo.Value;
                    metaData.ChekIn        = SearchData.dateFrom.Value;
                    metaData.CityName      = hotel.cityName;
                    metaData.Date          = SearchData.sessionCreatedAt.Value;
                    metaData.HotelID       = data.HotelID;
                    metaData.HotelName     = hotel.hotelName;
                    metaData.POS           = SearchData.pos;
                    metaData.ProvideID     = data.Pid;
                    metaData.sID           = data.Sid;
                    metaData.Source        = SearchData.source;
                }
                string path = ConfigurationSettings.AppSettings["metaData"];

                var client   = new HttpClient();
                var url      = path + "/api/MetaSearchStatistics/POST";
                var response = client.PostAsJsonAsync(url, metaData).Result;

                LoggingHelper.WriteToFile("AddMetaSearchStatistic/", "InSearchstatisticDA ", "ResponseData", response.StatusCode.ToString());

                //if (response.IsSuccessStatusCode)
                //{



                //}
                //else
                //{


                //}
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("AddMetaSearchStatistic/Errors/", "InSearchstatisticDA" + data.Sid, ex.Message, ex.Message + ex.StackTrace);
            }
        }
        public bool ChechSessionStatus(SearchData searchData)
        {
            using (SearchDBEntities db = new SearchDBEntities()) {
                var validSession = db.SearchCriterias.FirstOrDefault(a => a.sID == searchData.sID && a.dateFrom == searchData.DateFrom && a.source == searchData.Source);

                if (validSession == null)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
        }
        public static string GetBookingNumber(string sid, string Src, string Pid)
        {
            try
            {
                SearchDBEntities searchDB = new SearchDBEntities();

                //     HotelBookingDBEntitiy dB = new HotelBookingDBEntitiy();
                var searchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid);
                if (searchData != null)
                {
                    string BookingNum;
                    string connstring   = ConfigurationSettings.AppSettings["HB_CS"];
                    string BookNoPrefix = ConfigurationSettings.AppSettings["BookNoPrefix"];

                    using (SqlConnection conn = new SqlConnection(connstring))
                    {
                        conn.Open();
                        SqlCommand cmd = new SqlCommand("CreateBookingNum", conn);
                        // 2. set the command object so it knows to execute a stored procedure
                        cmd.CommandType = CommandType.StoredProcedure;
                        // execute the command

                        cmd.Parameters.Add(new SqlParameter("Bn", BookNoPrefix));//  3
                        cmd.Parameters.Add(new SqlParameter("User", sid));
                        cmd.Parameters.Add(new SqlParameter("lang", searchData.language));
                        cmd.Parameters.Add(new SqlParameter("pos", searchData.pos));
                        cmd.Parameters.Add(new SqlParameter("sc", Src));
                        cmd.Parameters.Add(new SqlParameter("pid ", Pid));
                        cmd.Parameters.Add(new SqlParameter("status", "Bending"));

                        cmd.Parameters.Add("@newBN", SqlDbType.NVarChar, 50).Direction = ParameterDirection.Output;

                        cmd.ExecuteNonQuery();

                        // read output value from @NewId
                        string BookingNumberId = Convert.ToString(cmd.Parameters["@newBN"].Value);
                        return(BookingNumberId);
                    }
                }
                return(null);
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SaveBookingController/Errors/", "SaveController", "GetBookingNumber" + sid, ex.InnerException?.Message + "//" + ex.Message + ex.StackTrace);

                return(null);
            }
        }
Example #11
0
        public IHttpActionResult Get(string sid, string hotel, string Pid)
        {
            // call bll
            try
            {
                LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "INController" + sid, "Rooms:", "Sid: " + sid + " , pid: " + Pid + " , hotelId: " + hotel);
                //TBO
                if (Pid == "5")
                {
                    SearchDBEntities searchDB = new SearchDBEntities();
                    // call Room availablity api
                    string           TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == sid).PSession;                                                   //Select(s => s.PSession).ToString();
                    int              ResIndex   = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == sid && hotl.HotelCode == hotel).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString();
                    TBOSearchManager manager    = new TBOSearchManager();
                    var              TBORooms   = manager.GetAvailableRoom(TBOSession, ResIndex, hotel, sid);
                    if (TBORooms != null)
                    {
                        LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(TBORooms));

                        return(Ok(TBORooms));
                    }
                    else
                    {
                        return(Ok("No Result Found"));
                    }
                }
                else
                {
                    var Rooms = GetRoom.GetRoomsByHotelIDAndProvide(sid, Pid, hotel);
                    if (Rooms != null)
                    {
                        LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(Rooms));

                        return(Ok(Rooms));
                    }
                    else
                    {
                        return(Ok("No Result Found"));
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("HotelRoomsController/Errors/", "INController" + sid, "Exception", ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(BadRequest(ex.Message));
            }
        }
        public static List <string> getRoomsReference(List <string> Rids, string Hotelcode, string SessionId, string pid)
        {
            List <string>    Rooms = new List <string>();
            SearchDBEntities db    = new SearchDBEntities();
            int provider           = int.Parse(pid);
            var RoomsDB            = db.SearchRoomResults.Where(a => a.HotelCode == Hotelcode && a.ProviderId == provider && a.sID == SessionId).ToList();

            foreach (var item in RoomsDB)
            {
                if (Rids.Contains(item.RoomCode))
                {
                    Rooms.Add(item.RoomReference);
                }
            }
            return(Rooms);
        }
Example #13
0
        public static ConfirmData GetAllConfirmationData(string Sid, string BN)
        {
            try
            {
                // get holder from (hotelBooking) and roomsandpaxes from (hotelBookingpax)
                HotelBookingDBEntities  db          = new HotelBookingDBEntities();
                SearchDBEntities        SDB         = new SearchDBEntities();
                ConfirmData             confirmData = new ConfirmData();
                List <SearchRoomResult> Roomrates   = new List <SearchRoomResult>();
                var BookingData = db.HotelsBookings.FirstOrDefault(s => s.SessionId == Sid && s.Booking_No == BN);
                var Paxes       = db.HotelBookingPaxs.Where(a => a.SID == Sid && a.Booking_No == BN).ToList();
                var rooms       = Paxes.Where(x => x.PaxNo == 1).Select(a => a.Room_No.Value.ToString()).ToList();
                // rate from searchroom result
                foreach (var item in rooms)
                {
                    Roomrates.Add(SDB.SearchRoomResults.Where(a => /* rooms.Contains(a.RoomCode)*/ a.RoomCode == item && a.sID == Sid && a.HotelCode == BookingData.Hotel_ID).FirstOrDefault());
                }

                confirmData.hotelsBooking = BookingData;
                var searchReq = SDB.SearchCriterias.FirstOrDefault(a => a.sID == Sid);
                var toDated   = searchReq.dateTo.Value;
                var fromDated = searchReq.dateFrom.Value;

                confirmData.fromDate   = Convert.ToDateTime(searchReq.dateFrom.Value).ToString("yyyy-MM-dd");
                confirmData.ToDate     = Convert.ToDateTime(searchReq.dateTo.Value).ToString("yyyy-MM-dd");
                confirmData.Dur        = Convert.ToInt32((toDated - fromDated).TotalDays).ToString();
                confirmData.PropertyTS = SDB.SearchHotelResults.FirstOrDefault(x => x.sID == Sid && x.HotelCode == BookingData.Hotel_ID).ProviderHotelCode;
                confirmData.Pid        = BookingData.Provider_ID;
                int indx = 1;
                foreach (var item in Roomrates)
                {
                    RoomDTP roomDTP = new RoomDTP();
                    roomDTP.Rate         = item.RoomReference;
                    roomDTP.RoomN        = int.Parse(item.RoomCode);
                    roomDTP.roomResult   = item;
                    roomDTP.bookingPaxes = Paxes.Where(a => a.Room_No.ToString() == item.RoomCode && a.RoomRef == indx).ToList();
                    confirmData.Rooms.Add(roomDTP);
                    indx = indx + 1;
                }
                return(confirmData);
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SaveBookingConfirmationController/Errors/", "ConfirmationDate GetConfirmationDate" + "DAL" + Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);

                return(null);
            }
        }
Example #14
0
 public List <SearchStatistic> SearchStatisticTransaction(DateTime fromDate, DateTime toDate)
 {
     try
     {
         HotelBookingDBEntities BookingDB        = new HotelBookingDBEntities();
         SearchDBEntities       searchDB         = new SearchDBEntities();
         hotelsDBEntities       db               = new hotelsDBEntities();
         List <SearchStatistic> searchStatistics = new List <SearchStatistic>();
         var SearchesData = searchDB.SearchCriterias.Where(x => x.sessionCreatedAt >= fromDate && x.sessionCreatedAt <= toDate).ToList();
         foreach (var item in SearchesData)
         {
             SearchStatistic searchStatistic = new SearchStatistic();
             searchStatistic.ChekIn   = item.dateFrom.Value;
             searchStatistic.CheckOut = item.dateTo.Value;
             searchStatistic.Date     = item.sessionCreatedAt.Value;
             searchStatistic.POS      = item.pos;
             searchStatistic.sID      = item.sID;
             searchStatistic.Source   = item.source;
             var cityD = db.Cities.FirstOrDefault(x => x.ID.ToString() == item.cityName);
             if (cityD != null)
             {
                 searchStatistic.CityName = cityD.City1;
             }
             var BookingData = BookingDB.HotelsBookings.FirstOrDefault(a => a.SessionId == item.sID);
             if (BookingData != null)
             {
                 searchStatistic.BookingNo     = BookingData.Booking_No;
                 searchStatistic.BookingStatus = BookingData.Booking_Status;
                 searchStatistic.HotelID       = BookingData.Hotel_ID;
                 searchStatistic.ProvideID     = BookingData.Provider_ID;
                 var hotel = db.hotels.FirstOrDefault(h => h.hotelID == BookingData.Hotel_ID);
                 if (hotel != null)
                 {
                     searchStatistic.HotelName = hotel.hotelName;
                 }
             }
             searchStatistics.Add(searchStatistic);
         }
         return(searchStatistics);
     }catch (Exception ex)
     {
         LoggingHelper.WriteToFile("StatisticController/Errors/", "INDAL", "FromData" + fromDate + "to" + toDate, ex.InnerException?.Message + "//" + ex.Message + ex.StackTrace);
         return(new List <SearchStatistic>());
     }
 }
        public List <AdminRequiredData> GetHotelAdimSearchData(string Key)
        {
            try
            {
                HotelBookingDBEntities   BookingDB    = new HotelBookingDBEntities();
                SearchDBEntities         searchDB     = new SearchDBEntities();
                List <AdminRequiredData> requiredData = new List <AdminRequiredData>();
                var ListSearchData = BookingDB.HotelsBookings.Where(a => a.Booking_No.ToLower().Contains(Key.ToLower()) || a.Booking_Email.ToLower().Contains(Key.ToLower()) || a.Booking_Status.ToLower().Contains(Key.ToLower())).ToList();
                foreach (var item in ListSearchData)
                {
                    AdminRequiredData adminData = new AdminRequiredData();
                    adminData.bookingNumber = item.Booking_No;
                    adminData.creationDate  = item.Booking_Time.Value;
                    adminData.customerEmail = item.Booking_Email;
                    adminData.proveider     = item.Provider_ID;
                    adminData.status        = item.Booking_Status;
                    var Criteria = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == item.SessionId);
                    adminData.checkin  = Criteria.dateFrom.Value;
                    adminData.checkout = Criteria.dateTo.Value;
                    var Names = item.Pax_Name.Split(' ');
                    adminData.LeadFirstName = Names[0];
                    adminData.LeadLastName  = Names[1];
                    adminData.Price         = item.Sell_Price.Value;
                    adminData.Currency      = item.Sell_Currency;
                    if (item.Provider_ID == "4")
                    {
                        adminData.proveiderName = "HotelBeds";
                    }
                    else if (item.Provider_ID == "2")
                    {
                        adminData.proveiderName = "Total Stay";
                    }
                    requiredData.Add(adminData);
                }
                return(requiredData);
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("AdminPannelController/ERROR/", "HotelAdminSearchController" + "INDAL" + Key, "Data", "key is " + Key + " and key is" + Key + ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(new List <AdminRequiredData>());
            }
        }
Example #16
0
        public CheckAvailabilityForTs GetHotelDataForTsAvailability(AvailabilityReq roomsReq)
        {
            try
            {
                SearchDBEntities       dBEntities        = new SearchDBEntities();
                CheckAvailabilityForTs checkAvailability = new CheckAvailabilityForTs();
                checkAvailability.HodelData = dBEntities.SearchHotelResults.FirstOrDefault(a => a.sID == roomsReq.Sid && a.HotelCode == roomsReq.HotelCode && a.ProviderID.Value.ToString() == roomsReq.PID);
                var RoomsData = roomsReq.Rooms.Select(a => a.RoomId.ToString()).ToList();
                checkAvailability.roomResults = dBEntities.SearchRoomResults.Where(a => a.sID == roomsReq.Sid && a.HotelCode == roomsReq.HotelCode && a.ProviderId.Value.ToString() == roomsReq.PID && RoomsData.Contains(a.RoomCode)).ToList();

                return(checkAvailability);
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("AvailabilityController/Errors/", "HotelRepo" + "GetHotelDataForTsAvailability" + roomsReq.Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);

                return(null);
            }
        }
        public void CreateSession(string sID)
        {
            using (SearchDBEntities db = new SearchDBEntities())
            {
                SearchSession existisSession = db.SearchSessions.Where(a => a.Session_Id == sID).FirstOrDefault();
                if (existisSession != null)
                {
                    db.SearchSessions.Remove(existisSession);
                }

                db.SearchSessions.Add(new SearchSession()
                {
                    Session_Id = sID,
                    Status     = "Created"
                });

                db.SaveChanges();
            }
        }
        public static AvailabilityValidModel GetAvailabilityFromDB(string sid, string BN)
        {
            AvailabilityValidModel availabilityValid = new AvailabilityValidModel();
            AvailabilityReq        availabilityReq   = new AvailabilityReq();

            try
            {
                SearchDBEntities searchDB = new SearchDBEntities();
                using (HotelBookingDBEntities db = new HotelBookingDBEntities())
                {
                    var HotelBookin = db.HotelsBookings.FirstOrDefault(x => x.SessionId == sid && x.Booking_No == BN);
                    availabilityReq.HotelCode  = HotelBookin.Hotel_ID;
                    availabilityReq.BookingNum = BN;
                    availabilityReq.PID        = HotelBookin.Provider_ID;
                    availabilityReq.Sid        = sid;
                    availabilityValid.Curr     = HotelBookin.Sell_Currency;
                    var BookedRooms = db.HotelBookingRooms.Where(x => x.SID == sid && x.Booking_No == BN).ToList();
                    var lstRooms    = BookedRooms.Select(s => s.Room_No.ToString()).ToList();
                    var roomsData   = searchDB.SearchRoomResults.Where(x => x.sID == sid && x.HotelCode == HotelBookin.Hotel_ID && lstRooms.Contains(x.RoomCode) && x.ProviderId.ToString() == HotelBookin.Provider_ID).ToList();
                    if (roomsData != null && roomsData.Count > 0)
                    {
                        for (int i = 0; i < BookedRooms.Count; i++)
                        {
                            RoomAvailability room = new RoomAvailability();
                            var roomData          = roomsData.FirstOrDefault(a => a.RoomCode == BookedRooms[i].Room_No.ToString());
                            room.RoomId  = int.Parse(roomData.RoomCode);
                            room.RoomRef = roomData.RoomReference;
                            room.Cost    = roomData.costPrice.Value;
                            availabilityReq.Rooms.Add(room);
                            availabilityReq.TotalCost += roomData.costPrice.Value;
                        }
                    }
                }
                availabilityValid.availabilityReq = availabilityReq;
                return(availabilityValid);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //save sessions
        public void SaveSessions(int pid, string PSession, string SearchId, List <SearchRoom> rooms)
        {
            using (SearchDBEntities db = new SearchDBEntities())
            {
                for (int i = 0; i < rooms.Count; i++)
                {
                    db.ProviderSessions.Add(new ProviderSession
                    {
                        PID       = pid,
                        PSession  = PSession,
                        SearchId  = SearchId,
                        Adult     = rooms[i].Adult,
                        Child     = rooms[i].Child.Count,
                        ChildAges = string.Join(",", rooms[i].Child.Select(n => n.ToString()).ToArray()),
                        RoomRef   = i + 1
                    });
                }

                db.SaveChanges();
            }
        }
        public void SaveSearchData(SearchData searchData)
        {
            try
            {
                using (SearchDBEntities db = new SearchDBEntities())
                {
                    SearchCriteria searchCriteria = new SearchCriteria();
                    searchCriteria.cityName             = searchData.CityName.ToUpper();
                    searchCriteria.currency             = searchData.Currency;
                    searchCriteria.dateFrom             = searchData.DateFrom;
                    searchCriteria.dateTo               = searchData.DateTo;
                    searchCriteria.duration             = Convert.ToInt32((searchData.DateTo - searchData.DateFrom).TotalDays);
                    searchCriteria.language             = searchData.Lang;
                    searchCriteria.passengerNationality = searchData.Nat;
                    searchCriteria.pos    = searchData.POS;
                    searchCriteria.roomNo = searchData.SearchRooms.Count();
                    searchCriteria.sID    = searchData.sID;
                    searchCriteria.source = searchData.Source;
                    for (int i = 0; i < searchData.SearchRooms.Count; i++)
                    {
                        SearchRoomData searchRoomData = new SearchRoomData();
                        searchRoomData.sID        = searchData.sID;
                        searchRoomData.childernNo = searchData.SearchRooms[i].Child.Count;

                        searchRoomData.childAge = string.Join("-", searchData.SearchRooms[i].Child);
                        searchRoomData.adultNo  = searchData.SearchRooms[i].Adult;
                        searchRoomData.roomNo   = i + 1;
                        db.SearchRoomDatas.Add(searchRoomData);
                    }

                    db.SearchCriterias.Add(searchCriteria);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SearchRepo/Errors/", "SaveSearchData_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                throw ex;
            }
        }
        public HotelPackagesDetails GetHotelPackages(string pid, string sid, string hid)
        {
            HotelPackagesDetails hotelPackages = new HotelPackagesDetails();
            SearchDBEntities     searchDB      = new SearchDBEntities();
            hotelsDBEntities     hotelsDB      = new hotelsDBEntities();
            var hotelSearchData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == hid);

            var           hotelSearchpro  = hotelsDB.hotelsProviders.FirstOrDefault(a => a.hotelID == hotelSearchData.ID.ToString() && a.providerID == pid);
            var           hotelSearchDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == hid);
            var           Imgs            = hotelsDB.HotelsImages.Where(a => a.HotelID == hid).ToList();
            List <string> images          = Imgs.Select(x => x.URL).ToList();

            hotelPackages.providerHotelID = hotelSearchpro.providerHotelID;
            hotelPackages.hotelCode       = hotelSearchData.hotelID;
            hotelPackages.Address         = hotelSearchData.address;
            hotelPackages.Lng             = hotelSearchData.Lng;
            hotelPackages.Lat             = hotelSearchData.Lat;

            hotelPackages.hotelStars = int.Parse(hotelSearchData.rating);//
            hotelPackages.hotelName  = hotelSearchData.hotelName;
            hotelPackages.providerID = hotelSearchpro.providerID;
            hotelPackages.Location   = hotelSearchData.location;

            hotelPackages.hotelDescription         = hotelSearchDesc.Description1;
            hotelPackages.shortcutHotelDescription = hotelSearchDesc.Description2;
            hotelPackages.City        = hotelSearchData.cityName;
            hotelPackages.Country     = hotelSearchData.countryName;
            hotelPackages.hotelImages = images;

            var          packages    = searchDB.HotelPackages.Where(a => a.Session == sid && a.Hotelid == hid && a.Provider.ToString() == pid).ToList();
            var          Rooms       = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hid && a.ProviderId.ToString() == pid).ToList();
            RoomPackages roomPackage = new RoomPackages();

            foreach (var item in packages)
            {
                //    var availableCate = hotelPackages.packages.FirstOrDefault(a => a.RoomCategory == item.Category);
                if (roomPackage.RoomCategory != item.Category)
                {
                    if (roomPackage.roomPackages.Count != 0)
                    {
                        roomPackage.PackagesNo = roomPackage.roomPackages.Count;
                        hotelPackages.packages.Add(roomPackage);
                    }
                    roomPackage = new RoomPackages();
                    roomPackage.RoomCategory = item.Category;
                }


                RoomPackage roomPack = new RoomPackage();
                roomPack.No = item.PackageNum.Value;
                roomPack.PricePerAllNight = item.PricePerAllNight.Value;
                roomPack.PricePerNight    = item.PricePerNight.Value;

                var specPack = Rooms.Where(x => x.PackageNo == item.PackageNum).ToList();
                foreach (var r in specPack)
                {
                    RoomResult result = new RoomResult();
                    result.CostPrice      = r.costPrice.Value;
                    result.DiscountId     = r.DiscountId.Value;
                    result.PackageNO      = r.PackageNo.Value;
                    result.DiscountValue  = r.DiscountVal.Value;
                    result.Images         = Imgs.Where(x => x.Category.ToLower() == "hotel rooms").Select(a => a.URL).ToList();
                    result.MarkupId       = r.MarkupId.Value;
                    result.MarkupValue    = r.MarkupVal.Value;
                    result.Paxs           = r.PaxSQty.Value;
                    result.RoomCode       = r.roomType;
                    result.RoomIndex      = int.Parse(r.RoomCode);
                    result.RoomMeal       = r.meal;
                    result.RoomReference  = r.RoomReference;
                    result.RoomType       = r.RoomName;
                    result.TotalSellPrice = r.SellPrice.Value;
                    result.Adult          = r.Adults.Value;
                    result.Child          = r.Childern.Value;
                    if (r.IsRefundable.Value != null)
                    {
                        result.IsRefundable = r.IsRefundable.Value;
                    }
                    roomPack.roomResults.Add(result);
                }
                roomPackage.roomPackages.Add(roomPack);
                //hotelPackages.packages.Add(roomPackage);
            }
            if (roomPackage.roomPackages.Count != 0)
            {
                hotelPackages.packages.Add(roomPackage);
            }
            return(hotelPackages);
        }
Example #22
0
        public IHttpActionResult Get(string sid, string hotel, string Pid, string rooms)
        {
            // call bll
            try
            {
                LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsNumber/", "SearchController" + "INController" + sid, "Rooms", "Sid" + sid);


                var Rooms = GetRoom.GetRoomsData(sid, hotel, Pid, rooms);
                if (Rooms != null && Rooms.rooms.Count > 0)
                {
                    #region tbo  disable to not calling pricing api
                    if (Pid == "5")
                    {
                        // var ActionUrlData = ConfigurationSettings.AppSettings["ActionUrl"];
                        // var BaseCur = ConfigurationSettings.AppSettings["BaseCur"];
                        //payLinkData.ActionsUrl.ValidationUrl = ActionUrlData + "/api/HotelCheckAvailability?sid=" + Sid + "&bookingnum=" + BN;

                        SearchDBEntities searchDB = new SearchDBEntities();

                        RequiredBookingData requiredBooking = new RequiredBookingData();
                        //var data = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid);
                        var HRooms = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList();
                        //requiredBooking.Currency = data?.currency;
                        //requiredBooking.City = data?.cityName;
                        var RoomsCode = rooms.Split('-');
                        foreach (var item in RoomsCode)
                        {
                            var roomdata = HRooms.FirstOrDefault(a => a.RoomCode == item);

                            requiredBooking.rooms.Add(roomdata);
                        }
                        //TBO
                        //call check availability tbo to get hotel norms and cancel policy
                        //get room indexes to send in pricing req
                        List <int> indexs = new List <int>();

                        foreach (var indx in requiredBooking.rooms)
                        {
                            indexs.Add(int.Parse(indx.RoomCode));
                        }
                        string TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == sid).PSession;                                                   //Select(s => s.PSession).ToString();
                        int    ResIndex   = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == sid && hotl.HotelCode == hotel).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString();
                        AvailabilityAndPricingRequest req = new AvailabilityAndPricingRequest
                        {
                            SessionId         = TBOSession,
                            ResultIndex       = ResIndex,
                            OptionsForBooking = new TBO.WSDL.hotelServiceRef.BookingOptions
                            {
                                RoomCombination = new TBO.WSDL.hotelServiceRef.RoomCombination[]
                                {
                                    new TBO.WSDL.hotelServiceRef.RoomCombination {
                                        RoomIndex = indexs.ToArray()
                                    }
                                }
                            }
                        };
                        var        availRes   = AvailablityPricingService.PricingService(req, sid);
                        RoomResult roomResult = new RoomResult();
                        if (availRes != null)
                        {
                            if (availRes?.PriceVerification?.Status == PriceVerificationStatus.Failed ||
                                availRes?.PriceVerification?.Status == PriceVerificationStatus.NotAvailable)
                            {
                                return(Ok("No Result Found"));
                            }
                            if (availRes.HotelCancellationPolicies != null)
                            {
                                roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms;
                                //handel cancel policy
                                var             BaseCur              = ConfigurationSettings.AppSettings["BaseCur"];
                                CurrencyManager currencyManager      = new CurrencyManager();
                                double          ProviderExcahngeRate = currencyManager.GetCurrencyConversion("USD", BaseCur, sid);

                                foreach (var cancel in availRes.HotelCancellationPolicies?.CancelPolicies?.CancelPolicy)
                                {
                                    double costToSave = 0;
                                    string Cur        = "";
                                    //Enum.TryParse(cancel.ChargeType.ToString(), out CancellationChargeTypeForHotel Type);
                                    if (cancel.ChargeType == CancellationChargeTypeForHotel.Percentage)
                                    {
                                        costToSave = (double)cancel.CancellationCharge;
                                        Cur        = "%";
                                    }
                                    else
                                    {
                                        Cur        = "KWD";
                                        costToSave = (double)cancel.CancellationCharge * ProviderExcahngeRate; //Math.Round((double)cancel.CancellationCharge * ProviderExcahngeRate, 3);
                                    }
                                    CancellationRule cancellation = new CancellationRule();
                                    cancellation.FromDate   = cancel.FromDate;
                                    cancellation.ToDate     = cancel.ToDate;
                                    cancellation.Cost       = (double)cancel.CancellationCharge;
                                    cancellation.ChargeType = cancel.ChargeType.ToString();
                                    cancellation.Curency    = Cur;
                                    cancellation.Price      = costToSave; //
                                    roomResult.cancellationRules.Add(cancellation);
                                }


                                if (availRes?.PriceVerification?.PriceChanged == true)
                                {
                                    //var roomsTbo = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList();
                                    Rooms.Status  = 1;
                                    Rooms.Message = "Price Change";
                                    //results.Status = 1;
                                    foreach (var item in availRes?.PriceVerification.HotelRooms)
                                    {
                                        roomResult.TotalSellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3);
                                        roomResult.CostPrice      = (double)item.RoomRate.TotalFare;
                                        //results.TotalCost += roomResult.TotalSellPrice; //Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3);
                                        roomResult.RoomIndex = item.RoomIndex;
                                        //results.Result.Add(roomResult);

                                        //update Rooms obj with new price
                                        Rooms.rooms.FirstOrDefault(r => r.RoomCode == item.RoomIndex.ToString()).costPrice = (double)item.RoomRate.TotalFare;
                                        Rooms.rooms.FirstOrDefault(r => r.RoomCode == item.RoomIndex.ToString()).SellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3);

                                        // update price in search db
                                        // update tbo new rooms prices
                                        SearchRoomResult Newroom = new SearchRoomResult();
                                        Newroom           = searchDB.SearchRoomResults.FirstOrDefault(room => room.sID == sid && room.RoomCode == item.RoomIndex.ToString());
                                        Newroom.costPrice = (double)item.RoomRate.TotalFare;
                                        Newroom.rateClass = item.RoomRate.RoomFare.ToString();
                                        Newroom.rateType  = item.RoomRate.RoomTax.ToString();
                                        Newroom.SellPrice = roomResult.TotalSellPrice;

                                        searchDB.SaveChanges();
                                    }
                                }
                                else
                                {
                                    Rooms.Status  = 0;
                                    Rooms.Message = "No Price Change";
                                }

                                Rooms.TBoRooms.Add(roomResult);
                            }
                        }
                        #endregion
                        LoggingHelper.WriteToFile("HotelRoomsController/GetRoomsOFHotel/", "SearchController" + "OutController" + sid, "RoomsResult", JsonConvert.SerializeObject(Rooms));

                        return(Ok(Rooms));
                    }
                }
                return(Ok("No Result Found"));
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("HotelRoomsController/Errors/", "SearchController" + "INController" + sid, "Exception", ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(BadRequest(ex.Message));
            }
        }
        public HotelSearchResponse GetDataBySession(SearchData searchData)
        {
            try
            {
                #region Hotelbeds pid 5
                HotelSearchResponse hotelsSearch = new HotelSearchResponse();
                HotelRepo           repo         = new HotelRepo();
                hotelsDBEntities    dbh          = new hotelsDBEntities();

                using (SearchDBEntities db = new SearchDBEntities())
                {
                    int duration     = Convert.ToInt32((searchData.DateTo - searchData.DateFrom).TotalDays);
                    var HotelResults = db.SearchHotelResults.Where(a => a.sID == searchData.sID).ToList();
                    var providers    = HotelResults.GroupBy(x => x.ProviderID).Select(x => x.FirstOrDefault()).Select(a => a.ProviderID.Value).ToList();

                    var hotelIds = HotelResults.Select(a => a.HotelCode).ToList();

                    //List<HotelDetails> HotelDataList = repo.GetHotelData(hotelIds, "4");///
                    List <HotelDetails> HotelDataList = new List <HotelDetails>();
                    hotelsSearch.CheckIn  = searchData.DateFrom;
                    hotelsSearch.CheckOut = searchData.DateTo;

                    using (var _TBOContext = new TBOContext())
                    {
                        List <Image> imagesdata = (from i in _TBOContext.HotelImages

                                                   //  join i in dbh.HotelsImages on h.hotelID equals i.HotelID
                                                   where hotelIds.Contains(i.HotelCode)
                                                   select new Image()
                        {
                            Thum = i.URL,
                            HotelId = i.HotelCode,
                            Category = "",
                            Url = i.URL
                        }).ToList();

                        //List<HotelsAmenity> imagesdata = (from i in _TBOContext.Facilities

                        //                              //  join i in dbh.HotelsImages on h.hotelID equals i.HotelID
                        //                          where hotelIds.Contains(i.HotelCode)
                        //                          select new Image()
                        //                          {


                        //                          }).ToList();

                        /*     List<HotelAmenity> amenties = (from h in dbh.hotels
                         *
                         *                                  join A in dbh.HotelsAmenities on h.hotelID equals A.hotelID
                         *                                  where hotelIds.Contains(h.hotelID)
                         *                                  select new HotelAmenity()
                         *                                  {
                         *                                      Amenity = A.amenitie,
                         *                                      HotelCode = h.hotelID,
                         *                                      status = A.Status
                         *                                  }).ToList();*/
                        var list = (from h in _TBOContext.HotelDetails

                                    where hotelIds.Contains(h.HotelCode)
                                    select new HotelDetails()
                        {
                            ID = h.HotelDetailId,
                            HotelId = h.HotelCode,
                            Address = h.Address,
                            Rating = h.HotelRating,
                            HotelName = h.HotelName,
                            Zipcode = h.PinCode,
                            //ProviderHotelId = h.h,
                            //  ProviderID = p.providerID,
                            Location = h.HotelLocation,
                            ShortDescription = h.Description,
                            LongDescriptin = h.Description,
                            City = h.CityName,
                            Country = h.CountryName,
                            //Lat = h.,
                            //Lng = h.,
                            Location1 = h.HotelLocation,
                            Location2 = h.HotelLocation,
                            Location3 = h.HotelLocation


                                        //{ images.Where(a => a.HotelId == h.hotelID).ToList() }
                        }).Distinct().ToList();

                        /*    foreach (var item in list)
                         *  {
                         *      List<HotelAmenity> ams = new List<HotelAmenity>();
                         *      var hotelAmenities = amenties.Where(a => a.HotelCode == item.HotelId).Distinct().ToList();
                         *      foreach (var am in hotelAmenities)
                         *      {
                         *
                         *          am.Amenity = am.Amenity.Replace(" ", String.Empty);
                         *          if (ams.FirstOrDefault(x => x.Amenity == am.Amenity) == null)
                         *          {
                         *              ams.Add(am);
                         *          }
                         *      }
                         *      item.hotelAmenities = ams;
                         *  }*/
                        var stars = new List <string> {
                            "OneStar", "TwoStar", "ThreeStar", "FourStar", "FiveStar"
                        };

                        list.ForEach(a => a.Images = imagesdata.Where(h => h.HotelId == a.HotelId).ToList());
                        HotelDataList.AddRange(list);
                        foreach (var item in HotelResults)
                        {
                            HotelSearchResult hotel     = new HotelSearchResult();
                            HotelDetails      hotelData = HotelDataList.Where(a => a.HotelId == item.HotelCode).FirstOrDefault();

                            if (hotelData != null)
                            {
                                hotel.providerHotelCode = item.ProviderHotelCode;
                                hotel.City      = hotelData.City;
                                hotel.hotelName = hotelData.HotelName;

                                hotel.Country    = hotelData.Country;
                                hotel.hotelStars = stars.IndexOf(hotelData.Rating);
                                var images = hotelData.Images.FirstOrDefault();
                                if (images != null)
                                {
                                    hotel.hotelThumb = images.Thum;
                                }
                                //***   hotel.hotelImages = hotelData.Images.Select(a => a.Url).ToList();
                                //**     hotel.Amenities = hotelData.hotelAmenities;
                                hotel.Lat                      = hotelData.Lat ?? "";
                                hotel.Lng                      = hotelData.Lng ?? "";
                                hotel.providerID               = item.ProviderID.Value.ToString();
                                hotel.hotelDescription         = hotelData.LongDescriptin;
                                hotel.shortcutHotelDescription = hotelData.ShortDescription;
                                hotel.ZipCode                  = hotelData.Zipcode ?? "";
                                hotel.Location                 = hotelData.Location;
                                hotel.Address                  = hotelData.Address;
                                hotel.providerHotelID          = item.ProviderHotelId;
                                hotel.hotelCode                = hotelData.HotelId;
                                hotel.sellCurrency             = searchData.Currency;

                                hotel.hotelRate      = item.SellPrice.Value / duration;
                                hotel.costPrice      = item.CostPrice.Value;
                                hotel.TotalSellPrice = item.SellPrice.Value;
                                hotel.rooms          = new List <RoomResult>();
                                hotelsSearch.HotelResult.Add(hotel);
                            }
                        }
                    }
                }
                hotelsSearch.Locations = hotelsSearch.HotelResult.GroupBy(x => x.Location).Select(x => x.FirstOrDefault()).Select(a => a.Location).ToList();

                return(hotelsSearch);

                #endregion
            }catch (Exception ex)
            {
                return(null);
            }
        }
Example #24
0
        public ConfirmationModel GetConfirmationData(string sid, string BN)
        {
            try
            {
                ConfirmationModel       confirmationModel = new ConfirmationModel();
                HotelBookingDBEntities  BookingDB         = new HotelBookingDBEntities();
                SearchDBEntities        searchDB          = new SearchDBEntities();
                hotelsDBEntities        hotelsDB          = new hotelsDBEntities();
                HotelBedEntity          HBDB = new HotelBedEntity();
                List <SearchRoomResult> searchRoomResults = new List <SearchRoomResult>();
                List <SearchRoomResult> SelectedRooms     = new List <SearchRoomResult>();

                var BookingData = BookingDB.HotelsBookings.FirstOrDefault(a => a.SessionId == sid && a.Booking_No == BN);
                var Paxes       = BookingDB.HotelBookingPaxs.Where(x => x.Booking_No == BN && x.SID == sid && x.PaxNo == 1);
                var SearchData  = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid);
                var RoomData    = searchDB.SearchRoomDatas.Where(a => a.sID == sid).ToList();
                var Rooms       = Paxes.Select(x => x.RoomRef.ToString()).ToList();
                foreach (var item in Rooms)
                {
                    var roomsearch = searchDB.SearchRoomResults.FirstOrDefault(r => r.sID == sid && r.HotelCode == BookingData.Hotel_ID && r.RoomCode == item);
                    SelectedRooms.Add(roomsearch);
                }
                if (BookingData.Provider_ID == "4")
                {
                    var hotelData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == BookingData.Hotel_ID);
                    var hotelDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == BookingData.Hotel_ID);
                    confirmationModel.hotel.HotelDescription = hotelDesc.Description1;
                    var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == BookingData.Hotel_ID).ToList();
                    confirmationModel.hotel.City       = hotelData.cityName;
                    confirmationModel.hotel.Country    = hotelData.countryName;
                    confirmationModel.hotel.hotelCode  = BookingData.Hotel_ID;
                    confirmationModel.hotel.hotelName  = hotelData.hotelName;
                    confirmationModel.hotel.Address    = hotelData.address;
                    confirmationModel.hotel.hotelStars = int.Parse(hotelData.rating);
                    if (hotelsImage.Count > 0)
                    {
                        confirmationModel.hotel.hotelThumb = hotelsImage[0].Thum;
                    }
                    confirmationModel.hotel.Location = hotelData.location;
                }
                else if (BookingData.Provider_ID == "5")
                {
                    using (TBOContext tBOContext = new TBOContext())
                    {
                        var hotelData   = tBOContext.HotelDetails.FirstOrDefault(a => a.HotelCode == BookingData.Hotel_ID);
                        var hotelDesc   = hotelData.Description;
                        var hotelsImage = tBOContext.HotelImages.Where(a => a.HotelCode == BookingData.Hotel_ID).ToList();
                        confirmationModel.hotel.City      = hotelData.CityName;
                        confirmationModel.hotel.Country   = hotelData.CountryName;
                        confirmationModel.hotel.hotelCode = BookingData.Hotel_ID;
                        confirmationModel.hotel.hotelName = hotelData.HotelName;
                        confirmationModel.hotel.Address   = hotelData.Address;
                        //confirmationModel.hotel.hotelStars = int.Parse(hotelData.rating);
                        if (hotelsImage.Count > 0)
                        {
                            confirmationModel.hotel.hotelThumb = hotelsImage[0].URL;
                        }
                        confirmationModel.hotel.Location = hotelData.HotelLocation;
                    }
                }
                confirmationModel.hotel.CheckIn  = SearchData.dateFrom.Value.ToString();
                confirmationModel.BookingTime    = BookingData.Booking_Time.Value;
                confirmationModel.hotel.CheckOut = SearchData.dateTo.Value.ToString();
                confirmationModel.hotel.Paxes    = BookingData.Pax_Qty.Value;
                confirmationModel.hotel.Rooms    = BookingData.Rooms_Qty.Value;
                var PConfirm = BookingDB.BookingConfirmationDatas.FirstOrDefault(a => a.SessionID == sid && a.BookingNum == BN);
                if (PConfirm != null)
                {
                    confirmationModel.ProviderConfirmation = PConfirm.Reference;
                }
                confirmationModel.hotel.sellCurrency   = BookingData.Sell_Currency;
                confirmationModel.hotel.TotalSellPrice = BookingData.Sell_Price.Value;
                confirmationModel.bookingNum           = BookingData.Booking_No;
                confirmationModel.mail   = BookingData.Booking_Email;
                confirmationModel.status = BookingData.Booking_Status;
                CurrencyRepo repo         = new CurrencyRepo();
                double       ExcahngeRate = repo.GetEveryDayCurrenciesConversion(SearchData.currency, BookingData.Sell_Currency, sid, DateTime.Now).Result.Customer_Sell_Rate;
                foreach (var item in Paxes)
                {
                    ConfirmedTraveller traveller = new ConfirmedTraveller();
                    traveller.FirstName = item.First_name;
                    traveller.LastName  = item.Last_Name;
                    traveller.Title     = item.Salutations;
                    var roomResult = SelectedRooms.FirstOrDefault(x => x.RoomCode == item.RoomRef.ToString());
                    searchRoomResults.Add(roomResult);
                    var specRoom1 = SelectedRooms.FirstOrDefault(s => s.RoomCode == item.RoomRef.ToString());
                    if (specRoom1.Childern != 0)
                    {
                        var specRoom = SelectedRooms.FirstOrDefault(s => s.RoomCode == item.RoomRef.ToString());

                        var childern = RoomData.Where(a => a.adultNo == specRoom.Adults && a.childernNo == specRoom.Childern).ToList();
                        if (childern.Count == 1)
                        {
                            var childages = childern[0].childAge.Split('-');
                            traveller.ChildAge.AddRange(childages.ToList());
                        }
                        else
                        {
                            var child     = RoomData.FirstOrDefault(a => a.adultNo == specRoom.Adults && a.childernNo == specRoom.Childern && a.roomNo == item.RoomRef);
                            var childages = child.childAge.Split('-');
                            traveller.ChildAge.AddRange(childages.ToList());
                        }
                    }
                    confirmationModel.travellers.Add(traveller);
                }
                foreach (var item in searchRoomResults)
                {
                    ConfirmedRoom confirmedRoom = new ConfirmedRoom();
                    if (BookingData.Provider_ID == "5")
                    {
                        var roomNo = int.Parse(item.RoomCode);
                        confirmedRoom.Adult = RoomData.FirstOrDefault(ad => ad.roomNo == roomNo).adultNo ?? default(int);
                        confirmedRoom.Child = RoomData.FirstOrDefault(ad => ad.roomNo == roomNo).childernNo ?? default(int);
                    }
                    else
                    {
                        confirmedRoom.Adult = item.Adults.Value;
                        confirmedRoom.Child = item.Childern.Value;
                    }
                    //var  RoomsImage = hotelsImage.Where(a => a.Category.ToLower() == "hotel rooms").ToList();
                    //***************
                    //if (RoomsImage.Count > 0)
                    //{
                    //confirmedRoom.Image = RoomsImage[0].URL;
                    //}
                    confirmedRoom.IsRefundable = item.IsRefundable.Value;
                    confirmedRoom.Paxs         = item.PaxSQty.Value;
                    confirmedRoom.RoomCode     = item.RoomCode;
                    confirmedRoom.RoomMeal     = item.meal;
                    confirmedRoom.RoomType     = item.RoomName;
                    confirmedRoom.RateType     = item.rateType;
                    List <CancelPolicy> cancelPolicies = new List <CancelPolicy>();
                    using (HotelBookingDBEntities db = new HotelBookingDBEntities())
                    {
                        cancelPolicies = db.CancelPolicies.Where(a => a.Sid == sid && a.HotelCode == BookingData.Hotel_ID && a.RoomCode.ToString() == item.RoomCode && a.ProviderID == BookingData.Provider_ID).ToList();
                    }

                    if (cancelPolicies.Count > 0)
                    {
                        foreach (var p in cancelPolicies)
                        {
                            CancellationRule cancellation = new CancellationRule();
                            cancellation.FromDate = p.FromDate.ToString();
                            if (BookingData.Sell_Currency == p.Currency)
                            {
                                cancellation.Price = (double)p.SellPrice.Value;
                            }
                            else
                            {
                                cancellation.Price = (double)p.SellPrice.Value * ExcahngeRate;
                            }

                            cancellation.CanellationRuleText = cancellation.Price + " " + BookingData.Sell_Currency + " From " + p.FromDate.Value.ToString("MMMM dd, yyyy");
                            confirmedRoom.cancellations.Add(cancellation);
                        }
                    }
                    confirmationModel.rooms.Add(confirmedRoom);
                }
                var ConfData = HBDB.BookingConfirmations.FirstOrDefault(a => a.BookingNum == BN);
                if (ConfData != null)
                {
                    confirmationModel.PayableNote = "Payable through  " + ConfData.supplier + ", acting as agent for the service operating company, details of which can be provided upon request. VAT: " + ConfData.Remark + " Reference:" + ConfData.Reference;
                }
                return(confirmationModel);
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("ConfirmationController/ERROR/", "ConfirmationDAL" + "INDAL" + sid, "ConfirmData", "Sid is " + sid + " and Booking is" + BN + ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(null);
            }
        }
        public static RequiredBookingData GetRoomsData(string sid, string hotel, string Pid, string rooms)
        {
            try
            {
                SearchDBEntities searchDB = new SearchDBEntities();

                RequiredBookingData requiredBooking = new RequiredBookingData();
                var data   = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == sid);
                var HRooms = searchDB.SearchRoomResults.Where(a => a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList();
                requiredBooking.Currency = data?.currency;
                requiredBooking.City     = data?.cityName;
                var RoomsCode = rooms.Split('-');
                foreach (var item in RoomsCode)
                {
                    var roomdata = HRooms.FirstOrDefault(a => a.RoomCode == item);

                    requiredBooking.rooms.Add(roomdata);
                }
                if (Pid == "4")
                {
                    hotelsDBEntities hotelsDB = new hotelsDBEntities();
                    var HData   = hotelsDB.hotels.FirstOrDefault(d => d.hotelID == hotel);
                    var HDesc   = hotelsDB.HotelsDescriptions.FirstOrDefault(x => x.hotelID == hotel);
                    var Hsearch = searchDB.SearchHotelResults.FirstOrDefault(x => x.HotelCode == hotel && x.sID == sid && x.ProviderID.ToString() == Pid);
                    var Himage  = hotelsDB.HotelsImages.FirstOrDefault(v => v.HotelID == hotel);
                    requiredBooking.HotelName       = HData?.hotelName;
                    requiredBooking.Hotelstar       = int.Parse(HData?.rating);
                    requiredBooking.address         = HData?.address;
                    requiredBooking.CheckIn         = data?.dateFrom.Value.ToString();
                    requiredBooking.Checkout        = data?.dateTo.Value.ToString();
                    requiredBooking.City            = HData?.cityName;
                    requiredBooking.location        = HData?.location;
                    requiredBooking.HotelDesc       = HDesc?.Description1;
                    requiredBooking.providerHotelID = Hsearch?.ProviderHotelId;
                    requiredBooking.providerID      = Pid;
                    //MG
                    requiredBooking.Lat = HData?.Lat;
                    requiredBooking.Lng = HData?.Lng;
                    if (Himage != null)
                    {
                        requiredBooking.hotelThumb = Himage.Thum;
                    }
                }
                else if (Pid == "5")
                {
                    TBOContext hotelsDB = new TBOContext();
                    var        HData    = hotelsDB.HotelDetails.FirstOrDefault(d => d.HotelCode == hotel);
                    var        Hsearch  = searchDB.SearchHotelResults.FirstOrDefault(x => x.HotelCode == hotel && x.sID == sid && x.ProviderID.ToString() == Pid);
                    var        Himage   = hotelsDB.HotelImages.FirstOrDefault(v => v.HotelCode == hotel);
                    Enum.TryParse(HData.HotelRating, out HotelStars stars);
                    requiredBooking.HotelName       = HData?.HotelName;
                    requiredBooking.Hotelstar       = (int)stars + 1;
                    requiredBooking.address         = HData?.Address;
                    requiredBooking.CheckIn         = data?.dateFrom.Value.ToString();
                    requiredBooking.Checkout        = data?.dateTo.Value.ToString();
                    requiredBooking.City            = HData?.CityName;
                    requiredBooking.location        = HData?.HotelLocation;
                    requiredBooking.HotelDesc       = HData.Description;
                    requiredBooking.providerHotelID = HData?.HotelCode;
                    requiredBooking.providerID      = Pid;
                    //MG
                    requiredBooking.Lat = HData?.HotelLocation;
                    requiredBooking.Lng = HData?.Map;
                    if (Himage != null)
                    {
                        requiredBooking.hotelThumb = Himage.URL;
                    }

                    //instead of call pricing api
                    //RoomResult roomResult = new RoomResult();
                    //using (HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities())
                    //{
                    //    foreach (var item in requiredBooking.rooms)
                    //    {
                    //        var cancellations = hotelBookingDB.CancelPolicies.Where(x => x.HotelCode == hotel && x.Sid == sid && x.ProviderID.ToString() == Pid /*&& x.RoomCode ==int.Parse(item.RoomCode)*/).ToList();

                    //        //roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms;
                    //        //handel cancel policy
                    //        foreach (var cancel in cancellations)
                    //        {
                    //            CancellationRule cancellation = new CancellationRule();
                    //            //DateTime dateFrom = Convert.ToDateTime(cancel.FromDate);
                    //            cancellation.FromDate = cancel.FromDate.ToString();// dateFrom.ToString("MMMM dd, yyyy");
                    //            cancellation.ToDate = cancel.ToDate.ToString();
                    //            cancellation.Cost = (double)cancel.Cost;
                    //            cancellation.ChargeType = cancel.ChargeType.ToString();
                    //            cancellation.Curency = cancel.Currency;
                    //            roomResult.cancellationRules.Add(cancellation);
                    //        }
                    //    }
                    //    requiredBooking.TBoRooms.Add(roomResult);
                    //}
                }

                return(requiredBooking);


                //   requiredBooking.rooms = searchDB.SearchRoomResults.Where(a => RoomsCode.Contains(a.RoomCode) && a.sID == sid && a.HotelCode == hotel && a.ProviderId.ToString() == Pid).ToList();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static HotelSearchRoom GetRoomsByHotelIDAndProvide(string Sid, string pid, string Hid)
        {
            try
            {
                SearchDBEntities  searchDB    = new SearchDBEntities();
                List <RoomResult> roomResults = new List <RoomResult>();
                var RoomsRuslt = searchDB.SearchRoomResults.Where(a => a.HotelCode == Hid && a.sID == Sid && a.ProviderId.ToString() == pid).ToList();
                var Dur        = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == Sid).duration;

                if (pid == "5")
                {
                    TBO.DAL.Models.Context.TBOContext context = new TBO.DAL.Models.Context.TBOContext();

                    var           HImages = context.HotelImages.Where(a => a.HotelCode == Hid).ToList();
                    List <string> images  = HImages.Select(x => x.URL).ToList();

                    var             hotelSearchData = context.HotelDetails.FirstOrDefault(a => a.HotelCode == Hid);
                    var             facilties       = context.Facilities.Where(ff => ff.HotelCode == Hid).ToList();
                    HotelSearchRoom hotelSearchRoom = new HotelSearchRoom();
                    //facilties
                    foreach (var item in facilties)
                    {
                        hotelSearchRoom.Amenities.Add(new HotelAmenity
                        {
                            Amenity   = item.FacilityVal,
                            HotelCode = item.HotelCode
                        });
                    }
                    hotelSearchRoom.providerHotelID = hotelSearchData.HotelCode;
                    hotelSearchRoom.hotelCode       = hotelSearchData.HotelCode;
                    hotelSearchRoom.Address         = hotelSearchData.Address;
                    hotelSearchRoom.Lng             = hotelSearchData.Map;
                    //hotelSearchRoom.Lat = hotelSearchData.Lat;

                    //hotelSearchRoom.hotelStars = int.Parse(hotelSearchData.HotelRating);//
                    hotelSearchRoom.hotelName  = hotelSearchData.HotelName;
                    hotelSearchRoom.providerID = "5";
                    hotelSearchRoom.Location   = hotelSearchData.HotelLocation;

                    hotelSearchRoom.hotelDescription = hotelSearchData.Description;
                    //hotelSearchRoom.shortcutHotelDescription = hotelSearchDesc.Description2;
                    hotelSearchRoom.City        = hotelSearchData.CityName;
                    hotelSearchRoom.Country     = hotelSearchData.CountryName;
                    hotelSearchRoom.hotelImages = images;

                    #region instead call available hotel room api to get tbo rooms
                    //if (RoomsRuslt.Count > 0)
                    //{
                    //    foreach (var item in RoomsRuslt)
                    //    {
                    //        RoomResult result = new RoomResult();
                    //        result.CostPrice = item.costPrice.Value;
                    //        result.DiscountId = item.DiscountId.Value;
                    //        result.DiscountValue = item.DiscountVal.Value;
                    //        //result.Images = roomsImages.Select(a => a.URL).ToList();
                    //        //   result.IsRefundable=item.
                    //        result.MarkupId = item.MarkupId.Value;
                    //        result.MarkupValue = item.MarkupVal.Value;
                    //        result.Paxs = item.PaxSQty.Value;
                    //        result.RatePerNight = (item.SellPrice / Dur).Value;
                    //        result.RoomCode = item.roomType;
                    //        result.RoomIndex = int.Parse(item.RoomCode);
                    //        result.RoomMeal = item.meal;
                    //        result.RoomReference = item.RoomReference;
                    //        result.RoomType = item.RoomName;
                    //        result.TotalSellPrice = item.SellPrice.Value;
                    //        result.Adult = item.Adults.Value;
                    //        result.Child = item.Childern.Value;
                    //        result.IsRefundable = item.IsRefundable.Value;

                    //        //var repeatedRoom = roomResults.Where(x => x.RoomReference == item.RoomReference).ToList();
                    //        //if (repeatedRoom.Count < 1)
                    //            roomResults.Add(result);
                    //    }

                    //    var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList();
                    //    for (int i = 0; i < roomsDetails.Count; i++)

                    //    {
                    //        SearchRoomData roomresult = new SearchRoomData();
                    //        roomresult = null;
                    //        var resultsR = roomResults.ToList();// Where(x => x.Adult == roomsDetails[i].adultNo.Value && x.Child == roomsDetails[i].childernNo.Value).ToList();
                    //        SeparatedRoom srts = new SeparatedRoom();
                    //        srts.RoomResults.AddRange(resultsR);
                    //        hotelSearchRoom.rooms.Add(srts);

                    //    }
                    //}
                    #endregion
                    return(hotelSearchRoom);
                }
                else
                {
                    hotelsDBEntities hotelsDB = new hotelsDBEntities();
                    var HImages     = hotelsDB.HotelsImages.Where(a => a.HotelID == Hid).ToList();
                    var roomsImages = HImages.Where(a => a.Category.ToLower() == "hotel rooms");

                    if (RoomsRuslt.Count > 0)
                    {
                        foreach (var item in RoomsRuslt)
                        {
                            RoomResult result = new RoomResult();
                            result.CostPrice     = item.costPrice.Value;
                            result.DiscountId    = item.DiscountId.Value;
                            result.DiscountValue = item.DiscountVal.Value;
                            result.Images        = roomsImages.Select(a => a.URL).ToList();
                            //   result.IsRefundable=item.
                            result.MarkupId       = item.MarkupId.Value;
                            result.MarkupValue    = item.MarkupVal.Value;
                            result.Paxs           = item.PaxSQty.Value;
                            result.RatePerNight   = (item.SellPrice / Dur).Value;
                            result.RoomCode       = item.roomType;
                            result.RoomIndex      = int.Parse(item.RoomCode);
                            result.RoomMeal       = item.meal;
                            result.RoomReference  = item.RoomReference;
                            result.RoomType       = item.RoomName;
                            result.TotalSellPrice = item.SellPrice.Value;
                            result.Adult          = item.Adults.Value;
                            result.Child          = item.Childern.Value;
                            result.IsRefundable   = item.IsRefundable.Value;

                            var repeatedRoom = roomResults.Where(x => x.RoomReference == item.RoomReference).ToList();
                            if (repeatedRoom.Count < 1)
                            {
                                roomResults.Add(result);
                            }
                        }
                        //// get hotel

                        HotelSearchRoom hotelSearchRoom = new HotelSearchRoom();

                        List <string> images = HImages.Select(x => x.URL).ToList();


                        List <HotelAmenity> amenties = (from A in hotelsDB.HotelsAmenities
                                                        where A.hotelID == Hid
                                                        select new HotelAmenity()
                        {
                            Amenity = A.amenitie,
                            HotelCode = A.hotelID,
                            status = A.Status
                        }).ToList();


                        var hotelSearchData = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == Hid);
                        var hotelSearchpro  = hotelsDB.hotelsProviders.FirstOrDefault(a => a.hotelID == hotelSearchData.ID.ToString() && a.providerID == pid);
                        var hotelSearchDesc = hotelsDB.HotelsDescriptions.FirstOrDefault(a => a.hotelID == Hid);

                        hotelSearchRoom.providerHotelID = hotelSearchpro.providerHotelID;
                        hotelSearchRoom.hotelCode       = hotelSearchData.hotelID;
                        hotelSearchRoom.Address         = hotelSearchData.address;
                        hotelSearchRoom.Lng             = hotelSearchData.Lng;
                        hotelSearchRoom.Lat             = hotelSearchData.Lat;

                        hotelSearchRoom.hotelStars = int.Parse(hotelSearchData.rating);//
                        hotelSearchRoom.hotelName  = hotelSearchData.hotelName;
                        hotelSearchRoom.providerID = hotelSearchpro.providerID;
                        hotelSearchRoom.Location   = hotelSearchData.location;

                        hotelSearchRoom.hotelDescription         = hotelSearchDesc.Description1;
                        hotelSearchRoom.shortcutHotelDescription = hotelSearchDesc.Description2;
                        hotelSearchRoom.City    = hotelSearchData.cityName;
                        hotelSearchRoom.Country = hotelSearchData.countryName;

                        var hotelAmenities = amenties.Where(a => a.HotelCode == Hid).Distinct().ToList();
                        foreach (var am in hotelAmenities)
                        {
                            am.Amenity = am.Amenity.Replace("  ", String.Empty);
                            if (hotelSearchRoom.Amenities.FirstOrDefault(x => x.Amenity == am.Amenity) == null)
                            {
                                hotelSearchRoom.Amenities.Add(am);
                            }
                        }

                        //  hotelSearchRoom.Amenities = ams;

                        hotelSearchRoom.hotelImages = images;
                        // searchDB to know list of each rooms
                        if (pid == "4")
                        {
                            /*
                             * List<RoomForSearch> searchRooms = new List<RoomForSearch>();
                             * var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList();
                             * foreach (var item in roomsDetails)
                             * {
                             *  SearchRoomData roomresult = new SearchRoomData();
                             *  roomresult = null;
                             *  var results = roomsDetails.Where(x => x.adultNo == item.adultNo && x.childernNo == item.childernNo).ToList();
                             *  foreach (var r in searchRooms)
                             *  {
                             *      if (roomresult  == null )
                             *      {
                             *          roomresult = r.rooms.FirstOrDefault(a => a.adultNo == item.adultNo && a.childernNo == item.childernNo);
                             *      }
                             *  }
                             *
                             *  if (roomresult == null)
                             *  {
                             *
                             *          RoomForSearch roomFor = new RoomForSearch();
                             *          roomFor.num = results.Count;
                             *          roomFor.rooms = results;
                             *          searchRooms.Add(roomFor);
                             *
                             *  }
                             *  //
                             *  //var ReqiredRooms=  roomResults.Where(x => x.Adult == item.adultNo && x.Child == item.childernNo).ToList();
                             *  //SeparatedRoom sr = new SeparatedRoom();
                             *  //  sr.RoomResults.AddRange(ReqiredRooms);
                             *  //   hotelSearchRoom.rooms.Add(sr);
                             *
                             * }
                             * foreach (var item in searchRooms)
                             * {
                             *  var ReqiredRooms = roomResults.Where(x => x.Adult == item.rooms[0].adultNo && x.Child == item.rooms[0].childernNo).ToList();
                             *  if (item.num == 1)
                             *  {
                             *      SeparatedRoom sr = new SeparatedRoom();
                             *      sr.RoomResults.AddRange(ReqiredRooms);
                             *      hotelSearchRoom.rooms.Add(sr);
                             *  }
                             *  else
                             *  {
                             *      int roomNum = ReqiredRooms.Count / item.num;
                             *      int skipNum = 0;
                             *      for (int i = 0; i < item.num; i++)
                             *      {
                             *          SeparatedRoom sr = new SeparatedRoom();
                             *          List<RoomResult> roomResultsData = new List<RoomResult>();
                             *          //        var roomsReq = ReqiredRooms.Skip(skipNum).ToList();
                             *          for (int j = skipNum; j < skipNum + roomNum; j++)
                             *          {
                             *              roomResultsData.Add(ReqiredRooms[j]);
                             *
                             *
                             *          }
                             *          // sr.RoomResults.AddRange(roomsReq.Take(roomNum).ToList());
                             *          sr.RoomResults.AddRange(roomResultsData);
                             *          skipNum = roomNum * (i + 1);
                             *          hotelSearchRoom.rooms.Add(sr);
                             *      }
                             *  }
                             * }*/
                            var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList();
                            for (int i = 0; i < roomsDetails.Count; i++)

                            {
                                SearchRoomData roomresult = new SearchRoomData();
                                roomresult = null;
                                var           resultsR = roomResults.Where(x => x.Adult == roomsDetails[i].adultNo.Value && x.Child == roomsDetails[i].childernNo.Value).ToList();
                                SeparatedRoom srts     = new SeparatedRoom();
                                srts.RoomResults.AddRange(resultsR);
                                hotelSearchRoom.rooms.Add(srts);
                            }
                        }
                        if (pid == "2")
                        {
                            var roomsDetails = searchDB.SearchRoomDatas.Where(a => a.sID == Sid).ToList();
                            for (int i = 0; i < roomsDetails.Count; i++)

                            {
                                SearchRoomData roomresult = new SearchRoomData();
                                roomresult = null;
                                var           resultsR = roomResults.Where(x => x.RoomCode == (i + 1).ToString()).ToList();
                                SeparatedRoom srts     = new SeparatedRoom();
                                srts.RoomResults.AddRange(resultsR);
                                hotelSearchRoom.rooms.Add(srts);
                            }
                        }
                        //  hotelSearchRoom.rooms= roomResults;
                        var minRoom = roomResults.Where(a => a.RatePerNight == roomResults.Min(x => x.RatePerNight)).FirstOrDefault();
                        if (minRoom != null)
                        {
                            hotelSearchRoom.hotelRate      = minRoom.RatePerNight;
                            hotelSearchRoom.costPrice      = minRoom.CostPrice;
                            hotelSearchRoom.TotalSellPrice = minRoom.TotalSellPrice;
                            hotelSearchRoom.MarkupId       = minRoom.MarkupId;
                            hotelSearchRoom.MarkupValue    = minRoom.MarkupValue;
                            hotelSearchRoom.DiscountId     = minRoom.DiscountId;
                            hotelSearchRoom.DiscountValue  = minRoom.DiscountValue;
                        }

                        return(hotelSearchRoom);
                    }
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #27
0
        public UpcomingHistory GetUpcomingAndHistoryData(string mail)
        {
            try
            {
                UpcomingHistory upcomingHistory = new UpcomingHistory();

                HotelBookingDBEntities BookingDB = new HotelBookingDBEntities();
                SearchDBEntities       searchDB  = new SearchDBEntities();
                hotelsDBEntities       hotelsDB  = new hotelsDBEntities();
                var BookingData = BookingDB.HotelsBookings.Where(a => a.Booking_Email == mail).ToList();
                foreach (var item in BookingData)
                {
                    ConfirmationModel BookingModel = new ConfirmationModel();
                    var SearchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == item.SessionId);
                    if (SearchData.dateFrom >= DateTime.Now)
                    {
                        var hotelData   = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == item.Hotel_ID);
                        var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == item.Hotel_ID).ToList();
                        BookingModel.hotel.CheckIn        = SearchData.dateFrom.Value.ToString("dd-MM-yyyy");
                        BookingModel.hotel.CheckOut       = SearchData.dateTo.Value.ToString("dd-MM-yyyy");
                        BookingModel.hotel.City           = hotelData.cityName;
                        BookingModel.hotel.Country        = hotelData.countryName;
                        BookingModel.hotel.hotelCode      = item.Hotel_ID;
                        BookingModel.hotel.hotelName      = hotelData.hotelName;
                        BookingModel.hotel.hotelStars     = int.Parse(hotelData.rating) > 0 ? int.Parse(hotelData.rating) - 558 : 0;
                        BookingModel.hotel.hotelThumb     = hotelsImage[0].Thum;
                        BookingModel.hotel.Location       = hotelData.location;
                        BookingModel.hotel.Paxes          = item.Pax_Qty.Value;
                        BookingModel.hotel.Rooms          = item.Rooms_Qty.Value;
                        BookingModel.hotel.sellCurrency   = item.Sell_Currency;
                        BookingModel.hotel.TotalSellPrice = item.Sell_Price.Value;
                        BookingModel.bookingNum           = item.Booking_No;
                        BookingModel.mail   = item.Booking_Email;
                        BookingModel.status = item.Booking_Status;
                        upcomingHistory.Upcoming.Add(BookingModel);
                    }
                    else
                    {
                        var hotelData   = hotelsDB.hotels.FirstOrDefault(a => a.hotelID == item.Hotel_ID);
                        var hotelsImage = hotelsDB.HotelsImages.Where(a => a.HotelID == item.Hotel_ID).ToList();
                        BookingModel.hotel.CheckIn        = SearchData.dateFrom.Value.ToString("dd-MM-yyyy");
                        BookingModel.hotel.CheckOut       = SearchData.dateTo.Value.ToString("dd-MM-yyyy");
                        BookingModel.hotel.City           = hotelData.cityName;
                        BookingModel.hotel.Country        = hotelData.countryName;
                        BookingModel.hotel.hotelCode      = item.Hotel_ID;
                        BookingModel.hotel.hotelName      = hotelData.hotelName;
                        BookingModel.hotel.hotelStars     = int.Parse(hotelData.rating) > 0 ? int.Parse(hotelData.rating) - 558 : 0;
                        BookingModel.hotel.hotelThumb     = hotelsImage[0].Thum;
                        BookingModel.hotel.Location       = hotelData.location;
                        BookingModel.hotel.Paxes          = item.Pax_Qty.Value;
                        BookingModel.hotel.Rooms          = item.Rooms_Qty.Value;
                        BookingModel.hotel.sellCurrency   = item.Sell_Currency;
                        BookingModel.hotel.TotalSellPrice = item.Sell_Price.Value;
                        BookingModel.bookingNum           = item.Booking_No;
                        BookingModel.mail   = item.Booking_Email;
                        BookingModel.status = item.Booking_Status;
                        upcomingHistory.Histories.Add(BookingModel);
                    }
                }


                return(upcomingHistory);
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("UpcomingAndHistoryController/ERRor/", "UpcomingAndHistory" + "INController" + mail, "InComingData", ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(null);
            }
        }
        public static void SaveBookingResult(CheckOutData BookingResults, string BNNum)
        {
            List <int> rooms = new List <int>();

            try
            {
                var BaseCur = ConfigurationSettings.AppSettings["BaseCur"];

                foreach (var item in BookingResults.Travellers)
                {
                    if (!rooms.Contains(item.roomNo))
                    {
                        rooms.Add(item.roomNo);
                    }
                }
                using (DBConnection db = new DBConnection())
                {
                    db.DB_OpenConnection("HB");
                    SearchDBEntities searchDB = new SearchDBEntities();

                    #region old code save use SP
                    //  hotel rates
                    //DataTable dt = new DataTable();
                    //DataColumn SessionId = new DataColumn("SessionId");
                    //DataColumn Booking_No = new DataColumn("Booking_No");
                    //DataColumn City = new DataColumn("City");
                    //DataColumn HotelId = new DataColumn("HotelId");
                    //DataColumn HotelPId = new DataColumn("HotelPId");
                    //DataColumn Rooms_Qty = new DataColumn("Rooms_Qty");
                    //DataColumn Pax_Qty = new DataColumn("Pax_Qty");
                    //DataColumn Booking_Status = new DataColumn("Booking_Status");
                    //DataColumn Customer_ID = new DataColumn("Customer_ID");
                    //DataColumn Provider_ID = new DataColumn("Provider_ID");
                    //DataColumn Sell_Price = new DataColumn("Sell_Price");
                    //DataColumn Sell_Currency = new DataColumn("Sell_Currency");
                    //DataColumn Booking_Phone_Code = new DataColumn("Booking_Phone_Code");
                    //DataColumn Booking_Phone = new DataColumn("Booking_Phone");
                    //DataColumn Booking_Email = new DataColumn("Booking_Email");
                    //DataColumn Pax_Name = new DataColumn("Pax_Name");
                    //DataColumn Foreign_Amount = new DataColumn("Foreign_Amount");
                    //DataColumn Total_Cost_main = new DataColumn("Total_Cost_main");
                    //DataColumn Bookingsrc = new DataColumn("src");
                    //Rooms_Qty.DataType = typeof(int);
                    //Pax_Qty.DataType = typeof(int);

                    //Sell_Price.DataType = typeof(double);
                    //Foreign_Amount.DataType = typeof(double);
                    //Total_Cost_main.DataType = typeof(int);


                    //dt.Columns.Add(SessionId);
                    //dt.Columns.Add(Booking_No);
                    //dt.Columns.Add(City);
                    //dt.Columns.Add(HotelId);
                    //dt.Columns.Add(HotelPId);
                    //dt.Columns.Add(Rooms_Qty);
                    //dt.Columns.Add(Pax_Qty);
                    //dt.Columns.Add(Booking_Status);
                    //dt.Columns.Add(Customer_ID);
                    //dt.Columns.Add(Provider_ID);
                    //dt.Columns.Add(Sell_Price);
                    //dt.Columns.Add(Sell_Currency);
                    //dt.Columns.Add(Booking_Phone_Code);
                    //dt.Columns.Add(Booking_Phone);
                    //dt.Columns.Add(Booking_Email);
                    //dt.Columns.Add(Pax_Name);
                    //dt.Columns.Add(Foreign_Amount);
                    //dt.Columns.Add(Total_Cost_main);
                    //dt.Columns.Add(Bookingsrc);
                    //// room result

                    //DataTable dr = new DataTable();
                    //DataColumn rsID = new DataColumn("sID");
                    //DataColumn rProviderID = new DataColumn("ProviderId");

                    //DataColumn rBooking_No = new DataColumn("Booking_No");
                    //DataColumn rRoomNo = new DataColumn("RoomNo");

                    //DataColumn rRoomCat = new DataColumn("RoomCat");
                    //DataColumn rRoomType = new DataColumn("RoomType");
                    //DataColumn rMeal = new DataColumn("Meal");
                    //DataColumn rPaxesQty = new DataColumn("PaxesQty");
                    //DataColumn rRefund = new DataColumn("Refund");


                    //rProviderID.DataType = typeof(int);
                    //rRoomNo.DataType = typeof(int);

                    //rPaxesQty.DataType = typeof(int);


                    //dr.Columns.Add(rsID);
                    //dr.Columns.Add(rProviderID);
                    //dr.Columns.Add(rBooking_No);
                    //dr.Columns.Add(rRoomNo);

                    //dr.Columns.Add(rRoomCat);
                    //dr.Columns.Add(rRoomType);
                    //dr.Columns.Add(rMeal);
                    //dr.Columns.Add(rPaxesQty);
                    //dr.Columns.Add(rRefund);

                    //DataTable dn = new DataTable();
                    //DataColumn nBooking_No = new DataColumn("Booking_No");
                    //DataColumn nNdate = new DataColumn("Ndate");

                    //DataColumn nrate = new DataColumn("rate");
                    //DataColumn nCurrency = new DataColumn("Currency");

                    //DataColumn nRoomNo = new DataColumn("Room_No");
                    //DataColumn nExchangeRate = new DataColumn("ExchangeRate");



                    //nNdate.DataType = typeof(DateTime);
                    //nrate.DataType = typeof(double);
                    //nRoomNo.DataType = typeof(int);
                    //nExchangeRate.DataType = typeof(double);


                    //dn.Columns.Add(nBooking_No);
                    //dn.Columns.Add(nNdate);
                    //dn.Columns.Add(nrate);
                    //dn.Columns.Add(nCurrency);

                    //dn.Columns.Add(nRoomNo);
                    //dn.Columns.Add(nExchangeRate);

                    //DataTable dp = new DataTable();
                    //DataColumn pBooking_No = new DataColumn("Booking_No");
                    //DataColumn psID = new DataColumn("sID");

                    //DataColumn pRoomNo = new DataColumn("RoomNo");
                    //DataColumn ppaxtype = new DataColumn("paxtype");

                    //DataColumn pFirstName = new DataColumn("FirstName");
                    //DataColumn pLastName = new DataColumn("LastName");
                    //DataColumn saluation = new DataColumn("saluation");

                    //DataColumn pBD = new DataColumn("BD");
                    //DataColumn pNationality = new DataColumn("Nationality");

                    //DataColumn pphone = new DataColumn("phone");
                    //DataColumn pphoneCode = new DataColumn("phoneCode");
                    //DataColumn PPaxNo = new DataColumn("PaxNo");
                    //DataColumn PRoomRef = new DataColumn("Ref");


                    //pRoomNo.DataType = typeof(int);

                    //PPaxNo.DataType = typeof(int);
                    //PRoomRef.DataType = typeof(int);
                    //dp.Columns.Add(psID);
                    //dp.Columns.Add(pBooking_No);
                    //dp.Columns.Add(pRoomNo);
                    //dp.Columns.Add(ppaxtype);
                    //dp.Columns.Add(pFirstName);
                    //dp.Columns.Add(pLastName);
                    //dp.Columns.Add(saluation);
                    //dp.Columns.Add(pBD);
                    //dp.Columns.Add(pNationality);
                    //dp.Columns.Add(pphone);
                    //dp.Columns.Add(pphoneCode);
                    //dp.Columns.Add(PPaxNo);
                    //dp.Columns.Add(PRoomRef);



                    //DataRow DtHr = dt.NewRow();
                    //DtHr["SessionId"] = BookingResults.Sid;
                    //DtHr["Booking_No"] = BNNum;//////////*********************
                    //DtHr["City"] = BookingResults.CityName;
                    //DtHr["HotelId"] = BookingResults.HotelID;
                    //DtHr["HotelPId"] = BookingResults.ProviderHotelID;
                    //DtHr["Rooms_Qty"] = int.Parse(BookingResults.RoomQty);
                    //DtHr["Pax_Qty"] = BookingResults.Travellers.Count;
                    //DtHr["Booking_Status"] = "NewBooking";
                    #endregion

                    HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities();
                    var traveller = BookingResults.Travellers.FirstOrDefault(a => a.Main == true);

                    var customer = hotelBookingDB.Customers.FirstOrDefault(a => a.Email == BookingResults.Mail);
                    var CusID    = 0;
                    if (customer != null)
                    {
                        //DtHr["Customer_ID"] = customer.ID;
                        CusID = customer.ID;
                    }
                    else
                    {
                        Customer cus = new Customer();
                        cus.Country       = traveller.nationality;
                        cus.Date_Of_Birth = traveller.DateOfBirth;
                        cus.Email         = BookingResults.Mail;
                        cus.First_Name    = traveller.firstName;
                        cus.Last_Name     = traveller.lastName;
                        cus.Phone         = traveller.phone;
                        cus.Phone_Code    = traveller.phoneCode;
                        cus.Salutations   = traveller.salutation;
                        hotelBookingDB.Customers.Add(cus);
                        hotelBookingDB.SaveChanges();
                        //DtHr["Customer_ID"] = cus.ID;
                        CusID = cus.ID;
                    }

                    //DtHr["Provider_ID"] = BookingResults.Pid;
                    //DtHr["Sell_Price"] = BookingResults.SellPrice;
                    //DtHr["Sell_Currency"] = BookingResults.Currency;
                    //DtHr["Booking_Phone_Code"] = traveller.phoneCode;
                    //DtHr["Booking_Phone"] = traveller.phone;
                    //DtHr["Booking_Email"] = BookingResults.Mail;
                    traveller.lastName = traveller.lastName.Replace(" ", String.Empty);

                    //DtHr["Pax_Name"] = traveller.firstName + " " + traveller.lastName;
                    //DtHr["Foreign_Amount"] = BookingResults.totalCost;
                    //DtHr["Total_Cost_main"] = BookingResults.totalCost;
                    //DtHr["src"] = BookingResults.Src;
                    //TBO

                    HotelsBooking hotelsBooking = new HotelsBooking
                    {
                        //Booking_Conf =
                        Booking_Email      = BookingResults.Mail,
                        Booking_No         = BNNum,
                        Booking_phone      = traveller.phone,
                        Booking_Phone_Code = traveller.phoneCode,
                        Booking_Status     = "NewBooking",
                        Booking_Time       = DateTime.UtcNow,
                        City           = BookingResults.CityName,
                        Customer_ID    = CusID.ToString(),
                        Foreign_Amount = BookingResults.totalCost,
                        //Form_Of_Payment
                        //HotelConfirmationNo
                        HotelProviderID = BookingResults.ProviderHotelID,
                        Hotel_ID        = BookingResults.HotelID,
                        //InvoicePdf
                        //NotificationKey
                        Pax_Name = traveller.firstName + " " + traveller.lastName,
                        Pax_Qty  = BookingResults.Travellers.Count,
                        //PromoCode_Amount
                        Provider_ID              = BookingResults.Pid,
                        Rooms_Qty                = int.Parse(BookingResults.RoomQty),
                        Sell_Currency            = BookingResults.Currency,
                        Sell_Price               = BookingResults.SellPrice,
                        Total_Cost_Main_Currency = BookingResults.totalCost,
                        SessionId                = BookingResults.Sid,
                        Sales_Channel            = BookingResults.Src
                    };
                    hotelBookingDB.HotelsBookings.Add(hotelsBooking);

                    //


                    //dt.Rows.Add(DtHr);
                    var searchData   = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == BookingResults.Sid);
                    int duration     = Convert.ToInt32((searchData.dateTo - searchData.dateFrom).Value.TotalDays);
                    var roomsDB      = searchDB.SearchRoomResults.Where(a => a.sID == BookingResults.Sid && a.HotelCode == BookingResults.HotelID);
                    var Bookingrooms = BookingResults.Travellers.Select(x => x.roomRef).ToList().Distinct();
                    foreach (var item in Bookingrooms)
                    {
                        var specificRoom      = BookingResults.Travellers.FirstOrDefault(x => x.roomRef == item);
                        var roomdata          = roomsDB.FirstOrDefault(a => a.RoomCode == specificRoom.roomNo.ToString() && a.HotelCode == BookingResults.HotelID);
                        HotelBookingRoom room = new HotelBookingRoom
                        {
                            Booking_No = BNNum,
                            Meal       = roomdata.meal,
                            Paxs_Qty   = roomdata.PaxSQty,
                            PID        = int.Parse(BookingResults.Pid),
                            //Room_Category = roomdata.RoomName,
                            Room_No = specificRoom.roomNo,
                            //Room_Type = roomdata.roomType,
                            SID = BookingResults.Sid,
                        };
                        hotelBookingDB.HotelBookingRooms.Add(room);
                        //DataRow DRR = dr.NewRow();
                        //DRR["sID"] = BookingResults.Sid;
                        //DRR["ProviderId"] = int.Parse(BookingResults.Pid);//////////
                        //DRR["Booking_No"] = BNNum;////////////////////////////*************
                        //DRR["RoomNo"] = specificRoom.roomNo;
                        //DRR["RoomCat"] = roomdata.RoomName;
                        //DRR["RoomType"] = roomdata.roomType;
                        //DRR["Meal"] = roomdata.meal;
                        //DRR["PaxesQty"] = roomdata.PaxSQty;
                        ////  DRR["Refund"] = "";//////////////
                        //dr.Rows.Add(DRR);
                        for (int j = 0; j < duration; j++)
                        {
                            HotelBookingNight night = new HotelBookingNight
                            {
                                Booking_No = BNNum,
                                Currency   = roomdata.SellCurrency,
                                NightDate  = searchData.dateFrom.Value.AddDays(j + 1),
                                Rate       = roomdata.SellPrice.Value / duration,
                                Room_No    = specificRoom.roomNo
                            };
                            hotelBookingDB.HotelBookingNights.Add(night);
                            //DataRow DrN = dn.NewRow();
                            //DrN["Booking_No"] = BNNum;//***************************
                            //DrN["Ndate"] = searchData.dateFrom.Value.AddDays(j + 1);
                            //DrN["rate"] = roomdata.SellPrice.Value / duration;
                            //DrN["Currency"] = roomdata.SellCurrency;
                            //DrN["Room_No"] = specificRoom.roomNo;


                            //dn.Rows.Add(DrN);
                        }
                        HotelBookingRoomsStatu roomsStatus = new HotelBookingRoomsStatu();
                        roomsStatus.Booking_No  = BNNum;
                        roomsStatus.Room_No     = specificRoom.roomNo;
                        roomsStatus.Room_Status = 1;
                        hotelBookingDB.HotelBookingRoomsStatus.Add(roomsStatus);
                    }

                    foreach (var item in BookingResults.Travellers)
                    {
                        HotelBookingPax pax = new HotelBookingPax
                        {
                            Booking_No  = BNNum,
                            DateOfBirth = item.DateOfBirth.ToString(),
                            First_name  = item.firstName,
                            Last_Name   = item.lastName,
                            Nationality = item.nationality,
                            PaxNo       = item.TravellerId,
                            Pax_Type    = item.paxType,
                            Phone       = item.phone,
                            Phone_Code  = item.phoneCode,
                            RoomRef     = item.roomRef,
                            Room_No     = item.roomNo, //room index
                            Salutations = item.salutation,
                            SID         = BookingResults.Sid,
                            Lead        = item.Main
                        };
                        hotelBookingDB.HotelBookingPaxs.Add(pax);
                        //DataRow Dpri = dp.NewRow();
                        //Dpri["sID"] = BookingResults.Sid;
                        //Dpri["Booking_No"] = BNNum;//////////****************
                        //Dpri["RoomNo"] = item.roomNo;////////////////////////////
                        //Dpri["paxtype"] = item.paxType;
                        //Dpri["FirstName"] = item.firstName;
                        //Dpri["LastName"] = item.lastName;
                        //Dpri["saluation"] = item.salutation;
                        //Dpri["BD"] = item.DateOfBirth.ToString();
                        //Dpri["Nationality"] = item.nationality;
                        //Dpri["phone"] = item.phone;
                        //Dpri["phoneCode"] = item.phoneCode;
                        //Dpri["PaxNo"] = item.TravellerId;
                        //Dpri["Ref"] = item.roomRef;
                        //dp.Rows.Add(Dpri);
                    }
                    HotelBookingStatu bookingStatus = new HotelBookingStatu();
                    bookingStatus.Booking_No     = BNNum;
                    bookingStatus.Booking_Status = "New Booking";
                    bookingStatus.Status_Time    = DateTime.Now;
                    hotelBookingDB.HotelBookingStatus.Add(bookingStatus);

                    //Dictionary<string, object> keyValues = new Dictionary<string, object>();
                    //keyValues.Add("Bookindata", dt);
                    //keyValues.Add("RoomList", dr);
                    //keyValues.Add("nigtData", dn);
                    //keyValues.Add("paxes", dp);

                    // db.SaveSP_Async("SaveBookingResult", keyValues);

                    hotelBookingDB.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SaveBookingController/Errors/", "SaveSearchResult_" + BookingResults.Sid, "", ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                throw ex;
            }
        }
Example #29
0
        public static CheckAvailabilityResult GetRoomsFromProviders(Common.Models.AvailabilityReq roomsReq, String ArrivalDate, string dur)
        {
            //try
            //{
            CheckAvailabilityResult results = new CheckAvailabilityResult();

            results.TotalCost = 0;

            #region redo
            //if (roomsReq.PID == "4")
            //{
            //    HotelBedsIntegration.Models.Availability.AvailabilityReq req = new HotelBedsIntegration.Models.Availability.AvailabilityReq();
            //    req.rooms = new List<RoomReq>();
            //    req.upselling = "True";
            //    foreach (var item in roomsReq.Rooms.Select(a => a.RoomRef).ToList())
            //    {
            //        RoomReq roomReq = new RoomReq();
            //        roomReq.rateKey = item;

            //        req.rooms.Add(roomReq);
            //    }
            //    var availabilityRes = HotelBedsIntegration.Controller.CheckAvailability.checkAvailability(req, roomsReq.Sid);
            //    //MG
            //    results.ProviderCur = availabilityRes.Result.currency;

            //    if (availabilityRes.Result.rooms != null)
            //    {
            //        if (roomsReq.TotalCost == double.Parse(availabilityRes.Result.totalNet) || roomsReq.TotalCost > double.Parse(availabilityRes.Result.totalNet))
            //        {
            //            results.Status = 0;
            //            results.TotalCost = roomsReq.TotalCost;
            //        }
            //        else
            //        {
            //            results.Status = 1;
            //            results.TotalCost = double.Parse(availabilityRes.Result.totalNet);
            //        }
            //        foreach (var item in availabilityRes.Result.rooms)
            //        {
            //            for (int i = 0; i < item.rates.Count; i++)
            //            {
            //                RoomResult roomResult = new RoomResult();

            //                roomResult.CostPrice = double.Parse(item.rates[i].net);
            //                var room = roomsReq.Rooms.Where(a => a.RoomRef == item.rates[i].rateKey).OrderBy(a => a.RoomId).ToList();/////////get specific roomid
            //                if (room.Count > 1)
            //                {
            //                    if (results.Result.FirstOrDefault(x => x.RoomCode == item.rates[i].rateKey) == null)
            //                    {
            //                        roomResult.RoomIndex = room[0].RoomId;
            //                    }
            //                    else
            //                    {
            //                        roomResult.RoomIndex = room[results.Result.Where(x => x.RoomCode == item.rates[i].rateKey).ToList().Count].RoomId;
            //                    }
            //                }
            //                else
            //                {
            //                    roomResult.RoomIndex = room[0].RoomId;
            //                }
            //                roomResult.RoomCode = item.rates[i].rateKey;
            //                if (results.Status == 0)
            //                {
            //                    roomResult.CostPrice = roomsReq.Rooms.FirstOrDefault(v => v.RoomRef == item.rates[i].rateKey).Cost;
            //                }
            //                else
            //                {
            //                    roomResult.CostPrice = double.Parse(item.rates[i].net);
            //                }
            //                // roomResult.TotalSellPrice = double.Parse(r.net);

            //                foreach (var Cancel in item.rates[i].cancellationPolicies)
            //                {
            //                    roomResult.cancellationRules.Add(new CancellationRule
            //                    {
            //                        Cost = double.Parse(Cancel.amount),
            //                        FromDate = Cancel.from.ToLongDateString(),
            //                        ToDate = null,
            //                        CanellationRuleText = null
            //                    });

            //                }
            //                results.Result.Add(roomResult);
            //            }
            //        }

            //    }
            //    else
            //    {
            //        results.Status = 2;
            //    }
            //}
            //else if (roomsReq.PID == "2")
            //{
            //    // get hotelproperty and arrival and duration   // get search rooms result from db
            //    HotelManager hotelManager = new HotelManager();
            //    var hotelsData = hotelManager.GetHotelDataForTsAvailability(roomsReq);
            //    if (hotelsData != null)
            //    {
            //        foreach (var item in hotelsData.roomResults)
            //        {
            //            // call ts  and map it with db and ..or new obj
            //            var roomsResults = new List<SearchRoomResult>();
            //            roomsResults.Add(item);
            //            var availReq = AvailabiltyManager.prepareAvailabilityObj(roomsResults, hotelsData.HodelData.ProviderHotelCode, ArrivalDate, dur);

            //            var availRes = IntegrationTotalStay.Controller.CheckAvailability.GetTSAvailability(availReq, roomsReq.Sid);
            //            if (availRes != null)
            //            {
            //                RoomResult roomResult = new RoomResult();
            //                roomResult.Adult = item.Adults.Value;
            //                roomResult.Child = item.Childern.Value;

            //                roomResult.RoomIndex = int.Parse(item.RoomCode);
            //                roomResult.RoomReference = availRes.PreBookingToken;
            //                if (availRes.TotalPrice == item.costPrice.Value.ToString() || double.Parse(availRes.TotalPrice) < item.costPrice.Value)
            //                {
            //                    results.Status = 0;
            //                    roomResult.CostPrice = item.costPrice.Value;
            //                }
            //                else
            //                {
            //                    results.Status = 1;
            //                    roomResult.CostPrice = double.Parse(availRes.TotalPrice);
            //                }
            //                // handel cancel policy

            //                foreach (var cancel in availRes.Cancellations.Cancellation)
            //                {
            //                    CancellationRule cancellation = new CancellationRule();
            //                    DateTime dateFrom = Convert.ToDateTime(cancel.StartDate);
            //                    cancellation.FromDate = dateFrom.ToString("MMMM dd, yyyy");
            //                    cancellation.ToDate = cancel.EndDate;
            //                    cancellation.Cost = double.Parse(cancel.Penalty);
            //                    roomResult.cancellationRules.Add(cancellation);
            //                }

            //                // roomResult.RoomCode=
            //                results.Result.Add(roomResult);
            //                results.TotalCost += double.Parse(availRes.TotalPrice);
            //            }
            //            else
            //            {
            //                results.Status = 2;
            //            }
            //        }
            //    }
            //    else
            //    {
            //        return null;
            //    }

            //}
            ////else if (PID == "3")
            //{
            //    var SearchData = SearchRepo.GetSearchDataBySession(Sid);
            //    DateTime CheckInDate = SearchData.dateFrom.Value; //searchData.DateFrom;

            //    var SMRRuslt = SMCLSValidation.ValidationQuote(Rooms[0], Sid);
            //    results.TotalCost = double.Parse(SMRRuslt.Result.price.net.ToString());
            //    if (SMRRuslt.Result != null)
            //    {
            //        if (Cost == double.Parse(SMRRuslt.Result.price.net.ToString()))
            //        {
            //            results.Status = 0;
            //        }
            //        else
            //        {
            //            results.Status = 1;
            //        }
            //        foreach (var item in Rooms)
            //        {
            //            RoomResult SMroomResult = new RoomResult();
            //            SMroomResult.RoomCode = SMRRuslt.Result.optionRefId;
            //            foreach (var c in SMRRuslt.Result.cancelPolicy.cancelPenalties)
            //            {
            //                SMroomResult.cancellationRules.Add(new CancellationRule
            //                {

            //                    Cost = double.Parse(c.value.ToString()),
            //                    FromDate = CheckInDate.AddHours(-c.hoursBefore.Value).ToString("dd MMM yyyy")
            //                    // Cost = Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3),
            //                    //CanellationRuleText = searchData.Lang.ToLower() == "en" ? Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3) + "" + searchData.Currency + " To " + CheckInDate.AddHours(-a.hoursBefore.Value).ToString("dd MMM yyyy") : CheckInDate.AddHours(-a.hoursBefore.Value).ToString("dd MMM yyyy") + " إلى " + "" + searchData.Currency + Math.Round(((a.value.Value * ProviderExcahngeRate) + AppliedCancellationMarkup.Value) * ExcahngeRate, 3)


            //                });
            //            }
            //            results.Result.Add(SMroomResult);
            //        }
            //    }
            //    else
            //    {
            //        results.Status = 2;
            //    }
            //}
            #endregion
            if (roomsReq.PID == "5")
            {
                // get hotelproperty and arrival and duration   // get search rooms result from db
                HotelManager hotelManager = new HotelManager();
                //FOr  TBO
                var hotelsData = hotelManager.GetHotelDataForTsAvailability(roomsReq);
                if (hotelsData != null)
                {
                    //TBO
                    SearchDBEntities searchDB   = new SearchDBEntities();
                    string           TBOSession = searchDB.ProviderSessions.FirstOrDefault(ps => ps.SearchId == roomsReq.Sid).PSession;                                                 //Select(s => s.PSession).ToString();
                    int ResIndex = int.Parse(searchDB.SearchHotelResults.FirstOrDefault(hotl => hotl.sID == roomsReq.Sid && hotl.HotelCode == roomsReq.HotelCode).ResIndex.ToString()); //Select(indx => indx.ResIndex).ToString();

                    //get room indexes to send in pricing req
                    List <int> indexs = new List <int>();

                    foreach (var indx in roomsReq.Rooms)
                    {
                        indexs.Add(indx.RoomId);
                    }
                    //TBO.WSDL.hotelServiceRef.AvailabilityAndPricingRequest req = new TBO.WSDL.hotelServiceRef.AvailabilityAndPricingRequest
                    //{
                    //    SessionId = TBOSession,
                    //    ResultIndex = ResIndex,
                    //    OptionsForBooking = new TBO.WSDL.hotelServiceRef.BookingOptions
                    //    {
                    //        RoomCombination = new TBO.WSDL.hotelServiceRef.RoomCombination[]
                    //        {
                    //                    new TBO.WSDL.hotelServiceRef.RoomCombination{RoomIndex = indexs.ToArray()}
                    //        }
                    //    }
                    //};
                    //var availRes = AvailablityPricingService.PricingService(req, roomsReq.Sid);
                    //if (availRes != null)
                    //{
                    var             BaseCur         = ConfigurationSettings.AppSettings["BaseCur"];
                    CurrencyManager currencyManager = new CurrencyManager();
                    //double ProviderExcahngeRate = currencyManager.GetCurrencyConversion("USD", BaseCur, req.SessionId);

                    RoomResult roomResult = new RoomResult();
                    //roomResult.HotelNorms = availRes.HotelCancellationPolicies?.HotelNorms;
                    //if (availRes?.PriceVerification?.PriceChanged == false)
                    //{
                    results.Status = 0;
                    foreach (var item in hotelsData.roomResults)
                    {
                        roomResult.TotalSellPrice = (double)item.SellPrice; //Math.Round((double)item.SellPrice * ProviderExcahngeRate, 3);
                        roomResult.CostPrice      = item.SellPrice ?? default(double);
                        results.TotalCost        += (double)item.SellPrice; //Math.Round((double)item.SellPrice * ProviderExcahngeRate, 3);
                        roomResult.Adult          = item.Adults.Value;
                        roomResult.Child          = item.Childern.Value;

                        roomResult.RoomIndex = int.Parse(item.RoomCode);
                        results.Result.Add(roomResult);
                    }

                    //}
                    //else
                    //{

                    //    results.Status = 1;
                    //    foreach (var item in availRes?.PriceVerification.HotelRooms)
                    //    {
                    //        roomResult.TotalSellPrice = Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3);
                    //        roomResult.CostPrice = (double)item.RoomRate.TotalFare;
                    //        results.TotalCost += roomResult.TotalSellPrice; //Math.Round((double)item.RoomRate.TotalFare * ProviderExcahngeRate, 3);
                    //        roomResult.RoomIndex = item.RoomIndex;
                    //        results.Result.Add(roomResult);
                    //        // update price in search db
                    //        //CheckAvailabilityRepo repo = new CheckAvailabilityRepo();
                    //        //repo.UpdateTBORoomsPrice(availRes?.PriceVerification.HotelRooms);
                    //        //update tbo new rooms prices
                    //        var Newroom = searchDB.SearchRoomResults.FirstOrDefault(room => room.sID == req.SessionId && room.RoomCode == item.RoomIndex.ToString());
                    //        Newroom.costPrice = (double)item.RoomRate.TotalFare;
                    //        Newroom.rateClass = item.RoomRate.RoomFare.ToString();
                    //        Newroom.rateType = item.RoomRate.RoomTax.ToString();
                    //        Newroom.SellPrice = roomResult.TotalSellPrice;

                    //        searchDB.SaveChanges();

                    //    }
                }
                //handel cancel policy
                //foreach (var cancel in availRes.HotelCancellationPolicies?.CancelPolicies?.CancelPolicy)
                //{
                //    CancellationRule cancellation = new CancellationRule();
                //    //DateTime dateFrom = Convert.ToDateTime(cancel.FromDate);
                //    cancellation.FromDate = cancel.FromDate;// dateFrom.ToString("MMMM dd, yyyy");
                //    cancellation.ToDate = cancel.ToDate;
                //    cancellation.Cost = (double)cancel.CancellationCharge;
                //    cancellation.ChargeType = cancel.ChargeType.ToString();
                //    roomResult.cancellationRules.Add(cancellation);
                //}
                //var countroom = 0;
                //foreach (var item in hotelsData.roomResults)
                //{
                //    countroom++;
                //    // call ts  and map it with db and ..or new obj
                //    // var roomsResults = new List<SearchRoomResult>();
                //    // roomsResults.Add(item);
                //    roomResult.Adult = item.Adults.Value;
                //    roomResult.Child = item.Childern.Value;

                //    roomResult.RoomIndex = int.Parse(item.RoomCode);
                //roomResult.RoomReference = availRes.PreBookingToken;
                //results = new CheckAvailabilityResult();

                //if (availRes?.PriceVerification?.PriceChanged == false)
                //{
                //    //results.Status = 0;
                //    roomResult.CostPrice = item.costPrice.Value;
                //    results.TotalCost += item.costPrice.Value;

                //}
                //else
                //{
                //    // results.Status = 1;

                //    roomResult.CostPrice = (double)availRes.PriceVerification.HotelRooms[countroom].RoomRate.TotalFare;
                //    results.TotalCost += (double)availRes.PriceVerification.HotelRooms[countroom].RoomRate.TotalFare;

                //}

                //}    //end foreach

                // roomResult.RoomCode=
                //results.Result.Add(roomResult);
                //}
                //else
                //{
                //    results.Status = 2;
                //}
            }
            else
            {
                return(null);
            }
            return(results);
        }
Example #30
0
        public PayLinkRequest GetPayLinkRequestDA(string BN, string Sid, string ip, string pos, string NotTok)
        {
            try
            {
                PayLinkRequest   payLinkData     = new PayLinkRequest();
                SearchDBEntities searchDB        = new SearchDBEntities();
                CurrencyRepo     currencyManager = new CurrencyRepo();

                double totalPrice = 0;
                HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities();
                var paxes       = hotelBookingDB.HotelBookingPaxs.Where(x => x.Booking_No == BN && x.SID == Sid && x.PaxNo == 1);
                var Customer    = paxes.FirstOrDefault(a => a.Booking_No == BN && a.SID == Sid && a.RoomRef == 1 && a.PaxNo == 1);
                var BookingData = hotelBookingDB.HotelsBookings.FirstOrDefault(x => x.Booking_No == BN && x.SessionId == Sid);
                var SearchData  = searchDB.SearchCriterias.FirstOrDefault(x => x.sID == Sid);
                var PaxsRooms   = paxes.Select(x => x.Room_No.ToString()).ToList();

                var Bookingrooms = searchDB.SearchRoomResults.Where(a => a.sID == Sid && a.HotelCode == BookingData.Hotel_ID && PaxsRooms.Contains(a.RoomCode)).ToList();
                if (Customer == null || Bookingrooms.Count == 0 || SearchData == null || BookingData == null)
                {
                    return(null);
                }
                payLinkData.Customer.CustomerEmail = BookingData.Booking_Email;

                payLinkData.Customer.CustomerPhone    = Customer.Phone;
                payLinkData.Customer.FirstName        = Customer.First_name;
                payLinkData.Customer.LastName         = Customer.Last_Name;
                payLinkData.Customer.IP               = ip;
                payLinkData.Customer.Nationality      = SearchData.passengerNationality;
                payLinkData.Customer.PaymentLocation  = pos;
                payLinkData.Customer.PhoneCodeCountry = Customer.Phone_Code;
                payLinkData.Customer.PhoneCountryCode = null;
                payLinkData.BookingInfo.BookingDate   = Convert.ToDateTime(string.Format("{0:s}", DateTime.Now));
                payLinkData.BookingInfo.CheckInDate   = SearchData.dateFrom.Value;
                payLinkData.BookingInfo.Description   = "";
                payLinkData.BookingInfo.HGNumber      = BN;
                payLinkData.BookingInfo.Product       = "Hotel";
                payLinkData.BookingInfo.SearchID      = Sid;
                var url = ConfigurationSettings.AppSettings["SuccessUrl"];
                payLinkData.PaymentAuthData.FailUrl       = url + "?HG=" + BN + "&sid=" + Sid;
                payLinkData.PaymentAuthData.SuccessUrl    = url + "?HG=" + BN + "&sid=" + Sid;
                payLinkData.PaymentAuthData.HGToken       = null;
                payLinkData.PaymentAuthData.HGTokenStatus = 0;
                payLinkData.PaymentAuthData.HGTrackId     = null;
                payLinkData.PaymentAuthData.PaymentMethod = null;
                payLinkData.PaymentAuthData.PaymentToken  = null;
                var ActionUrlData = ConfigurationSettings.AppSettings["ActionUrl"];
                var BaseCur       = ConfigurationSettings.AppSettings["BaseCur"];
                // stop call cHotelCheckAvailability for tbo
                payLinkData.ActionsUrl.ValidationUrl  = ActionUrlData + "/api/HotelCheckAvailability?sid=" + Sid + "&bookingnum=" + BN;
                payLinkData.ActionsUrl.PostPaymentUrl = ActionUrlData + "/Api/ConfirmHotelStatus?sid=" + Sid + "&bookingNum=" + BN;
                payLinkData.ActionsUrl.PrePaymentUrl  = "";

                foreach (var item in Bookingrooms)
                {
                    totalPrice += item.SellPrice.Value;
                }
                double BaseExcahngeRate = currencyManager.GetEveryDayCurrenciesConversion(Bookingrooms[0].SellCurrency, BaseCur, Sid, DateTime.Now).Result.Customer_Sell_Rate;
                double ExcahngeRate     = currencyManager.GetEveryDayCurrenciesConversion(BaseCur, BookingData.Sell_Currency, Sid, DateTime.Now).Result.Customer_Sell_Rate;

                totalPrice = totalPrice * BaseExcahngeRate;
                payLinkData.PaymentFareDetails.CustomerPaymentCurrency = BookingData.Sell_Currency;
                payLinkData.PaymentFareDetails.FareAmount        = totalPrice;
                payLinkData.PaymentFareDetails.TaxAmount         = 0;
                payLinkData.PaymentFareDetails.TotalAmount       = totalPrice;
                payLinkData.PaymentFareDetails.TotalChargeAmount = 0;
                payLinkData.PaymentFareDetails.ExchangeRate      = ExcahngeRate;
                payLinkData.FormData        = null;
                BookingData.NotificationKey = NotTok;
                hotelBookingDB.SaveChanges();

                return(payLinkData);
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("PaymentViewController/ERRor/", "PaymentView" + "INDAL" + Sid, "InComingData", ex.InnerException?.Message + ex.Message + ex.StackTrace);

                return(null);
            }
        }