Esempio n. 1
0
        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
            });
        }
Esempio n. 2
0
        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));
            }
        }