示例#1
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));
            }
        }
 /// <inheritdoc/>
 public IHttpActionResult ValidarDepoisCalculo(GDASession sessao, AreaCalculadaDto areaCalculada, string dadosAdicionaisValidacao)
 {
     return(null);
 }