Example #1
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 void GetHotelSearchResultForAllProviders()
        {
            SearchResultData searchResult = new SearchResultData();

            List <GetActiveProviders_Result> providers_Results = searchResult.GetActiveProvidersData();
            //use stored in hotelsDb [GetHotelsIDAndProvidersByCityName] hotelbeds
            //var HotelIdsForActiveProviders = searchResult.GetProviderHotelIdsForActiveProviders(int.Parse(searchData.CityName));
            // hotelsDb tbl CitiesID
            //var ProvidersCities = searchResult.GetProviderCitiessForActiveProviders(int.Parse(searchData.CityName));//
            var tasks        = new List <Task>();
            var tokenSource1 = new CancellationTokenSource();
            var tokenSource2 = new CancellationTokenSource();
            var tokenSource3 = new CancellationTokenSource();
            CancellationTokenSource tokenSource5 = new CancellationTokenSource();

            for (int i = 0; i < providers_Results.Count; i++)
            {
                int providerid = providers_Results[i].Provider_ID.Value;
                switch (providerid)
                {
                case 1:
                    break;
                //case 2:
                //    var token3 = tokenSource3.Token;
                //    try
                //    {
                //        if (ProvidersCities.Count > 0)
                //        {
                //            tasks.Add(Task.Factory.StartNew(() =>
                //            {
                //                //
                //                var tsCity = ProvidersCities.FirstOrDefault(a => a.providerID == 2);
                //                if (tsCity != null)
                //                {
                //                    var searchobj = IntegrationTotalStay.Management.SearchManager.prepareSearchObj(searchData, tsCity.providerCity.ToString());
                //                    var res = SearchTs.GetTSHotels(searchobj);


                //                    using (TSMapper tsMapper = new TSMapper())
                //                    {
                //                        searchResponse.HotelResult.AddRange(tsMapper.MapSearchResult(res, searchData).HotelResult);

                //                    }
                //                }
                //            }, token3));
                //        }
                //    }
                //    catch (Exception ex)
                //    {
                //        LoggingHelper.WriteToFile("/ProviderManager/Errors/", "HotelSearchSMR_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                //    }

                //    break;
                case 3:
                    /*     var token1 = tokenSource1.Token;
                     *   SearchManager smrManager = new SearchManager();
                     *   smrManager.searchData = searchData;
                     *  try
                     *  {
                     *      tasks.Add(Task.Factory.StartNew(() =>
                     *      {
                     *          smrManager.HotelIds = HotelIdsForActiveProviders.Where(a => a.ProviderId == "3").Select(a => a.HotelProviderId).ToList();
                     *          smrManager.GetSearchResult();
                     *          SMRResult = smrManager.searchOutputs;
                     *
                     *
                     *          using (SMRMapper sMRMapper = new SMRMapper())
                     *          {
                     *              HotelSearchResults.AddRange(sMRMapper.MapSearchResult(SMRResult, smrManager.boardCodes, searchData));
                     *          }
                     *
                     *      }, token1));
                     *  }
                     *  catch (Exception ex)
                     *  {
                     *      LoggingHelper.WriteToFile("/ProviderManager/Errors/", "HotelSearchSMR_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                     *  }*/
                    break;
                //case 4:
                //    var token2 = tokenSource2.Token;
                //    HBSearchManager HBManager = new HBSearchManager();
                //    HBManager.searchData = searchData;
                //    try
                //    {
                //        if (HotelIdsForActiveProviders.Count > 0)
                //        {
                //            tasks.Add(Task.Factory.StartNew(() =>
                //            {
                //                if (searchData.Source.ToLower() == "direct" || searchData.Source.ToLower() == "ios" || searchData.Source.ToLower() == "android")
                //                    HBManager.HotelIds = HotelIdsForActiveProviders.Where(a => a.ProviderId == "4").Select(a => int.Parse(a.HotelProviderId)).ToList();
                //                else
                //                {
                //                    var hoteslPids = WegoHotels.Where(x => x.providerID == "4").Select(x => x.providerHotelID).ToList();
                //                    HBManager.HotelIds = HotelIdsForActiveProviders.Where(a => a.ProviderId == "4" && hoteslPids.Contains(a.HotelProviderId)).Select(a => int.Parse(a.HotelProviderId)).ToList();
                //                    ///HBManager.HotelIds.Add(103296); HBManager.HotelIds.Add(6810); HBManager.HotelIds.Add(405928); HBManager.HotelIds.Add(7661); HBManager.HotelIds.Add(9487); HBManager.HotelIds.Add(395560);
                //                }

                //                HBManager.GetSearchResult();
                //                HBResult = HBManager.searchOutputs;

                //                if (searchData.Source.ToLower() == "direct" || searchData.Source.ToLower() == "ios" || searchData.Source.ToLower() == "android")
                //                {
                //                    using (HBMapper HBMapper = new HBMapper())
                //                    {
                //                        // HotelSearchResults.AddRange(sMRMapper.MapSearchResult(HBResult, searchData));
                //                        // call Service Charge and Cancellation Charge Get SaleRule API
                //                        searchResponse.HotelResult.AddRange(HBMapper.MapSearchResult(HBResult, searchData).HotelResult);
                //                    }
                //                }
                //                else
                //                {
                //                    using (ChannelHBMapper HbMapper = new ChannelHBMapper())
                //                    {
                //                        hotelChannelResults.AddRange(HbMapper.MapSearchResult(HBResult, searchData));
                //                    }
                //                }
                //            }
                //                , token2));
                //        }
                //    }
                //    catch (Exception ex)
                //    {
                //        LoggingHelper.WriteToFile("ProviderManager/Errors/", "HotelSearchHotelBeds_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                //    }
                //    break;
                case 5:
                    var token5 = tokenSource5.Token;
                    TBOSearchManager TBOManager = new TBOSearchManager();
                    TBOManager.searchData = searchData;

                    TBORepo tBORepo = new TBORepo();
                    try
                    {
                        //if (HotelIdsForActiveProviders.Count > 0)
                        //{
                        //tasks.Add(Task.Factory.StartNew(() =>
                        //{
                        //TBOManager.HotelIds = HotelIdsForActiveProviders.Where(a => a.ProviderId == "5").Select(a => a.HotelProviderId).ToList();
                        TBOManager.HotelIds = tBORepo.GetHotelIdsByCityCode(searchData.CityName);
                        //call tbo provider
                        TBOManager.GetSearchResult();
                        var TBOResult = TBOManager.searchOutputs;

                        // map resp to general rsp
                        searchResponse.HotelResult.AddRange(TBOMapper.MapSearchResult(TBOResult, searchData).HotelResult);

                        // }
                        //  ));
                        // }
                    }
                    catch (Exception ex)
                    {
                        LoggingHelper.WriteToFile("/ProviderManager/Errors/", "HotelSearchTBO_" + searchData.sID, ex.InnerException?.Message, ex.Message + " Source :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                    }
                    break;
                }
            }
            Task.WaitAll(tasks.ToArray());
        }