示例#1
0
        public ServiceResult <IList <ProdutoViewDTO> > GetProdutosAtivadosCategoria(int idCategoria)
        {
            _logger.LogDebug("A executar [CategoriaBusiness -> GetProdutosAtivadosCategoria]");
            IList <int>            erros           = new List <int>();
            IList <ProdutoViewDTO> produtosViewDTO = new List <ProdutoViewDTO>();

            if (!_categoriaDAO.ExisteCategoria(idCategoria))
            {
                _logger.LogWarning($"A Categoria com IdCategoria {idCategoria} não existe!");
                erros.Add((int)ErrosEnumeration.CategoriaNaoExiste);
            }
            else
            {
                if (_categoriaDAO.IsAtiva(idCategoria))
                {
                    IList <Produto> produtos = _categoriaDAO.GetProdutosAtivadosCategoria(idCategoria);
                    if (produtos != null)
                    {
                        string pathImagem = $"{_appSettings.ServerUrl}/Images/Produto";
                        foreach (Produto produto in produtos)
                        {
                            ProdutoViewDTO produtoViewDTO = _mapper.Map <ProdutoViewDTO>(produto);
                            produtoViewDTO.Url = new Uri($"{pathImagem}/{produto.IdProduto}.{produto.ExtensaoImagem}");
                            produtosViewDTO.Add(produtoViewDTO);
                        }
                    }
                }
                else
                {
                    _logger.LogDebug($"A Categoria com IdCategoria {idCategoria} encontra-se desativada!");
                    erros.Add((int)ErrosEnumeration.CategoriaDesativada);
                }
            }

            return(new ServiceResult <IList <ProdutoViewDTO> > {
                Erros = new ErrosDTO {
                    Erros = erros
                }, Sucesso = !erros.Any(), Resultado = produtosViewDTO
            });
        }
示例#2
0
        public ServiceResult <Tuple <string, string> > RegistarProduto(RegistarProdutoDTO model, string extensao)
        {
            _logger.LogDebug("A executar [ProdutoBusiness -> RegistarProduto]");
            if (string.IsNullOrWhiteSpace(model.Nome))
            {
                throw new ArgumentNullException("Nome", "Campo não poder ser nulo!");
            }
            if (model.Ingredientes == null)
            {
                throw new ArgumentNullException("Ingredientes", "Campo não poder ser nulo!");
            }
            if (model.Alergenios == null)
            {
                throw new ArgumentNullException("Alergenios", "Campo não poder ser nulo!");
            }
            if (extensao == null)
            {
                throw new ArgumentNullException("Extensao", "Campo não poder ser nulo!");
            }

            IList <int>            erros = new List <int>();
            Tuple <string, string> paths = null;

            if (_produtoDAO.ExisteNomeProduto(model.Nome))
            {
                _logger.LogDebug($"O Produto com o Nome {model.Nome} já existe.");
                Produto produto = _produtoDAO.GetProdutoNome(model.Nome);
                if (_produtoDAO.IsAtivo(produto.IdProduto))
                {
                    _logger.LogDebug($"O Produto com o Nome {model.Nome} já existe, com IdProdudo {produto.IdProduto} e encontra-se ativado.");
                    erros.Add((int)ErrosEnumeration.NomeProdutoJaExiste);
                }
                else
                {
                    _logger.LogDebug($"O Produto com o Nome {model.Nome} já existe, com IdProdudo {produto.IdProduto} e encontra-se desativado.");
                    erros.Add((int)ErrosEnumeration.ProdutoDesativado);
                }
            }
            else
            {
                if (!ValidaNome(model.Nome))
                {
                    _logger.LogDebug($"O Nome {model.Nome} é inválido.");
                    erros.Add((int)ErrosEnumeration.NomeProdutoInvalido);
                }
                if (!ValidaPreco(model.Preco))
                {
                    _logger.LogDebug($"O Preço {model.Preco} é inválido.");
                    erros.Add((int)ErrosEnumeration.PrecoProdutoInvalido);
                }
                if (!_categoriaDAO.ExisteCategoria(model.IdCategoria))
                {
                    _logger.LogWarning($"Não existe nenhuma Categoria com IdCategooria {model.IdCategoria}!");
                    erros.Add((int)ErrosEnumeration.CategoriaNaoExiste);
                }
                if (!ValidaIngredientes(model.Ingredientes))
                {
                    _logger.LogDebug($"O nome de um ingrediente é inválido.");
                    erros.Add((int)ErrosEnumeration.IngredientesProdutoInvalidos);
                }
                if (!ValidaAlergenios(model.Alergenios))
                {
                    _logger.LogDebug($"O nome de um alergenio é inválido.");
                    erros.Add((int)ErrosEnumeration.AlergeniosProdutoInvalidos);
                }

                if (!erros.Any())
                {
                    Produto produto = _mapper.Map <Produto>(model);
                    produto.ExtensaoImagem = extensao;
                    int    idProduto    = _produtoDAO.RegistarProduto(produto);
                    string pathAnterior = null;
                    string pathNova     = Path.Combine("Images", "Produto", $"{idProduto}.{extensao}");
                    paths = new Tuple <string, string>(pathAnterior, pathNova);
                }
            }
            return(new ServiceResult <Tuple <string, string> > {
                Erros = new ErrosDTO {
                    Erros = erros
                }, Sucesso = !erros.Any(), Resultado = paths
            });
        }