/// <summary> /// Obtém modelo de proposta com base nas informações do modelo de proposta do serviço (versão completa) /// </summary> /// <param name="modeloProposta">modelo de proposta</param> /// <returns>modelo de proposta preenchido</returns> private ModeloPropostaCompleto ObterModeloPropostaCompletoApi(ModeloPropostaEsb modeloProposta) { var modeloPropostaApi = new ModeloPropostaCompleto(); modeloPropostaApi.Id = modeloProposta.Codigo; modeloPropostaApi.Nome = modeloProposta.Descricao; modeloPropostaApi.DataUltimaAlteracao = DateTime.Now; /*alterar*/ var keyValueNamespace = ServiceWcf <IGerirProposta> .UseSync(ger => ger.BuscarSchemaNamespacePorModelo(modeloProposta.Codigo)); modeloPropostaApi.Namespace = keyValueNamespace.Value; var keyValuePolitica = ServiceWcf <IGerirProposta> .UseSync(ger => ger.BuscarPolitica(modeloProposta.Codigo, DateTime.Now, EnumTipoPolitica.VALIDACAO)); modeloPropostaApi.PoliticaValidacao = keyValuePolitica.Value; ServicoPoliticaAceitacao servicoPolitica = new ServicoPoliticaAceitacao(); var resultadoPoliticaAceitacao = ServiceWcf <INegociacaoService> .UseSync(n => n.ObterLimitesOperacionais(new Contrato.ParametroLimitesOperacionais { CodigoModeloProposta = modeloProposta.Codigo, DataVigencia = DateTime.Now })); modeloPropostaApi.PoliticaAceitacao = servicoPolitica.ObterLimitesOperacionais(resultadoPoliticaAceitacao.Valor); modeloPropostaApi.TicketMinimo = (float)resultadoPoliticaAceitacao.Valor.MinimoContribuicaoClientesNovos; ServicoProduto servicoProduto = new ServicoProduto(); var produtosFiltrados = modeloProposta.Produtos.Where(p => !p.EstahRestrito).ToList(); modeloPropostaApi.Produtos = new List <Model.Produto>(); foreach (Contrato.ProdutoNegociado produto in modeloProposta.Produtos.Where(p => !p.EstahRestrito)) { modeloPropostaApi.DiasVencimento = ObterDiasVencimento(modeloPropostaApi.DiasVencimento, produto.RegraCobranca.DiasVencimento); var produtoFormasCobranca = produto.RegraCobranca.FormasDeCobranca.Select(f => f.FormaCobranca).ToList(); modeloPropostaApi.FormasPagamento = ObterFormasPagamento(modeloPropostaApi.FormasPagamento, produtoFormasCobranca); var produtoPeriodicidadesInt = produto.RegraCobranca.Periodicidades.Select(p => (int)p).ToList(); modeloPropostaApi.Periodicidades = ObterPeriodicidades(modeloPropostaApi.Periodicidades, produtoPeriodicidadesInt); var produtoApi = servicoProduto.ObterProduto(produto, resultadoPoliticaAceitacao.Valor.LimitesOperacionais, produtosFiltrados); modeloPropostaApi.Produtos.Add(produtoApi); } bool existeTipoConjuge = ExisteTipoProponenteConjuge(modeloProposta.Produtos); modeloPropostaApi.Questionarios = ObterQuestionariosCompleto(modeloProposta.Codigo, modeloProposta.Perguntas, existeTipoConjuge); PreencherInformacoesAdicionais(modeloProposta, modeloPropostaApi); return(modeloPropostaApi); }
private static void PreencherInformacoesAdicionais(ModeloPropostaEsb modeloProposta, Model.ModeloProposta modeloPropostaApi) { if (modeloProposta.CanalComercializacao != null) { modeloPropostaApi.CanalComercializacao = new Model.CanalComercializacao { Id = modeloProposta.CanalComercializacao.TipoCanalComercializacaoId, Descricao = modeloProposta.CanalComercializacao.Descricao }; } if (modeloProposta.Grupo != null) { modeloPropostaApi.Grupo = new GrupoProposta { Id = modeloProposta.Grupo.Id, Descricao = modeloProposta.Grupo.Descricao }; } }