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());
        }
        public void CancelForAllProviders(string BN)
        {
            cancelData = new CancelDetailes();
            SearchResultData searchResult = new SearchResultData();
            List <GetActiveProviders_Result> providers_Results = searchResult.GetActiveProvidersData();
            CancellationBookingRepo          cancellationrepo  = new CancellationBookingRepo();
            var BookingData = cancellationrepo.GetBookingReference(BN);

            // for (int i = 0; i < providers_Results.Count; i++)
            //{
            //  int providerid = providers_Results[i].Provider_ID.Value;
            switch (BookingData.ProviderId.Value)
            {
            case 1:
                break;

            case 2:
                break;

            case 3:
                break;

            case 4:
                try
                {
                    var CancelDetailes = Cancellation.CancelBooking(BookingData.Reference, BN).Result;
                    if (CancelDetailes != null)
                    {
                        cancellationrepo.SaveCancellationBookingData(CancelDetailes, BN, BookingData.Reference);

                        if (CancelDetailes.booking.status.ToLower() == "CANCELLED".ToLower())
                        {
                            cancelData.Status          = true;
                            cancelData.CancelReference = CancelDetailes.booking.cancellationReference;
                            cancelData.BookingNum      = BN;
                        }
                        else
                        {
                            cancelData.Status     = false;
                            cancelData.BookingNum = BN;
                        }
                    }
                }
                catch (Exception ex)
                {
                    cancelData.Status     = false;
                    cancelData.BookingNum = BN;
                    LoggingHelper.WriteToFile("/ProviderCancelManager/Errors/", "HotelSearchSMR_" + BN, ex.Message, ex.Message + " Sourse :" + ex.Source + " Stack Trace :" + ex.StackTrace);
                }

                break;

            // }
            case 5:

                var CancelTBO = CancelationService.Cancel(BookingData.supplerReference);
                if (CancelTBO != null)
                {
                    //cancellationrepo.SaveCancellationBookingData(CancelTBO, BN, BookingData.Reference);
                    //TBO.RequestStatus
                    //UnProcessed,Pending, InProgress, Processed, Rejected  RefundAwaited
                    if (CancelTBO.RequestStatus.ToString().ToLower() == "Processed".ToLower())
                    {
                        cancelData.Status = true;
                        //cancelData.CancelReference = CancelDetailes.booking.cancellationReference;
                        cancelData.BookingNum = BN;
                    }
                    else
                    {
                        cancelData.Status     = false;
                        cancelData.BookingNum = BN;
                    }
                }
                break;
            }
        }