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