public void SaveCancellationBookingData(CancellationBookingData cancellation, string BN, string reference)
        {
            HotelBookingDBEntities hotelBookingDB = new HotelBookingDBEntities();
            CancellationBooking    cancel         = new CancellationBooking();

            cancel.BookingCurrency       = cancellation.booking.currency;
            cancel.BookingNum            = BN;
            cancel.BookingReference      = reference;
            cancel.BookingTotalNet       = cancellation.booking.totalNet.ToString();
            cancel.CancellationAmount    = cancellation.booking.hotel.cancellationAmount.ToString();
            cancel.cancellationFlag      = cancellation.booking.modificationPolicies.cancellation.ToString();
            cancel.CancellationReference = cancellation.booking.cancellationReference;
            cancel.Cancelstatus          = cancellation.booking.status;
            cancel.checkIn                = cancellation.booking.hotel.checkIn;
            cancel.checkOut               = cancellation.booking.hotel.checkOut;
            cancel.ClientReference        = cancellation.booking.clientReference;
            cancel.CompanyregistrationNum = cancellation.booking.invoiceCompany.registrationNumber;
            cancel.creationDate           = cancellation.booking.creationDate;
            cancel.creationUser           = cancellation.booking.creationUser;
            cancel.Currency               = cancellation.booking.hotel.currency;
            cancel.HolderFirstName        = cancellation.booking.holder.name;
            cancel.HolderLastName         = cancellation.booking.holder.surname;
            cancel.HotelCode              = cancellation.booking.hotel.code.ToString();
            cancel.InvoiceCompany         = cancellation.booking.invoiceCompany.company;
            cancel.InvoiceCompanyCode     = cancellation.booking.invoiceCompany.code;
            cancel.Reference              = cancellation.booking.reference;
            cancel.SupplierName           = cancellation.booking.hotel.supplier.name;
            cancel.totalNet               = cancellation.booking.hotel.totalNet;
            cancel.VatNumber              = cancellation.booking.hotel.supplier.vatNumber;
            hotelBookingDB.CancellationBookings.Add(cancel);
            foreach (var item in cancellation.booking.hotel.rooms)
            {
                foreach (var r in item.rates)
                {
                    CancellationRoom room = new CancellationRoom();
                    room.adults     = r.adults.ToString();
                    room.boardName  = r.boardName;
                    room.BookingNum = BN;
                    room.children   = r.children.ToString();
                    room.code       = item.id.ToString();

                    room.net               = r.net.ToString();
                    room.rateClass         = r.rateClass;
                    room.reference         = reference;
                    room.RoomName          = item.name;
                    room.RoomStatus        = item.status;
                    room.supplierReference = item.supplierReference;

                    hotelBookingDB.CancellationRooms.Add(room);
                }
            }
            hotelBookingDB.SaveChanges();
        }
        public static async Task <CancellationBookingData> CancelService(string Reference, string BN)
        {
            try
            {
                var    client = new HttpClient();
                var    Data   = new CancellationBookingData();
                string apiKey = ConfigurationSettings.AppSettings["HBToken"];
                string Secret = ConfigurationSettings.AppSettings["HBSecret"];

                if (apiKey == null)
                {
                    apiKey = "c2yc2s4vhhxqkhssr4p5jma6";
                }
                if (Secret == null)
                {
                    Secret = "UeF5JXgdqH";
                }
                //      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("-", "");
                }
                //      LogData.WriteToFile("c:/HotelsB2C/Logs/HBLogs/AvailabilityRequests", "AvailabilityRequest_" + SessionID, "AvailabilityRequest", Newtonsoft.Json.JsonConvert.SerializeObject(value));
                string path = ConfigurationSettings.AppSettings["HBCancelationEndPonit"];
                var    url  = path + Reference + "?cancellationFlag=CANCELLATION";


                client.DefaultRequestHeaders.Add("Api-Key", apiKey);
                client.DefaultRequestHeaders.Add("X-Signature", signature);
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();
                var response = client.DeleteAsync(url).Result;
                stopWatch.Stop(); TimeSpan ts1 = stopWatch.Elapsed;
                if (response.IsSuccessStatusCode)
                {
                    Data = await response.Content.ReadAsAsync <CancellationBookingData>();

                    LoggingHelper.WriteToFile("HBLogs/CancellationBooking", "CancellationBookingResponses_" + BN, "CancellationBookingResponses", "response time " + ts1.ToString() + Newtonsoft.Json.JsonConvert.SerializeObject(Data));

                    return(Data);
                }
                else
                {
                    LoggingHelper.WriteToFile("HBLogs/CancellationBookingResponses", "CancellationBookingResponses_" + BN, "CancellationBookingResponses", "response time " + ts1.ToString() + Newtonsoft.Json.JsonConvert.SerializeObject(response));

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

                LoggingHelper.WriteToFile("HBLogs/CancellationBookingException", "CancellationBookingException_" + BN, "ACancellationBookingException", requestData);
                return(null);
            }
        }