Exemplo n.º 1
0
        public async Task <Models.Result <bool?> > UpdateContactStatus(ContactUpdateStatus contactUpdateStatus)
        {
            var result = new Models.Result <bool?>();

            try
            {
                //Get contactEntity using GetSingleAsync to avoid tracking
                var contactEntity = await _contactRepository.GetSingleAsync(x => x.Id == contactUpdateStatus.Id);

                if (contactEntity == null)
                {
                    result.Data = false; //result.Data = false => controller will return 404
                    return(result);
                }

                //Check/Update contactEntity properties as per contactUpdateStatus provided
                if (!contactUpdateStatus.MapUpdatesToEntity(ref contactEntity))
                {
                    result.ErrorMessage = ERROR_UPDATE_CONTACT_NO_CHANGES_DETECTED;
                    return(result);
                }

                result.Data = await _contactRepository.UpdateAsync(contactEntity);
            }
            catch (Exception e)
            {
                result.ErrorMessage = LogError(e, "UpdateContactStatus", new object[] { contactUpdateStatus });
            }

            return(result);
        }