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