public AddressBookResponse UpdateAddressBookById(AddressBook addressBookData)
        {
            AddressBookResponse addressBookResponse = new AddressBookResponse();

            try
            {
                AddressBook data = this.context.AddressBooks.Where(s => s.Id == addressBookData.Id).FirstOrDefault();

                string beforeAddress = data.ConsigneeTranslatedAddress;

                data.ConsigneeTranslatedAddress = addressBookData.ConsigneeTranslatedAddress;
                data.ModifiedDate = DateTime.Now;

                this.context.AddressBooks.Update(data);
                this.context.Entry(addressBookData).State = EntityState.Detached;
                this.context.SaveChanges();
                addressBookResponse.AddressBookData = this.context.AddressBooks.Where(s => s.Id == addressBookData.Id).FirstOrDefault();
                addressBookResponse.Success         = true;
                addressBookResponse.BeforeAddress   = string.Empty;
                if (!string.Equals(beforeAddress, data.ConsigneeTranslatedAddress))
                {
                    addressBookResponse.BeforeAddress = beforeAddress;

                    var matchedShipments = this.context.shipmentDataRequests.Where(s => s.RCV_ADR_TE == addressBookData.ConsigneeAddress).ToList();
                    if (matchedShipments.Any())
                    {
                        matchedShipments.ForEach(shipment =>
                        {
                            shipment.SHP_ADR_TR_TE = data.ConsigneeTranslatedAddress;
                            shipment.SMT_STA_NR    = (int)Enums.ATStatus.Curated;
                        });

                        this.context.BulkUpdate(matchedShipments);
                    }
                }
                return(addressBookResponse);
            }
            catch (Exception ex)
            {
                addressBookResponse.Success = false;
                addressBookResponse.OperatonExceptionMessage = ex.Message;
            }
            return(addressBookResponse);
        }
        public override async Task <AddressBookResponse> Get(AddressBookRequest request, ServerCallContext context)
        {
            var listPerson = new List <Person>();

            if (string.IsNullOrWhiteSpace(request.Id))
            {
                listPerson.AddRange(this._people);
            }
            else
            {
                listPerson.Add(this._people.Single(x => x.Id == int.Parse(request.Id)));
            }

            var response = new AddressBookResponse()
            {
                People = { listPerson }
            };

            return(await Task.FromResult(response));
        }
        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));
        }