public void enviarMail(Usuario u, Venta v, string mensaje) { if (u.Nombre != null) { var fromAddress = new MailAddress("*****@*****.**", "SORProject"); var toAddress = new MailAddress(u.Mail, u.Nombre); const string fromPassword = "******"; const string subject = "¡Has ganado una subasta!"; string body = mensaje; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { //smtp.Send(message); } } }
public void informarVentaFinalizada(Venta v, Usuario comprador) { //Informar a los pujadores de la venta finalizada (TOPIC) const string TOPIC_NAME = "Ventas"; const string BROKER = "tcp://localhost:61616"; TopicPublisher publisher; publisher = new TopicPublisher(TOPIC_NAME, BROKER); v.comprador = comprador.Nombre; var javaScriptSerializer = new JavaScriptSerializer(); String item = javaScriptSerializer.Serialize(v); //Debug.WriteLine(item); publisher.SendMessage(item); }
public void vigilarTiempos() { int tam = 0; while (true) { tam = listaVentas.Count; DateTime dt = DateTime.UtcNow; for (int i = 0; i < tam; i++) { if (i < listaVentas.Count) { if (listaVentas[i] != null) { DateTime dt1 = listaVentas[i].fecha_F; int finalizada = listaVentas[i].finalizada; if (dt1 < dt || finalizada == 1) { //Finalizar venta //Debug.WriteLine("Venta finalizada: " + listaVentas[i].id); if (listaVentas[i].negociado == 2) { if (listaVentas[i].finalizada == 0) { listaVentas[i].finalizada = 3; gestionarNegociadoManual(listaVentas[i]); } else if (listaVentas[i].finalizada == 4) { gestionarNegociadoManual(listaVentas[i]); } } else { listaVentas[i].finalizada = 1; gestionarVentaFinalizada(listaVentas[i]); } } else if (listaVentas[i].finalizada == 2) //Cancelada { Usuario u = new Usuario(); u.Nombre = "Nadie"; informarVentaFinalizada(listaVentas[i], u); //Purgar venta de la lista actual LogMessageToFile("Item ( " + listaVentas[i].id + "): Cancelado"); listaVentas.RemoveAt(i); } else if (listaVentas[i].finalizada == 4) //Vendida, negociado manual { gestionarNegociadoManual(listaVentas[i]); } } } } } }
public void gestionarVentaFinalizada(Venta v) { //Dar como finalizada la venta en la BD MySqlConnection conn = new MySqlConnection(connString); MySqlCommand command = conn.CreateCommand(); command.CommandText = "update ventas set finalizada = 1 where id =" + v.id; conn.Open(); command.ExecuteNonQuery(); conn.Close(); //Informar al vendedor y comprador de que la venta ha finalizado //Obtener la puja maxima command.CommandText = "select * from pujas p where p.idVenta = " + v.id; conn.Open(); Puja pMax = new Puja(); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Puja p = new Puja(); p.ventaId = int.Parse(reader["idVenta"].ToString()); p.pujadorId = int.Parse(reader["idUsuario"].ToString()); p.cantidad = int.Parse(reader["precioPuja"].ToString()); if (p.cantidad > pMax.cantidad){ pMax = p; } } conn.Close(); //Obtener al usuario de la puja maxima command.CommandText = "select * from usuarios u where u.id = " + pMax.pujadorId; conn.Open(); Usuario uGanador = new Usuario(); reader = command.ExecuteReader(); while (reader.Read()) { uGanador.Nombre = reader["nombre"].ToString(); uGanador.Mail = reader["mail"].ToString(); } conn.Close(); //Obtener al usuario vendedor command.CommandText = "select * from usuarios u, ventas v where u.id = v.vendedor and v.id =" + pMax.ventaId; conn.Open(); Usuario uVendedor = new Usuario(); reader = command.ExecuteReader(); while (reader.Read()) { uVendedor.Nombre = reader["nombre"].ToString(); uVendedor.Mail = reader["mail"].ToString(); } conn.Close(); //Enviar un mail ambos enviarMail(uGanador, v, "Le informamos que ha ganado la subasta del articulo: " + v.tipo + " con ID: " + v.id); enviarMail(uVendedor, v, "Le informamos que ha vendido el articulo: " + v.tipo + " con ID: " + v.id); //Informar a los pujadores de la venta finalizada (TOPIC) informarVentaFinalizada(v, uGanador); //Purgar venta de la lista actual for (int i = 0; i < listaVentas.Count; i++) { if (listaVentas[i].id == v.id) { listaVentas.RemoveAt(i); } } LogMessageToFile(uGanador.Nombre + " ha ganado la subasta del artículo: " + v.tipo + " con ID: " + v.id.ToString() + ". Vendido por: " + uVendedor.Nombre); }