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)); } }