public PedidoCupom PedidoImprimir(int PedidoID) { using (DataContext db = new DataContext()) { dalLancamentosCaixa pagped = new dalLancamentosCaixa(); string Formp = string.Join(", ", pagped.PagamentoCupom(PedidoID)); PedidoCupom pcupom = db.Pedidos.Where(p => p.PedidoID == PedidoID) .Select(p => new PedidoCupom { Nome = p.Nome, NumPessoas = p.NumPessoas, SubTotal = p.SubTotal, ValorTotal = p.ValorTotal, VlPago = p.ValorPago, Troco = p.Troco, Status = p.Status, Data = p.Data, Viagem = p.Viagem, TaxaS = p.TaxaS, VlTaxaS = p.VlTaxaS }).SingleOrDefault(); pcupom.FormaPagamento = Formp; return(pcupom); } }
public override void Salvar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } PedidoCupom pedidoXCupom = (PedidoCupom)entidade; pst.CommandText = "INSERT INTO cupom_pedido(id_pedido, id_cupom) VALUES (?1, ?2); "; parameters = new MySqlParameter[] { new MySqlParameter("?1", pedidoXCupom.ID), new MySqlParameter("?2", pedidoXCupom.Cupom.ID) }; pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; pst.ExecuteNonQuery(); if (ctrlTransaction == true) { pst.CommandText = "COMMIT WORK"; connection.Close(); } return; }
public override void Salvar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } Pedido pedido = (Pedido)entidade; pst.CommandText = "INSERT INTO pedido(username, total_pedido, status_pedido_fk, end_entrega_fk, frete, dt_cadastro_pedido) " + "VALUES (?1, ?2, ?3, ?4, ?5, ?6)"; parameters = new MySqlParameter[] { new MySqlParameter("?1", pedido.Usuario), new MySqlParameter("?2", pedido.Total), new MySqlParameter("?3", pedido.Status.ID), new MySqlParameter("?4", pedido.EnderecoEntrega.ID), new MySqlParameter("?5", pedido.Frete), new MySqlParameter("?6", pedido.DataCadastro) }; pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; pst.ExecuteNonQuery(); pedido.ID = entidade.ID = (int)pst.LastInsertedId; // variáveis que conterão os valores do pedido (Subtotal) // e também os valores dos cupons para tirar a diferença dos mesmo, // se necessário criar outro cupom de troca decimal subtotal = 0; decimal valorCupons = 0; // salvando os itens do pedido PedidoDetalheDAO pedidoDetalheDAO = new PedidoDetalheDAO(connection, false); foreach (PedidoDetalhe detalhe in pedido.Detalhes) { detalhe.IdPedido = pedido.ID; pedidoDetalheDAO.Salvar(detalhe); if (pedido.Status.ID != 6) { // a cada iteração da lista pega a quantidade e valor do item que está sendo iterado subtotal += (decimal)(detalhe.Quantidade * detalhe.ValorUnit); // Dando baixa no estoque Estoque estoque = ((Estoque) new EstoqueDAO().Consultar(new Estoque() { Livro = new Livro() { ID = detalhe.Livro.ID } }).ElementAt(0)); estoque.Qtde -= detalhe.Quantidade; new EstoqueDAO(connection, false).Alterar(estoque); } } // salvando os cartões utilizados no pedido CartaoPedidoDAO ccPedidoDAO = new CartaoPedidoDAO(connection, false); foreach (CartaoCreditoPedido cc in pedido.CCs) { cc.IdPedido = pedido.ID; ccPedidoDAO.Salvar(cc); } // verifica se cupom promocional foi utilizada if (pedido.CupomPromocional.ID != 0) { Cliente cliente = new Cliente(); // passa usuário que é dono do pedido para o e-mail do cliente cliente.Email = pedido.Usuario; // para trazer o ID do cliente que será utilizado cliente = ((Cliente) new ClienteDAO().Consultar(cliente).ElementAt(0)); // contem que o cliente já utilizou o cupom promocional PedidoCupom clienteXCupom = new PedidoCupom(); clienteXCupom.ID = pedido.ID; clienteXCupom.Cupom.ID = pedido.CupomPromocional.ID; // preparando e salvando no BD PedidoCupomDAO pedidoXCupomDAO = new PedidoCupomDAO(connection, false); pedidoXCupomDAO.Salvar(clienteXCupom); // consulta em CupomDAO para pegar o valor do cupom e assim fazer a conta para valor de cupons Cupom cupom = new Cupom(); cupom = ((Cupom) new CupomDAO().Consultar(pedido.CupomPromocional).ElementAt(0)); // Operação é multiplicação devido ser porcentagem (%) valorCupons = subtotal * (decimal)cupom.ValorCupom; } // alterando status do cupom que o cliente utilizou foreach (Cupom cp in pedido.CuponsTroca) { Cupom cupom = new Cupom(); cupom = ((Cupom) new CupomDAO().Consultar(cp).ElementAt(0)); cupom.IdPedido = pedido.ID; cupom.Status = 'I'; new CupomDAO(connection, false).Alterar(cupom); // adiciona o valor do cupom para variável valorCupons += (decimal)cupom.ValorCupom; } // verifica se o valor dos cupons usados superam o valor do subtotal // se sim, criará outro cupom de troca para o cliente poder estar usando if (valorCupons > subtotal) { Cliente cliente = new Cliente(); // passa usuário que é dono do pedido para o e-mail do cliente cliente.Email = pedido.Usuario; // para trazer o ID do cliente que será utilizado cliente = ((Cliente) new ClienteDAO().Consultar(cliente).ElementAt(0)); Cupom cupom = new Cupom(); cupom.IdCliente = cliente.ID; cupom.Tipo.ID = 1; // cupom troca cupom.Status = 'A'; cupom.ValorCupom = (float)(valorCupons - subtotal); cupom.CodigoCupom = "CUPOMTROCO" + cupom.IdCliente + DateTime.Now.ToString("yyyyMMddHHmmss") + "$" + cupom.ValorCupom; new CupomDAO(connection, false).Salvar(cupom); } if (ctrlTransaction == true) { pst.CommandText = "COMMIT WORK"; connection.Close(); } return; }
public override List <EntidadeDominio> Consultar(EntidadeDominio entidade) { if (connection.State == ConnectionState.Closed) { connection.Open(); } PedidoCupom pedidoXCupom = (PedidoCupom)entidade; StringBuilder sql = new StringBuilder(); sql.Append("SELECT * FROM cupom_pedido JOIN cupom ON (cupom.id_cupom = cupom_pedido.id_cupom) "); sql.Append(" JOIN tipo_cupom ON (tipo_cupom.id_tipo_cupom = cupom.tipo_cupom_fk) "); // WHERE sem efeito, usado apenas para poder diminuir o número de ifs da construção da query sql.Append("WHERE 1 = 1 "); if (pedidoXCupom.ID != 0) { sql.Append("AND id_pedido = ?1 "); } if (pedidoXCupom.Cupom != null) { if (pedidoXCupom.Cupom.ID != 0) { sql.Append(" AND id_cupom = ?2 "); } } sql.Append("ORDER BY cupom_pedido.id_pedido,cupom_pedido.id_cupom "); pst.CommandText = sql.ToString(); parameters = new MySqlParameter[] { new MySqlParameter("?1", pedidoXCupom.ID), new MySqlParameter("?2", pedidoXCupom.Cupom.ID) }; pst.Parameters.Clear(); pst.Parameters.AddRange(parameters); pst.Connection = connection; pst.CommandType = CommandType.Text; reader = pst.ExecuteReader(); // Lista de retorno da consulta do banco de dados, que conterá os cartões do pedido encontrados List <EntidadeDominio> pedidoXCupoms = new List <EntidadeDominio>(); while (reader.Read()) { pedidoXCupom = new PedidoCupom(); pedidoXCupom.ID = Convert.ToInt32(reader["id_pedido"]); pedidoXCupom.Cupom.ID = Convert.ToInt32(reader["id_cupom"]); if (!DBNull.Value.Equals(reader["cupom_pedido_fk"])) { pedidoXCupom.Cupom.IdPedido = Convert.ToInt32(reader["cupom_pedido_fk"]); } if (!DBNull.Value.Equals(reader["cupom_pedido_fk"])) { pedidoXCupom.Cupom.IdPedido = Convert.ToInt32(reader["cupom_pedido_fk"]); } pedidoXCupom.Cupom.CodigoCupom = reader["codigo_cupom"].ToString(); pedidoXCupom.Cupom.Tipo.ID = Convert.ToInt32(reader["id_tipo_cupom"]); pedidoXCupom.Cupom.Tipo.Nome = reader["nome_tipo_cupom"].ToString(); pedidoXCupom.Cupom.Status = reader["status_cupom"].ToString().First(); pedidoXCupom.Cupom.ValorCupom = Convert.ToSingle(reader["valor_cupom"]); pedidoXCupoms.Add(pedidoXCupom); } connection.Close(); return(pedidoXCupoms); }