예제 #1
0
        public override async Task <Locacoes> Inserir(Locacoes locacao)
        {
            using (var conexao = GetCurrentConnection())
            {
                conexao.Open();
                NpgsqlTransaction transaction = conexao.BeginTransaction();
                try
                {
                    string sql = @"INSERT INTO locacoes(codigocliente, qtdepessoas, dtlocacao, valor, codigocondicaopagamento, dtcadastro, dtalteracao, status) VALUES (@codigoCliente, @qtdePessoas, @dtLocacao, @valor, @codigoCondicaoPagamento, @dtCadastro, @dtAlteracao, @status) returning codigo;";

                    NpgsqlCommand command = new NpgsqlCommand(sql, conexao);
                    command.Parameters.AddWithValue("@codigoCliente", locacao.codigoCliente);
                    command.Parameters.AddWithValue("@qtdePessoas", locacao.qtdePessoas);
                    command.Parameters.AddWithValue("@dtLocacao", locacao.dtLocacao);
                    command.Parameters.AddWithValue("@valor", locacao.valor);
                    command.Parameters.AddWithValue("@codigoCondicaoPagamento", locacao.codigoCondicaoPagamento);
                    command.Parameters.AddWithValue("@dtCadastro", locacao.dtCadastro);
                    command.Parameters.AddWithValue("@dtAlteracao", locacao.dtAlteracao);
                    command.Parameters.AddWithValue("@status", locacao.status);

                    Object idInserido = await command.ExecuteScalarAsync();

                    locacao.codigo = (int)idInserido;

                    int qtdAreasLocacao = locacao.areasLocacao.Count;
                    if (qtdAreasLocacao > 0)
                    {
                        await InsertAreasLocacoes(conexao, locacao.areasLocacao, locacao.codigo);
                    }

                    int qtdParcelas = locacao.parcelas.Count;
                    if (qtdParcelas > 0)
                    {
                        for (int i = 0; i < qtdParcelas; i++)
                        {
                            ContasReceber parcelaCompra = locacao.parcelas[i];
                            parcelaCompra.pendente();
                            locacao.parcelas[i] = await InserirContasReceber(conexao, parcelaCompra, locacao);
                        }
                    }

                    transaction.Commit();
                    return(locacao);
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
                finally
                {
                    conexao.Close();
                }
            }
        }
        public override async Task <Cotas> Inserir(Cotas cota)
        {
            using (var conexao = GetCurrentConnection())
            {
                conexao.Open();
                NpgsqlTransaction transaction = conexao.BeginTransaction();
                try
                {
                    string sql = @"INSERT INTO cotas(codigocliente, valor, dtinicio, dttermino, dtcadastro, dtalteracao, status) VALUES (@codigoCliente, @valor, @dtInicio, @dtTermino, @dtCadastro, @dtAlteracao, @status) returning codigo;";

                    NpgsqlCommand command = new NpgsqlCommand(sql, conexao);

                    command.Parameters.AddWithValue("@codigoCliente", cota.codigoCliente);
                    command.Parameters.AddWithValue("@valor", cota.valor);
                    command.Parameters.AddWithValue("@dtInicio", cota.dtInicio);
                    command.Parameters.AddWithValue("@dtTermino", cota.dtTermino);
                    command.Parameters.AddWithValue("@dtCadastro", cota.dtCadastro);
                    command.Parameters.AddWithValue("@dtAlteracao", cota.dtAlteracao);
                    command.Parameters.AddWithValue("@status", cota.status);

                    Object idInserido = await command.ExecuteScalarAsync();

                    cota.codigo = (int)idInserido;

                    int qtdParcelas = cota.parcelas.Count;
                    if (qtdParcelas > 0)
                    {
                        for (int i = 0; i < qtdParcelas; i++)
                        {
                            ContasReceber parcelaCompra = cota.parcelas[i];
                            parcelaCompra.pendente();
                            cota.parcelas[i] = await InserirContasReceber(conexao, parcelaCompra, cota);
                        }
                    }

                    transaction.Commit();
                    return(cota);
                } catch
                {
                    transaction.Rollback();
                    throw new Exception("Ocorreu um erro ao salvar a cota");
                }
                finally
                {
                    conexao.Close();
                }
            }
        }