/// <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); } }
/// <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); }