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 List <AddressAuditLogRequest> GetAll()
        {
            List <AddressAuditLogRequest> addressAuditLogRequests = new List <AddressAuditLogRequest>();
            var auditListByName = from a in context.AddressAuditLogRequests
                                  join us in context.UserData on(int?) a.UPD_BY equals us.ID
                                  orderby a.ID descending
                                  select new
            {
                a.ID,
                a.SMT_ID,
                a.CSG_ADR,
                a.BFR_ADR,
                a.AFR_ADR,
                a.UPD_BY,
                a.UPD_FRM,
                a.UPD_DT,
                UPD_BY_TE = us.FirstName + " " + us.LastName,
                a.WFL_ID
            };

            foreach (var aaloglist in auditListByName)
            {
                AddressAuditLogRequest addrauditlog = new AddressAuditLogRequest();
                addrauditlog.ID        = aaloglist.ID;
                addrauditlog.SMT_ID    = aaloglist.SMT_ID;
                addrauditlog.CSG_ADR   = aaloglist.CSG_ADR;
                addrauditlog.BFR_ADR   = aaloglist.BFR_ADR;
                addrauditlog.AFR_ADR   = aaloglist.AFR_ADR;
                addrauditlog.UPD_BY    = aaloglist.UPD_BY;
                addrauditlog.UPD_FRM   = aaloglist.UPD_FRM;
                addrauditlog.UPD_DT    = aaloglist.UPD_DT;
                addrauditlog.UPD_BY_TE = aaloglist.UPD_BY_TE;
                addrauditlog.WFL_ID    = aaloglist.WFL_ID;
                addressAuditLogRequests.Add(addrauditlog);
            }

            return(addressAuditLogRequests);
        }
        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));
        }