Exemplo n.º 1
0
        /// <summary>
        /// Preenche as dependências com os demais produtos
        /// </summary>
        /// <param name="produtoApi">produto (Api)</param>
        /// <param name="produto">produto (Esb)</param>
        /// <param name="produtos">produtos do modelo (Esb)</param>
        private void PreencherDependencias(Model.Produto produtoApi, Contrato.ProdutoNegociado produto, List <Contrato.ProdutoNegociado> produtos)
        {
            produtoApi.DependenciasProdutos = new List <DependenciaProduto>();
            foreach (Contrato.DependenciaProdutoNegociado dep in produto.Dependencias)
            {
                var dependencia = new DependenciaProduto
                {
                    ProdutoId = produtos.FirstOrDefault(p => p.Id == dep.ProdutoId)?.CodigoPlanoSysPrev,
                    Tipo      = new TipoDependenciaProduto
                    {
                        Id        = dep.TipoId,
                        Descricao = ((TipoDependenciaProdutoEnum)dep.TipoId).GetDescription()
                    }
                };

                produtoApi.DependenciasProdutos.Add(dependencia);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// ## REVER PUBLIC ##
        /// Constrói um objeto de produto para retorno com o resultado dos serviços de produtos e de limites
        /// </summary>
        /// <param name="produto">Produto negociado</param>
        /// <param name="limites">Limites operacionais</param>
        /// <returns>produto (Api)</returns>
        public Produto ObterProduto(Contrato.ProdutoNegociado produto, List <Contrato.LimiteOperacionalPorFaixa> limites, List <Contrato.ProdutoNegociado> produtos)
        {
            var produtoApi = new Model.Produto
            {
                Id                    = produto.CodigoPlanoSysPrev,
                IdEsim                = produto.Id,
                Descricao             = produto.NomeFantasia,
                DescricaoComercial    = produto.DescricaoComercial ?? "",
                DataUltimaAlteracao   = DateTime.Now,
                Obrigatorio           = produto.ContratacaoObrigatoria,
                EstahRestrito         = produto.EstahRestrito,
                ReferenciaCoberturaId = produto.ReferenciaCoberturaId,

                TipoProponente = new TipoProponente
                {
                    Id        = produto.TipoProponente,
                    Descricao = ((TipoProponenteEnum)produto.TipoProponente).GetDescription()
                }
            };

            /*alterar*/
            produtoApi.Periodicidades = produto.RegraCobranca.Periodicidades.Select(p => new Periodicidade {
                Id = p, Descricao = ((PeriodicidadeEnum)p).GetDescription()
            }).ToList();

            produtoApi.Fundos              = new List <Model.Fundo>();
            produtoApi.Coberturas          = new List <Cobertura>();
            produtoApi.ProfissoesRecusadas = new List <int>();
            produtoApi.UFsRecusadas        = new List <string>();
            produtoApi.IdadeAntecipacao    = new List <int>();
            produtoApi.TempoAntecipacao    = new List <int>();
            produtoApi.PrazoDecrescimo     = new List <int>();
            produtoApi.PrazoCerto          = new List <int>();
            produtoApi.PrazoRenda          = new List <PrazoRenda>();

            foreach (Contrato.CoberturaProdutoNegociado cobertura in produto.Coberturas)
            {
                if (cobertura.CodigoBeneficioSysPrev == 0)
                {
                    continue;
                }

                var produtoCobertura = new Cobertura();
                produtoCobertura.Id                                 = cobertura.CodigoBeneficioSysPrev;
                produtoCobertura.IdEsim                             = cobertura.ItemProdutoId;
                produtoCobertura.IdCoberturaEsim                    = cobertura.CoberturaId;
                produtoCobertura.Descricao                          = cobertura.NomeFantasia;
                produtoCobertura.DescricaoComercial                 = cobertura.DescricaoComercial ?? "";
                produtoCobertura.Obrigatoria                        = cobertura.ItemProdutoObrigatorio;
                produtoCobertura.IdadeMinima                        = cobertura.IdadeMinima;
                produtoCobertura.IdadeMaxima                        = cobertura.IdadeMaxima;
                produtoCobertura.IdadeExclusao                      = cobertura.IdadeExclusao;
                produtoCobertura.ExigeDPS                           = cobertura.ExigeDps;
                produtoCobertura.CoberturaPrincipal                 = cobertura.CoberturaId == produto.ReferenciaCoberturaId;
                produtoCobertura.ValorFixo                          = ObterValorFixo(cobertura);
                produtoCobertura.CapitalFixo                        = ObterCapitalFixo(cobertura);
                produtoCobertura.IndicarBeneficiario                = cobertura.BeneficiariosPossiveis.Contains((int)TipoBeneficiarioPossivelEnum.BeneficiarioIndicado); /*verificar*/
                produtoCobertura.TaxaFixa                           = cobertura.TaxaFixa;
                produtoCobertura.EhServico                          = cobertura.EhServico;
                produtoCobertura.ValoresRepassadoAoCliente          = cobertura.ValoresRepassadoAoCliente;
                produtoCobertura.ExibeServicoNaListaDeCobertura     = cobertura.ExibeServicoNaListaDeCobertura;
                produtoCobertura.ClasseDeRiscoPadraoParaContratacao = cobertura.ClasseDeRiscoPadraoParaContratacao;
                produtoCobertura.Rendas                             = cobertura.Rendas;
                produtoCobertura.FormasContratacao                  = cobertura.FormasContratacao;
                produtoCobertura.CapitalSegurado                    = cobertura.TaxaFixa ? cobertura.ValorCapitalFixo.GetValueOrDefault() : 1000M;

                PreencherPrazoRenda(produtoApi, produtoCobertura, cobertura);
                PreencherPrazoCerto(produtoApi, produtoCobertura, cobertura);
                PreencherTipoRelacaoSegurado(produtoCobertura, cobertura);
                PreencherTipoCobertura(produtoCobertura, cobertura);
                PreencherCausas(produtoCobertura, cobertura, limites);
                PreencherProfissoesRecusadas(produtoApi, produtoCobertura, cobertura);
                PreencherUFsRecusadas(produtoApi, produtoCobertura, cobertura);
                PreencherFundos(produtoApi, produtoCobertura, cobertura);
                PreencherPrazoDecrescimo(produtoApi, produtoCobertura, cobertura);
                PreencherAntecipacao(produtoApi, produtoCobertura, cobertura);

                produtoApi.Coberturas.Add(produtoCobertura);
            }

            PreencherDependencias(produtoApi, produto, produtos);

            produtoApi.IndicarBeneficiario = produtoApi.Coberturas.Any(c => c.IndicarBeneficiario.HasValue && c.IndicarBeneficiario.Value);
            produtoApi.ExigeDPS            = produtoApi.Coberturas.Any(c => c.ExigeDPS.HasValue && c.ExigeDPS.Value);
            produtoApi.IdadeMinima         = produtoApi.Coberturas.Max(c => c.IdadeMinima);
            produtoApi.IdadeMaxima         = produtoApi.Coberturas.Min(c => c.IdadeMaxima);
            produtoApi.IdadeExclusao       = produtoApi.Coberturas.Min(c => c.IdadeExclusao);
            produtoApi.ProfissoesAceitas   = produto.ProfissoesAceitas.Select(p => (int)p).ToList();

            return(produtoApi);
        }