예제 #1
0
        public async Task <IActionResult> RegistarProduto([FromForm] RegistarProdutoDTO model)
        {
            _logger.LogDebug("A executar api/produto/registar -> Post");
            if (model is null)
            {
                _logger.LogWarning("O objeto RegistarProdutoDTO é 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.RegistarProduto(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 nome {model.Nome}, com o preço {model.Preco} pertencente à categoria com idCategoria {model.IdCategoria} foi registado com sucesso.");
                        return(Ok());
                    }
                    else
                    {
                        _logger.LogInformation($"Ocorreu um erro ao registar o Produto com nome {model.Nome}.");
                        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));
            }
        }