private void btnUpdateETN_Click(object sender, EventArgs e)
        {
            APIRequestResponse apiResponse      = new APIRequestResponse();
            string             tokenReturnValue = string.Empty;
            string             tokenvalue       = string.Empty;

            System.Net.WebRequest req = System.Net.WebRequest.Create("http://129.232.164.178/BIPEXAPI/Authentication?username=LandseaAPIUser&password=ujD@wxxg_z3Eg9aK");
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method      = "GET";

            string tokenResponse = string.Empty;

            System.Net.WebResponse resp = req.GetResponse();
            if (resp == null)
            {
                MessageBox.Show("Authentication Failed");
                return;
            }

            using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
            {
                tokenResponse = sr.ReadToEnd().Trim();
            }
            if (!string.IsNullOrEmpty(tokenResponse))
            {
                tokenReturnValue = "Data";
                tokenvalue       = JObject.Parse(tokenResponse)[tokenReturnValue].ToString();
            }

            ETNNumberModel model = new ETNNumberModel
            {
                CaroWiseKey      = "S00001006",
                ETNNumber        = "DOC16",
                GIBInvoiceNumber = "LSG00000000001"
            };

            // Update ETN Numbers linked to Cargo Wise key
            System.Net.ServicePointManager.ServerCertificateValidationCallback += (senderDetail, certificate, chain, sslPolicyErrors) => true;
            using (HttpClient client = new HttpClient(new HttpClientHandler {
                ClientCertificateOptions = ClientCertificateOption.Automatic
            }))
            {
                string landseaAPIURL = "http://129.232.164.178/LandSeaGlobal/LandseaAPI/api/ETNNumber/";
                //string landseaAPIURL = "http://localhost:51203/api/ETNNumber/";
                client.BaseAddress = new Uri(landseaAPIURL);

                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("BIPASK", tokenvalue);
                client.DefaultRequestHeaders.Add("BIPASK", authToken);
                HttpResponseMessage res = client.PutAsJsonAsync("Update", model).Result;

                if (res.IsSuccessStatusCode)
                {
                    apiResponse = res.Content.ReadAsAsync <APIRequestResponse>().Result;
                    MessageBox.Show(apiResponse.ToString());
                }
                else
                {
                    string resultString = res.Content.ReadAsStringAsync().Result;
                    MessageBox.Show(resultString);
                }
            }
        }
        public RequestReponse Update([FromBody] ETNNumberModel etnDetail)
        {
            RequestReponse result = new RequestReponse();

            try
            {
                string msg = string.Empty;

                if (string.IsNullOrEmpty(etnDetail.CaroWiseKey))
                {
                    result.Success       = false;
                    result.Message       = "Update ETN Number failed!";
                    result.MessageDetail = "CargoWise Key value is missing";
                    return(result);
                }

                if (!LoadSettings())
                {
                    result.Success       = false;
                    result.Message       = "ETA Number Update failed!";
                    result.MessageDetail = "Failed to read configuration settings";
                    return(result);
                }

                if (!GenerateBIPToken())
                {
                    result.Success       = false;
                    result.Message       = "ETA Number Update failed!";
                    result.MessageDetail = "Internal security token generation failed";
                    return(result);
                }

                ProcessLogs.bipToken    = bipToken;
                ProcessLogs.logFilePath = logFilePath;
                ProcessLogs.webApiUrl   = bipAPIURL;

                using (CargoWiseFileProvider provider = new CargoWiseFileProvider())
                {
                    if (!provider.UpdateETNNumber(etnDetail, ref msg))
                    {
                        result.Success       = false;
                        result.Message       = "ETA Number Update Failed!";
                        result.MessageDetail = msg;
                    }
                    else
                    {
                        result.Success       = true;
                        result.Message       = "ETA Number successfully updated.";
                        result.MessageDetail = string.Empty;
                    }
                }

                #region BIP Message
                //we need to create a new message in BIP
                BaseMessage bmessage = new BaseMessage();
                List <MessageHistoryModel> newHistory = new List <MessageHistoryModel>();

                using (DataSet ds = new DataSet("ETNNUmberUpdate"))
                {
                    using (DataTable dt = new DataTable("RequestDetail"))
                    {
                        dt.Columns.Add("Key", typeof(string));
                        dt.Columns.Add("ETNNumber", typeof(string));
                        dt.Columns.Add("GIBInvoiceNumber", typeof(string));
                        dt.Columns.Add("ResultMsg", typeof(string));
                        dt.Columns.Add("ResultDetailMsg", typeof(string));
                        dt.AcceptChanges();

                        DataRow dr = dt.NewRow();
                        dr["Key"]              = etnDetail.CaroWiseKey;
                        dr["ETNNumber"]        = etnDetail.ETNNumber;
                        dr["GIBInvoiceNumber"] = etnDetail.GIBInvoiceNumber;
                        dr["ResultMsg"]        = result.Message;
                        dr["ResultDetailMsg"]  = result.MessageDetail;

                        dt.Rows.Add(dr);
                        dt.AcceptChanges();

                        ds.Tables.Add(dt);
                        ds.AcceptChanges();

                        using (TextWriter write = new StringWriter())
                        {
                            //convert the results into xml
                            ds.WriteXml(write);
                            //also convert the xml into byte arry
                            bmessage.Context = new byte[write.ToString().Length *sizeof(char)];
                            System.Buffer.BlockCopy(write.ToString().ToCharArray(), 0, bmessage.Context, 0, bmessage.Context.Length);
                        }
                    }
                }

                if (result.Success)
                {
                    bmessage.PublishMessageID = (int)InternalStatus.Processing;
                    bmessage.MessageStatus    = InternalStatus.Processing;
                    newHistory.Add(new MessageHistoryModel
                    {
                        EventDesc        = "Request received from LandSea XML API Service - Update ETN Number",
                        ProfileProcessID = ProfileProcessID,
                        EventTypeID      = (byte)EventLogType.Information,
                        MessageStatusID  = 1,
                        DoneBy           = "LandSea API Service"
                    });
                }
                else
                {
                    bmessage.PublishMessageID = (int)InternalStatus.Suspended;
                    bmessage.MessageStatus    = InternalStatus.Suspended;
                    newHistory.Add(new MessageHistoryModel
                    {
                        EventDesc        = result.Message + " Detail: " + result.MessageDetail,
                        ProfileProcessID = ProfileProcessID,
                        EventTypeID      = (byte)EventLogType.Error,
                        MessageStatusID  = 2,
                        DoneBy           = "LandSea API Service"
                    });
                }
                bmessage.PromoteValue("CargoWiseKey", etnDetail.CaroWiseKey);
                bmessage.PromoteValue("ETNNumber", etnDetail.ETNNumber);
                bmessage.PromoteValue("GIBInvoiceNumber", etnDetail.GIBInvoiceNumber);
                bmessage.webApiUrl        = bipAPIURL;
                bmessage.bipToken         = bipToken;
                bmessage.AttachmentID     = 0;
                bmessage.XMLContext       = string.Empty;
                bmessage.ProfileID        = ActiveProfileID;
                bmessage.CreatedBy        = "LandSea XML API Service";
                bmessage.ReProcessed      = false;
                bmessage.PublishMessageID = null;
                bmessage.ProfileProcessID = ProfileProcessID;

                bool saveResult = true;
                using (UpdateMessage sMessage = new BIP.MessageUtils.UpdateMessage())
                {
                    saveResult = sMessage.SaveMessageDetail(bmessage, newHistory, BIP.Enum.MessageType.Incomming, ref msg);
                }

                if (!saveResult)
                {
                    result.Success       = false;
                    result.Message       = "Failed to Update BIP process";
                    result.MessageDetail = msg;
                }
                #endregion BIP Message
            }
            catch (Exception ex)
            {
                result.Success       = false;
                result.Message       = ex.Message;
                result.MessageDetail = ExceptionDetail.GetExceptionFullMessage(ex);

                ProcessLogs.UpdateProfileHistory(result.Message, BIP.Enum.EventLogType.Error, ActiveProfileID);
            }

            return(result);
        }