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