예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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]);
                            }
                        }
                    }
                }
            }
        }
예제 #4
0
        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);
        }