public AddressAuditLogResponse Insert(AddressAuditLogRequest addressAuditLogRequest)
        {
            AddressAuditLogResponse addressAuditLogResponse = new AddressAuditLogResponse();

            try
            {
                this.context.AddressAuditLogRequests.Add(addressAuditLogRequest);
                this.context.Entry(addressAuditLogRequest).State = EntityState.Added;
                this.context.SaveChanges();
                addressAuditLogResponse.AddressAuditLogRequestList = this.context.AddressAuditLogRequests.Where(a => a.ID == addressAuditLogRequest.ID);
                addressAuditLogResponse.Success = true;
                return(addressAuditLogResponse);
            }
            catch (Exception exception)
            {
                addressAuditLogResponse.Success = false;
                addressAuditLogResponse.OperatonExceptionMessage = exception.Message;
            }
            return(addressAuditLogResponse);
        }
        public IActionResult UpdateAddressBookById([FromBody] AddressBook addressBookData)
        {
            AddressBookResponse addressBookResponse = this.addressBookService.UpdateAddressBookById(addressBookData);

            if (addressBookResponse.Success && !string.IsNullOrEmpty(addressBookResponse.BeforeAddress))
            {
                try
                {
                    int userId = Convert.ToInt32(HttpContext.User.Claims.FirstOrDefault(x => x.Type == JwtConstant.UserId).Value);
                    //AddressAuditLog Update
                    AddressAuditLogRequest addressAuditLogRequest = new AddressAuditLogRequest();
                    addressAuditLogRequest.SMT_ID  = addressBookResponse.AddressBookData.ShipmentId;
                    addressAuditLogRequest.CSG_ADR = addressBookResponse.AddressBookData.ConsigneeAddress;
                    addressAuditLogRequest.BFR_ADR = addressBookResponse.BeforeAddress;
                    addressAuditLogRequest.AFR_ADR = addressBookData.ConsigneeTranslatedAddress;
                    addressAuditLogRequest.UPD_BY  = userId;
                    addressAuditLogRequest.UPD_FRM = "AddressBook";
                    addressAuditLogRequest.UPD_DT  = DateTime.Now;
                    addressAuditLogRequest.WFL_ID  = addressBookData.WFL_ID;
                    AddressAuditLogResponse addressAuditLogResponse = this.addressAuditLogService.Insert(addressAuditLogRequest);
                    if (addressAuditLogResponse.Success)
                    {
                        // TO DO
                    }
                    else
                    {
                        // Log the error here
                    }
                }
                catch (Exception ex)
                {
                    AuditEventEntry.WriteEntry(ex);
                }
            }
            return(Ok(addressBookResponse));
        }
        public async Task <ActionResult> UpdateShipmentAddressById([FromBody] ShipmentDataRequest shipmentDataRequest)
        {
            //shipmentService = new ShipmentService();
            string id = HttpContext.User.Claims.FirstOrDefault(x => x.Type == JwtConstant.UserId)?.Value;

            int userId = !string.IsNullOrEmpty(id) ? Convert.ToInt32(id) : 0;
            ShipmentDataResponse shipmentDataResponse = _shipmentService.UpdateShipmentAddressById(shipmentDataRequest);

            if (shipmentDataResponse.Success && !string.IsNullOrEmpty(shipmentDataResponse.BeforeAddress))
            {
                try
                {
                    //AddressAuditLog Update
                    AddressAuditLogRequest addressAuditLogRequest = new AddressAuditLogRequest();
                    addressAuditLogRequest.SMT_ID  = shipmentDataRequest.ID;
                    addressAuditLogRequest.CSG_ADR = shipmentDataRequest.RCV_ADR_TE;
                    addressAuditLogRequest.BFR_ADR = shipmentDataResponse.BeforeAddress;
                    addressAuditLogRequest.AFR_ADR = shipmentDataResponse.ShipmentDataRequest.SHP_ADR_TR_TE;
                    addressAuditLogRequest.UPD_BY  = userId;
                    addressAuditLogRequest.UPD_FRM = "Shipment";
                    addressAuditLogRequest.UPD_DT  = DateTime.Parse(DateTime.Now.ToString()).ToLocalTime();
                    addressAuditLogRequest.WFL_ID  = shipmentDataResponse.ShipmentDataRequest.WFL_ID;
                    AddressAuditLogResponse addressAuditLogResponse = addressAuditLogService.Insert(addressAuditLogRequest);
                    if (addressAuditLogResponse.Success)
                    {
                        // TO DO
                    }
                    else
                    {
                        // Log the error here
                    }
                }
                catch (Exception ex)
                {
                }
            }

            //we need to update the workflow status
            int?workflowstatus = _shipmentService.SelectShipmentTotalStatusByWorkflowId(shipmentDataRequest.WFL_ID);
            WorkflowDataRequest workflowDataRequest = new WorkflowDataRequest();

            workflowDataRequest.ID         = shipmentDataRequest.WFL_ID;
            workflowDataRequest.WFL_STA_TE = workflowstatus;
            _workflowService.UpdateWorkflowStatusById(workflowDataRequest);

#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
            Task.Run(() => iCustomLog.AddLogEntry(new UPS.DataObjects.LogData.LogDataModel()
            {
                apiTypes       = UPS.DataObjects.LogData.APITypes.EFCoreContext,
                apiType        = Enum.GetName(typeof(UPS.DataObjects.LogData.APITypes), 6),
                dateTime       = System.DateTime.Now,
                LogInformation = new UPS.DataObjects.LogData.LogInformation()
                {
                    LogException = null,
                    LogRequest   = JsonConvert.SerializeObject(shipmentDataRequest),
                    LogResponse  = JsonConvert.SerializeObject(shipmentDataResponse)
                }
            }));
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed

            return(Ok(shipmentDataResponse));
        }