コード例 #1
0
        public async Task <IActionResult> EditarProduto([FromForm] EditarProdutoDTO model)
        {
            _logger.LogDebug("A executar api/produto/editar -> Post");
            if (model is null)
            {
                _logger.LogWarning("O objeto EditarProdutoDTO é null!");
                return(BadRequest(nameof(model)));
            }
            try
            {
                ServiceResult <string> resultadoValidacaoImagem = _imagemService.ValidaImagem(model.File);
                if (!resultadoValidacaoImagem.Sucesso)
                {
                    _logger.LogInformation("O ficheiro não é válido para o sistema.");
                    return(BadRequest(resultadoValidacaoImagem.Erros));
                }
                else
                {
                    ServiceResult <Tuple <string, string> > resultado = _produtoBusiness.EditarProduto(model, resultadoValidacaoImagem.Resultado);
                    if (resultado.Sucesso)
                    {
                        await _imagemService.GuardarImagem(model.File, resultado.Resultado.Item1, resultado.Resultado.Item2, _webHostEnvironment.WebRootPath.ToString());

                        _logger.LogInformation($"O Produto com IdProduto {model.IdProduto} foi editado, com o nome {model.Nome}, com o preço {model.Preco} pertencente à Categoria com IdCategoria {model.IdCategoria}.");
                        return(Ok());
                    }
                    else
                    {
                        _logger.LogInformation($"Ocorreu um erro ao editar o Produto com IdProduto {model.IdProduto}.");
                        return(BadRequest(resultado.Erros));
                    }
                }
            }
            catch (ArgumentNullException e)
            {
                _logger.LogError(e, e.Message);
                return(BadRequest(new { message = e.Message }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(StatusCode(500));
            }
        }