Example #1
0
        public async Task <int> AdicionarCreditoCliente(Credito credito)
        {
            using (IDbConnection connection = CreateConnection())
                using (var transaction = connection.BeginTransaction())
                {
                    var cliente = new
                    {
                        Nome    = credito.DadosSolicitacaoCliente.Nome,
                        Celular = credito.DadosSolicitacaoCliente.Celular,
                        Email   = credito.DadosSolicitacaoCliente.Email,
                        Cpf     = credito.DadosSolicitacaoCliente.Cpf,
                        Cnpj    = credito.DadosSolicitacaoCliente.Cnpj,
                        Uf      = credito.DadosSolicitacaoCliente.Uf
                    };

                    var idCliente = await connection.ExecuteScalarAsync(@"PRC_INSERT_CLIENTE", cliente, transaction, 0, CommandType.StoredProcedure);


                    var objFinanciamento = credito.DadosSolicitacaoCliente.Financiamentos.FirstOrDefault();
                    objFinanciamento.IdCliente = Convert.ToInt32(idCliente);

                    var financiamento = new
                    {
                        IdCliente              = objFinanciamento.IdCliente,
                        IdLinhaCredito         = objFinanciamento.IdLinhaCredito,
                        ValorSolicitado        = objFinanciamento.ValorSolicitado,
                        ValorTotal             = objFinanciamento.ValorTotal,
                        ValorJuros             = objFinanciamento.ValorJuros,
                        QtdeParcelas           = objFinanciamento.QtdeParcelas,
                        ValorParcelas          = objFinanciamento.ValorParcelas,
                        DataPrimeiroVencimento = objFinanciamento.DataPrimeiroVencimento,
                        DiaVencimento          = objFinanciamento.DiaVencimento
                    };

                    var idFinanciamento = await connection.ExecuteScalarAsync(@"PRC_INSERT_FINANCIAMENTO", financiamento, transaction, 0, CommandType.StoredProcedure);

                    List <Parcela> parcelas = objFinanciamento.Parcelas;
                    parcelas.ForEach(c => c.IdFinanciamento = Convert.ToInt32(idFinanciamento));


                    SqlMapper.ICustomQueryParameter mapperParcela = parcelas.ConvertToDataTable().AsTableValuedParameter("TP_PARCELAS");

                    await connection.QueryAsync(@"PRC_INSERT_PARCELA", new { Parcelas = mapperParcela }, transaction, 0, CommandType.StoredProcedure);

                    transaction.Commit();

                    return(Convert.ToInt32(idCliente));
                }
        }
 /// <summary>
 /// Cria os parametros da procedure como SQL TYPE do tipo TABLE
 /// </summary>
 /// <typeparam name="T">tipo do objeto</typeparam>
 /// <param name="listObj">lista de objetos</param>
 /// <param name="tableTypeName">nome do SQL TYPE do tipo TABLE</param>
 /// <returns>retorna os parametros para o Dapper</returns>
 public SqlMapper.ICustomQueryParameter GetTableAsParameters <T>(IList <T> listObj, string tableTypeName)
 {
     SqlMapper.ICustomQueryParameter tableParameters = listObj.ConvertToDataTable <T>().AsTableValuedParameter(tableTypeName);
     return(tableParameters);
 }