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); } }
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); } }
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; } }