Ejemplo n.º 1
0
  //for tbo only
 public List<HotelDetails> GetHotelDetailsForTBO(List<string> HotelProviderIds)
 {
     TBORepo tBORepo = new TBORepo();
     return tBORepo.GetHotelDetails(HotelProviderIds);
 }
        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());
        }
Ejemplo n.º 3
0
        public static HotelBedsIntegration.Models.BookingStatus CallProviders(ConfirmData confirm, string BN)
        {
            HotelBedsIntegration.Models.BookingStatus confirmed = new HotelBedsIntegration.Models.BookingStatus();
            try
            {
                //TBO
                if (confirm.Pid == "5")
                {
                    //var bookingObj = TBOConfirmationManager.prepareObject(confirm);
                    TBORepo repo   = new TBORepo();
                    var     TBOreq = repo.GetBookReqData(confirm.hotelsBooking.SessionId, confirm.hotelsBooking.Booking_No);
                    //if (TBOreq != null && confirm.Rooms.Count == TBOreq.HotelRooms.Count)
                    //{
                    //cacluate total of rooms sup curency is different
                    //decimal total = 0;
                    //foreach (var item in TBOreq.HotelRooms)
                    //{
                    //    total += item.RoomRate.TotalFare;
                    //    if (item.Supplements!= null)
                    //    {
                    //        foreach (var sup in item.Supplements)
                    //        {
                    //            total += sup.Price;
                    //        }
                    //    }
                    //}
                    //map genral tbo req to provider req
                    var req = TBOIntegration.Mapper.BookMapper.MapBookReq(TBOreq);

                    var confirmedTBO = BookService.Booking(req, confirm.hotelsBooking.SessionId);
                    if (confirmedTBO.BookingStatus.ToString() != "Vouchered" && confirmedTBO.Status.StatusCode != "01")
                    {
                        BookingConfirmationData bookingCon = new BookingConfirmationData();
                        bookingCon.BookingNum       = BN;
                        bookingCon.ClientReference  = req.ClientReferenceNumber;
                        bookingCon.Cost             = (decimal)TBOreq.TotalNet;//need edits
                        bookingCon.Currency         = "USD";
                        bookingCon.CreationDate     = DateTime.UtcNow;
                        bookingCon.HolderFirstName  = req.Guests.FirstOrDefault(g => g.LeadGuest == true).FirstName;
                        bookingCon.HolderLastName   = req.Guests.FirstOrDefault(g => g.LeadGuest == true).LastName;
                        bookingCon.ProviderId       = 5;
                        bookingCon.HotelCode        = confirm.hotelsBooking.Hotel_ID;
                        bookingCon.Reference        = confirmedTBO.ConfirmationNo;
                        bookingCon.SessionID        = confirm.hotelsBooking.SessionId;
                        bookingCon.Status           = "done";
                        bookingCon.supplerReference = confirmedTBO.ConfirmationNo;
                        // map confirmedTBO to confimed
                        confirmed.booking.clientReference = req.ClientReferenceNumber;
                        confirmed.booking.totalNet        = TBOreq.TotalNet ?? default(double);
                        confirmed.booking.currency        = "USD";
                        confirmed.booking.creationDate    = DateTime.UtcNow.ToShortDateString();
                        confirmed.booking.holder.name     = req.Guests.FirstOrDefault(g => g.LeadGuest == true).FirstName;
                        confirmed.booking.holder.surname  = req.Guests.FirstOrDefault(g => g.LeadGuest == true).LastName;
                        confirmed.booking.reference       = confirmedTBO.ConfirmationNo;
                        //
                        var saveDB = ConfirmationDate.saveBookingConfirmation(bookingCon);
                        //if (saveDB == null)
                        //{
                        //   confirmed.status = 1;
                        //}
                        //else
                        //{
                        confirmed.status = 0;
                        //}
                        //}


                        if (confirmed != null)
                        {
                            return(confirmed);
                        }
                    }
                }
                //
                if (confirm.Pid == "4")
                {
                    var bookingObj = ConfirmationManagerHB.prepareObject(confirm);

                    if (bookingObj != null && confirm.Rooms.Count == bookingObj.rooms.Count)
                    {
                        confirmed = BookingFlow.BookingRooms(bookingObj, confirm.hotelsBooking.SessionId, BN).Result;
                        if (confirmed.booking != null && confirmed.status != 2)
                        {
                            BookingConfirmationData bookingCon = new BookingConfirmationData();
                            bookingCon.BookingNum      = BN;
                            bookingCon.ClientReference = confirmed.booking.clientReference;
                            bookingCon.Cost            = (decimal)confirmed.booking.totalNet;
                            bookingCon.Currency        = confirmed.booking.currency;
                            bookingCon.CreationDate    = DateTime.Parse(confirmed.booking.creationDate);
                            bookingCon.HolderFirstName = confirmed.booking.holder.name;
                            bookingCon.HolderLastName  = confirmed.booking.holder.surname;
                            bookingCon.ProviderId      = 4;
                            bookingCon.HotelCode       = confirm.hotelsBooking.Hotel_ID;
                            bookingCon.Reference       = confirmed.booking.reference;
                            bookingCon.SessionID       = confirm.hotelsBooking.SessionId;
                            bookingCon.Status          = "done";

                            var saveDB = ConfirmationDate.saveBookingConfirmation(bookingCon);
                            if (saveDB == null)
                            {
                                confirmed.status = 1;
                            }
                            else
                            {
                                //  confirmed.status = 0;
                            }
                        }


                        if (confirmed != null)
                        {
                            return(confirmed);
                        }
                    }
                }
                if (confirm.Pid == "2")
                {
                    if (confirm != null)
                    {
                        var reqObj = BookingManager.prepareSearchObj(confirm, "");
                        if (reqObj == null)
                        {
                            confirmed.status = 2;
                            return(confirmed);
                        }
                        var confirmedTS = ConfirmationTS.GetTSConfirmations(reqObj, confirm.hotelsBooking.SessionId, BN);
                        if (confirmedTS != null)
                        {
                            BookingConfirmationData bookingCon = new BookingConfirmationData();
                            bookingCon.BookingNum      = BN;
                            bookingCon.ClientReference = confirmedTS.TradeReference;
                            bookingCon.Cost            = decimal.Parse(confirmedTS.TotalPrice);
                            bookingCon.Currency        = "USD";
                            bookingCon.HolderFirstName = reqObj.BookingDetails.LeadGuestFirstName;
                            bookingCon.HolderLastName  = reqObj.BookingDetails.LeadGuestLastName;
                            bookingCon.HotelCode       = confirm.hotelsBooking.Hotel_ID;
                            bookingCon.ProviderId      = 2;
                            bookingCon.Reference       = confirmedTS.BookingReference;
                            bookingCon.SessionID       = confirm.hotelsBooking.SessionId;
                            bookingCon.Status          = "done";
                            var saveDB = ConfirmationDate.saveBookingConfirmation(bookingCon);
                            if (saveDB == null)
                            {
                                confirmed.status = 1;
                            }
                            else
                            {
                                confirmed.status = 0;
                            }
                            return(confirmed);
                        }
                    }
                }
                //confirmed.status = 2;

                return(confirmed);
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SaveBookingConfirmationController/Errors/", "ConfirmationManager CallProvider" + "ProviderManager" + confirm.hotelsBooking.SessionId, ex.InnerException?.Message, ex.Message + ex.StackTrace);

                if (confirmed.status != 2)
                {
                    confirmed.status = 1;
                }
                return(confirmed);
            }
        }