public static async Task <BookingRes> BookingRoomsService(BookingReq value, string SessionID)
        {
            try
            {
                var          client      = new HttpClient();
                BookingRes   DataBooking = new BookingRes();
                const string apiKey      = "c2yc2s4vhhxqkhssr4p5jma6";
                const string Secret      = "UeF5JXgdqH";
                string       url         = "";

                // Compute the signature to be used in the API call (combined key + secret + timestamp in seconds)
                string signature;
                using (var sha = SHA256.Create())
                {
                    long ts = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds / 1000;
                    Console.WriteLine("Timestamp: " + ts);
                    var computedHash = sha.ComputeHash(Encoding.UTF8.GetBytes(apiKey + Secret + ts));
                    signature = BitConverter.ToString(computedHash).Replace("-", "");
                }

                LogData.WriteToFile("c:/HotelsB2C/Logs/HBLogs/BookingRequests", "BookingRequest_" + SessionID, "BookingRequest", Newtonsoft.Json.JsonConvert.SerializeObject(value));
                if (value.paymentData == null)
                {
                    url = "https://api.test.hotelbeds.com/hotel-api/1.0/bookings";
                }
                else
                {
                    url = "https://api-secure.test.hotelbeds.com/hotel-api/1.0/bookings";
                }
                client.DefaultRequestHeaders.Add("Api-Key", "c2yc2s4vhhxqkhssr4p5jma6");
                client.DefaultRequestHeaders.Add("X-Signature", signature);

                var response = client.PostAsJsonAsync(url, value).Result;



                if (response.IsSuccessStatusCode)
                {
                    DataBooking = await response.Content.ReadAsAsync <BookingRes>();

                    LogData.WriteToFile("c:/HotelsB2C/Logs/HBLogs/BookingResponses", "BookingResponses_" + SessionID, "BookingResponses", Newtonsoft.Json.JsonConvert.SerializeObject(DataBooking));

                    return(DataBooking);
                }
                else
                {
                    LogData.WriteToFile("c:/HotelsB2C/Logs/HBLogs/BookingResponses", "BookingResponses_" + SessionID, "BookingResponses", Newtonsoft.Json.JsonConvert.SerializeObject(response));

                    return(null);
                }
            }
            catch (Exception ex)
            {
                var requestData = JsonConvert.SerializeObject(ex);

                LogData.WriteExceptionToFile("c:/HotelsB2C/Logs/HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData);
                return(null);
            }
        }
예제 #2
0
        public static async Task <Models.BookingStatus> BookingRooms(BookingReq value, string SessionID, string BN)
        {
            BookingRes    hotels  = new BookingRes();
            BookingStatus booking = new BookingStatus();

            try
            {
                //yyyy-mm-dd

                BookingMapping.MapRequestToDB(value, SessionID, BN);
                hotels = await BookingService.BookingRoomsService(value, SessionID);

                if (hotels == null)
                {
                    booking.status = 2;
                    return(booking);
                }
                BookingMapping.MapResponseToDB(hotels, SessionID, BN);
                booking.status  = 0;
                booking.booking = hotels.booking;
                return(booking);
            }
            catch (Exception ex)
            {
                var requestData = JsonConvert.SerializeObject(ex);

                LoggingHelper.WriteToFile("HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData);
                if (hotels != null)
                {
                    booking.status  = 1;
                    booking.booking = hotels.booking;
                    return(booking);
                }

                booking.status  = 2;
                booking.booking = null;
                return(booking);
            }
        }
예제 #3
0
        public static void MapResponseToDB(BookingRes value, string SessionID, string BN)
        {
            try {
                HotelBedEntity      db      = new HotelBedEntity();
                BookingConfirmation booking = new BookingConfirmation();
                booking.cancellationPolicy = value.booking.modificationPolicies.cancellation.ToString();
                booking.clientReference    = value.booking.clientReference;
                booking.CreationData       = value.booking.creationDate;
                booking.CreationUser       = value.booking.creationUser;
                booking.Currency           = value.booking.currency;
                booking.HolderName         = value.booking.holder.name;
                booking.HolderSurName      = value.booking.holder.surname;
                booking.invoiceCompany     = value.booking.invoiceCompany.company;
                booking.invoiceCompanyCode = value.booking.invoiceCompany.code;
                booking.modificationPolicy = value.booking.modificationPolicies.modification.ToString();
                booking.PendingAmount      = value.booking.pendingAmount.ToString();
                booking.Reference          = value.booking.reference;
                booking.RegistrationNumber = value.booking.invoiceCompany.registrationNumber;
                booking.SessionID          = SessionID;
                booking.Status             = value.booking.status;
                booking.supplier           = value.booking.hotel.supplier.name;
                booking.Remark             = value.booking.hotel.supplier.vatNumber;
                booking.totalAmount        = value.booking.totalNet.ToString();
                booking.response           = Newtonsoft.Json.JsonConvert.SerializeObject(value.booking);
                //  var hotel = db.SearchHotelDatas.FirstOrDefault(a => a.SessionID == SessionID);
                booking.BookingNum = BN;
                db.BookingConfirmations.Add(booking);
                db.SaveChanges();
                foreach (var item in value.booking.hotel.rooms)
                {
                    foreach (var rate in item.rates)
                    {
                        BookingRoom searchRoom = new BookingRoom();
                        searchRoom.Adult        = rate.adults;
                        searchRoom.rateComments = rate.rateComments;
                        searchRoom.boardCode    = rate.boardCode;
                        searchRoom.boardName    = rate.boardName;
                        searchRoom.Child        = rate.children;

                        searchRoom.hotelMandatory = rate.hotelMandatory.ToString();
                        searchRoom.Net            = rate.net;
                        searchRoom.packaging      = rate.packaging.ToString();
                        searchRoom.paymentType    = rate.paymentType;
                        searchRoom.rateClass      = rate.rateClass;

                        searchRoom.rooms = rate.rooms;

                        searchRoom.code        = item.code;
                        searchRoom.Name        = item.name;
                        searchRoom.rooms       = rate.rooms;
                        searchRoom.BookingID   = booking.ID;
                        searchRoom.SearchId    = SessionID;
                        searchRoom.sellingRate = rate.sellingRate;
                        db.BookingRooms.Add(searchRoom);
                        db.SaveChanges();
                        foreach (var P in item.paxes)
                        {
                            Pax pa = new Pax();
                            pa.Name    = P.name;
                            pa.RoomID  = searchRoom.ID;
                            pa.SurName = P.surname;
                            pa.type    = P.type;
                            db.Paxes.Add(pa);
                        }
                        foreach (var policy in rate.cancellationPolicies)
                        {
                            PolicyBooking policyBooking = new PolicyBooking();
                            policyBooking.Amount        = policy.amount;
                            policyBooking.BookingRoomID = searchRoom.ID;
                            policyBooking.FromDate      = policy.from.ToString();
                            db.PolicyBookings.Add(policyBooking);
                        }
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                var requestData = JsonConvert.SerializeObject(ex);

                LoggingHelper.WriteToFile("HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData);

                throw (ex);
            }
        }
        public static async Task <BookingRes> BookingRoomsService(BookingReq value, string SessionID)
        {
            try
            {
                var client = new HttpClient();


                BookingRes DataBooking = new BookingRes();
                string     apiKey      = ConfigurationSettings.AppSettings["HBToken"];
                string     Secret      = ConfigurationSettings.AppSettings["HBSecret"];

                if (apiKey == null)
                {
                    apiKey = "c2yc2s4vhhxqkhssr4p5jma6";
                }
                if (Secret == null)
                {
                    Secret = "UeF5JXgdqH";
                }
                string url = "";
                //        apiKey = "c2yc2s4vhhxqkhssr4p5jma6"; Secret = "UeF5JXgdqH";
                // Compute the signature to be used in the API call (combined key + secret + timestamp in seconds)
                string signature;
                using (var sha = SHA256.Create())
                {
                    long ts = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds / 1000;
                    Console.WriteLine("Timestamp: " + ts);
                    var computedHash = sha.ComputeHash(Encoding.UTF8.GetBytes(apiKey + Secret + ts));
                    signature = BitConverter.ToString(computedHash).Replace("-", "");
                }
                string path = ConfigurationSettings.AppSettings["HBBookingEndPonit"];

                LoggingHelper.WriteToFile("HBLogs/BookingRequests", "BookingRequest_" + SessionID, "BookingRequest", Newtonsoft.Json.JsonConvert.SerializeObject(value));
                if (value.paymentData == null)
                {
                    //   url = "https://api.test.hotelbeds.com/hotel-api/1.0/bookings";
                    url = path;
                }
                else
                {
                    path = ConfigurationSettings.AppSettings["HBBookingPayEndPonit"];
                    url  = path;
                    //  url = "https://api-secure.test.hotelbeds.com/hotel-api/1.0/bookings";
                }

                client.DefaultRequestHeaders.Add("Api-Key", apiKey);
                client.DefaultRequestHeaders.Add("X-Signature", signature);
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                var response = client.PostAsJsonAsync(url, value).Result;

                stopWatch.Stop(); TimeSpan ts1 = stopWatch.Elapsed;

                if (response.IsSuccessStatusCode)
                {
                    DataBooking = await response.Content.ReadAsAsync <BookingRes>();

                    LoggingHelper.WriteToFile("HBLogs/BookingResponses", "BookingResponses_" + SessionID, "BookingResponses", "response time " + ts1.ToString() + Newtonsoft.Json.JsonConvert.SerializeObject(DataBooking));

                    return(DataBooking);
                }
                else
                {
                    LoggingHelper.WriteToFile("HBLogs/BookingResponses", "BookingResponses_" + SessionID, "BookingResponses", "response time " + ts1.ToString() + Newtonsoft.Json.JsonConvert.SerializeObject(response));

                    return(null);
                }
            }
            catch (Exception ex)
            {
                var requestData = JsonConvert.SerializeObject(ex);

                LoggingHelper.WriteToFile("HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData);
                throw ex;
            }
        }