public async Task <Result <AutorModel> > UpdateAutorAsync(Guid autorId, AutorModel autorModel) { Guard.Against.NullOrEmpty(autorId, "AutorId"); var autor = await _repositorio.GetByIdAsync(autorId); if (autor is null) { _logger.LogWarning("Não foi encontrado autor com id igual a '{0}'", autorId); return(Result <AutorModel> .NotFound()); } autor.Nome = !string.IsNullOrEmpty(autorModel.Nome) && autor.Nome != autorModel.Nome ? autorModel.Nome : autor.Nome; autor.Sobrenome = !string.IsNullOrEmpty(autorModel.Sobrenome) && autor.Sobrenome != autorModel.Sobrenome ? autorModel.Sobrenome : autor.Sobrenome; autor.Email = !string.IsNullOrEmpty(autorModel.Nome) && autor.Email != autorModel.Email ? autorModel.Email : autor.Email; autor.Bio = autor.Bio != autorModel.Bio ? autorModel.Bio : autor.Bio; autor.Avatar = autor.Avatar != autorModel.Avatar ? autorModel.Avatar : autor.Avatar; autor.DataAtualizacao = DateTime.Now; var validator = new AutorValidator(); var resultValidation = validator.Validate(autor); if (!resultValidation.IsValid) { _logger.LogWarning("Atualização do autor não passou na validação. Erros: {0}", resultValidation.Errors.ToJson()); return(Result <AutorModel> .Invalid(resultValidation.AsErrors())); } await _repositorio.UpdateAsync(autor); _logger.LogInformation("Autor foi atualizado com sucesso"); return(Result <AutorModel> .Success( _mapper.Map <AutorModel>(autor))); }
public async Task <Result <AutorModel> > AddAutorAsync(AutorModel autor) { var novoAutor = _mapper.Map <Autor>(autor); var validator = new AutorValidator(); var resultValidation = validator.Validate(novoAutor); if (!resultValidation.IsValid) { _logger.LogWarning("Novo autor não passou na validação. Erros: {0}", resultValidation.Errors.ToJson()); return(Result <AutorModel> .Invalid(resultValidation.AsErrors())); } var autorAdicionado = await _repositorio.AddAsync(novoAutor); Guard.Against.Null(autorAdicionado, "Novo Autor"); _logger.LogInformation("Novo autor foi inserido com sucesso"); return(Result <AutorModel> .Success( _mapper.Map <AutorModel>(autorAdicionado))); }