public ServiceResult <Tuple <string, string> > RegistarCategoria(RegistarCategoriaDTO model, string extensao) { _logger.LogDebug("A executar [CategoriaBusiness -> RegistarCategoria]"); if (string.IsNullOrWhiteSpace(model.Nome)) { throw new ArgumentNullException("Nome", "Campo não poder ser nulo!"); } if (extensao is null) { throw new ArgumentNullException("Extensao", "Campo não poder ser nulo!"); } IList <int> erros = new List <int>(); Tuple <string, string> paths = null; if (_categoriaDAO.ExisteNomeCategoria(model.Nome)) { _logger.LogDebug($"A Categoria com o Nome {model.Nome} já existe."); Categoria categoria = _categoriaDAO.GetCategoriaNome(model.Nome); if (_categoriaDAO.IsAtiva(categoria.IdCategoria)) { _logger.LogDebug($"A Categoria com o Nome {model.Nome} já existe, com IdCategoria {categoria.IdCategoria} e encontra-se ativada."); erros.Add((int)ErrosEnumeration.NomeCategoriaJaExiste); } else { _logger.LogDebug($"A Categoria com o Nome {model.Nome} já existe, com IdCategoria {categoria.IdCategoria} e encontra-se desativada."); erros.Add((int)ErrosEnumeration.CategoriaDesativada); } } else { if (!ValidaNome(model.Nome)) { _logger.LogDebug($"O Nome {model.Nome} é inválido."); erros.Add((int)ErrosEnumeration.NomeCategoriaInvalido); } if (!erros.Any()) { Categoria categoria = _mapper.Map <Categoria>(model); categoria.ExtensaoImagem = extensao; int idCategoria = _categoriaDAO.RegistarCategoria(categoria); string pathAnterior = null; string pathNova = Path.Combine("Images", "Categoria", $"{idCategoria}.{extensao}"); paths = new Tuple <string, string>(pathAnterior, pathNova); } } return(new ServiceResult <Tuple <string, string> > { Erros = new ErrosDTO { Erros = erros }, Sucesso = !erros.Any(), Resultado = paths }); }
public async Task <IActionResult> RegistarCategoria([FromForm] RegistarCategoriaDTO model) { _logger.LogDebug("A executar api/categoria/registar -> Post"); if (model is null) { _logger.LogWarning("O objeto RegistarCategoriaDTO é 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 = _categoriaBusiness.RegistarCategoria(model, resultadoValidacaoImagem.Resultado); if (resultado.Sucesso) { await _imagemService.GuardarImagem(model.File, resultado.Resultado.Item1, resultado.Resultado.Item2, _webHostEnvironment.WebRootPath); _logger.LogInformation($"A Categoria com nome {model.Nome} foi registado com sucesso."); return(Ok()); } else { _logger.LogInformation($"Ocorreu um erro ao registar a categoria 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)); } }