Exemplo n.º 1
0
        public IHttpActionResult ObterParaFiltro(string codigoInterno, string tipoValidacao = null, string dadosAdicionaisValidacao = null)
        {
            if (string.IsNullOrWhiteSpace(codigoInterno))
            {
                return(this.ErroValidacao("O código do produto é obrigatório."));
            }

            dadosAdicionaisValidacao = new ConversorDadosAdicionaisParaValidacao()
                                       .ConverterDadosCodificados(dadosAdicionaisValidacao);

            var estrategiaValidacao = ValidacaoFactory.ObterEstrategiaFiltro(this, tipoValidacao);

            using (var sessao = new GDATransaction())
            {
                var validacao = estrategiaValidacao.ValidarAntesBusca(sessao, codigoInterno, dadosAdicionaisValidacao);

                if (validacao != null)
                {
                    return(validacao);
                }

                var produto = ProdutoDAO.Instance.GetByCodInterno(sessao, codigoInterno);

                if (produto == null)
                {
                    return(this.NaoEncontrado(string.Format("Produto {0} não encontrado.", codigoInterno)));
                }

                validacao = estrategiaValidacao.ValidarDepoisBusca(sessao, codigoInterno, dadosAdicionaisValidacao, produto);

                if (validacao != null)
                {
                    return(validacao);
                }

                var produtoDto = estrategiaValidacao.ObterProduto(sessao, dadosAdicionaisValidacao, produto);
                return(this.Item(produtoDto));
            }
        }
Exemplo n.º 2
0
        public IHttpActionResult CalcularAreaM2([FromBody] Models.Produtos.V1.CalculoAreaM2.DadosProdutoDto dadosProduto)
        {
            if (dadosProduto == null)
            {
                return(this.ErroValidacao("Os dados do produto são obrigatórios."));
            }

            dadosProduto.DadosAdicionaisValidacao = new ConversorDadosAdicionaisParaValidacao()
                                                    .ConverterDadosCodificados(dadosProduto.DadosAdicionaisValidacao);

            var estrategiaValidacao = ValidacaoFactory.ObterEstrategiaCalculoAreaM2(this, dadosProduto.TipoValidacao);

            using (var sessao = new GDATransaction())
            {
                var validacao = estrategiaValidacao.ValidarAntesCalculo(sessao, dadosProduto.DadosAdicionaisValidacao);

                if (validacao != null)
                {
                    return(validacao);
                }

                var areaCalculada = new AreaCalculadaDto
                {
                    AreaM2        = this.CalcularAreaM2Real(sessao, dadosProduto),
                    AreaM2Calculo = this.CalcularAreaM2Calculo(sessao, dadosProduto, true),
                    AreaM2CalculoSemChapaDeVidro = this.CalcularAreaM2Calculo(sessao, dadosProduto, false),
                };

                validacao = estrategiaValidacao.ValidarDepoisCalculo(sessao, areaCalculada, dadosProduto.DadosAdicionaisValidacao);

                if (validacao != null)
                {
                    return(validacao);
                }

                return(this.Item(areaCalculada));
            }
        }
Exemplo n.º 3
0
        public IHttpActionResult CalcularTotal([FromBody] Models.Produtos.V1.CalculoTotal.DadosProdutoDto dadosProduto)
        {
            if (dadosProduto == null)
            {
                return(this.ErroValidacao("Os dados do produto são obrigatórios."));
            }

            dadosProduto.DadosAdicionaisValidacao = new ConversorDadosAdicionaisParaValidacao()
                                                    .ConverterDadosCodificados(dadosProduto.DadosAdicionaisValidacao);

            var estrategiaValidacao = ValidacaoFactory.ObterEstrategiaCalculoTotal(this, dadosProduto.TipoValidacao);

            using (var sessao = new GDATransaction())
            {
                var validacao = estrategiaValidacao.ValidarAntesCalculo(sessao, dadosProduto.DadosAdicionaisValidacao);

                if (validacao != null)
                {
                    return(validacao);
                }

                var totalCalculado = new TotalCalculadoDto
                {
                    Total = this.CalcularTotal(sessao, dadosProduto),
                };

                validacao = estrategiaValidacao.ValidarDepoisCalculo(sessao, totalCalculado, dadosProduto.DadosAdicionaisValidacao);

                if (validacao != null)
                {
                    return(validacao);
                }

                return(this.Item(totalCalculado));
            }
        }
Exemplo n.º 4
0
        public IHttpActionResult ObterFiltro(int?id = null, string nome = null, string tipoValidacao = null)
        {
            if (id == null && string.IsNullOrWhiteSpace(nome))
            {
                return(this.ErroValidacao("Pelo menos um filtro (id ou nome) deve ser informado."));
            }

            var estrategiaValidacao = ValidacaoFactory.ObterEstrategiaFiltro(this, tipoValidacao);

            using (var sessao = new GDATransaction())
            {
                var validacao = estrategiaValidacao.ValidarAntesBusca(sessao, id, nome);

                if (validacao != null)
                {
                    return(validacao);
                }

                var clientes = ClienteDAO.Instance.ObterClientesPorIdENome(
                    sessao,
                    id.GetValueOrDefault(),
                    nome,
                    0,
                    10);

                clientes  = clientes.ToList();
                validacao = estrategiaValidacao.ValidarDepoisBusca(sessao, id, nome, ref clientes);

                if (validacao != null)
                {
                    return(validacao);
                }

                return(this.Lista(clientes.Select(c => new ClienteDto(c, tipoValidacao))));
            }
        }