public async Task <Contato> EditarAsync(Contato contato) { var idade = CalcularIdade(contato.DataNascimento); if (!ValidarIdadeContato(idade)) { throw new NegocioException($"Contato {contato.Nome} não tem permissão para ser editado, pois tem idade inferior a 5 anos"); } var contatoBase = _contatoRepositorio.ObterPorId(contato.Id); if (contatoBase == null) { throw new NegocioException($"Contato não encontrado para o id: {contato.Id}"); } if (ExisteContatoCadastrado(contato.Nome) && contato.Id != contatoBase.Id) { throw new NegocioException($"Já existe registro do contato {contato.Nome} na base de dados."); } var contatoOld = new Contato(contatoBase); contatoBase.Nome = contato.Nome; contatoBase.Sexo = contato.Sexo; contatoBase.DataNascimento = contato.DataNascimento; contatoBase.Idade = idade; return(await Task.FromResult(_contatoRepositorio.Editar(contatoOld, contatoBase))); }