Exemplo n.º 1
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);
            }
        }
        public static BookingStatus GetConfirmationBooking(string Sid, string BN)
        {
            BookingStatus confirmed = new BookingStatus();

            try
            {
                // check confirmation
                var Confirm = ConfirmationDate.CheckBookingConfirmation(BN, Sid);
                // get data from DB //
                if (Confirm != true)
                {
                    var data = ConfirmationDate.GetAllConfirmationData(Sid, BN);
                    // call provider
                    if (data != null)
                    {
                        confirmed = ConfirmationManager.CallProviders(data, BN);
                        // Change Booking status
                        if (confirmed.status == 0)
                        {
                            //  save it in DB

                            // Change Booking status
                            var ConfirmStatus = ConfirmationDate.ChangeBookingStatus(Sid, BN, "Booked");
                            if (ConfirmStatus != null)
                            {
                                return(confirmed);
                            }
                            confirmed.status = 1;
                            return(confirmed);
                        }
                        else if (confirmed.status == 1)
                        {
                            var ConfirmStatus = ConfirmationDate.ChangeBookingStatus(Sid, BN, "Missing");

                            if (ConfirmStatus != null)
                            {
                                return(confirmed);
                            }
                            confirmed.status = 1;
                            return(confirmed);
                        }
                        else if (confirmed.status == 2)
                        {
                            var ConfirmStatus = ConfirmationDate.ChangeBookingStatus(Sid, BN, "Booking Not Confirmed");

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

                        return(confirmed);
                    }

                    confirmed.status = 2;
                    return(confirmed);
                }
                else
                {
                    confirmed.status = 3;
                    return(confirmed);
                }
            }catch (Exception ex)
            {
                LoggingHelper.WriteToFile("SaveBookingConfirmationController/Errors/", "ConfirmationBooking GetConfirmationBooking" + "ServOrch" + Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);

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