public async Task <Result <EditoraModel> > UpdateEditoraAsync(Guid editoraId, EditoraModel editoraModel)
        {
            Guard.Against.NullOrEmpty(editoraId, "EditoraId");

            var editora = await _repositorio.GetByIdAsync(editoraId);

            if (editora is null)
            {
                _logger.LogWarning("Não foi encontrado editora com id igual a '{0}'", editoraId);
                return(Result <EditoraModel> .NotFound());
            }

            editora.Nome            = !string.IsNullOrEmpty(editoraModel.Nome) && editora.Nome != editoraModel.Nome ? editoraModel.Nome : editora.Nome;
            editora.SiteURL         = editora.SiteURL != editoraModel.SiteURL ? editoraModel.SiteURL : editora.SiteURL;
            editora.Endereco        = !string.IsNullOrEmpty(editoraModel.Endereco) && editora.Endereco != editoraModel.Endereco ? editoraModel.Endereco : editora.Endereco;
            editora.DataAtualizacao = DateTime.Now;

            var validator        = new EditoraValidator();
            var resultValidation = validator.Validate(editora);

            if (!resultValidation.IsValid)
            {
                _logger.LogWarning("Atualização da editora não passou na validação. Erros: {0}", resultValidation.Errors.ToJson());
                return(Result <EditoraModel> .Invalid(resultValidation.AsErrors()));
            }

            await _repositorio.UpdateAsync(editora);

            _logger.LogInformation("Editora foi atualizada com sucesso", editora.ToJson());
            return(Result <EditoraModel> .Success(
                       _mapper.Map <EditoraModel>(editora)));
        }
        public async Task <Result <EditoraModel> > AddEditoraAsync(EditoraModel editora)
        {
            var novaEditora = _mapper.Map <Editora>(editora);
            var validator   = new EditoraValidator();

            var resultValidation = validator.Validate(novaEditora);

            if (!resultValidation.IsValid)
            {
                _logger.LogWarning("Nova editora não passou na validação. Erros: {0}", resultValidation.Errors.ToJson());
                return(Result <EditoraModel> .Invalid(resultValidation.AsErrors()));
            }

            var editoraAdicionada = await _repositorio.AddAsync(novaEditora);

            Guard.Against.Null(editoraAdicionada, "Novo editora");

            _logger.LogInformation("Nova editora foi inserida com sucesso");
            return(Result <EditoraModel> .Success(
                       _mapper.Map <EditoraModel>(editoraAdicionada)));
        }