Exemplo n.º 1
0
        public void broadcastPuja(Puja p)
        {
            const string TOPIC_NAME = "Pujas";
            const string BROKER = "tcp://localhost:61616";
            TopicPublisher publisher;

            publisher = new TopicPublisher(TOPIC_NAME, BROKER);

            var javaScriptSerializer = new JavaScriptSerializer();
            String item = javaScriptSerializer.Serialize(p);

            publisher.SendMessage(item);
        }
Exemplo n.º 2
0
        //Procesa el json de la puja
        public void procesarMensaje(string m)
        {
            Puja p = new Puja();
            string jsonPuja = m;
            var javaScriptSerializer = new JavaScriptSerializer();

            p = javaScriptSerializer.Deserialize<Puja>(jsonPuja);

            //Comprobar si la venta no ha terminado
            if (!isVentaTerminada(p.ventaId))
            {
                //Comprobar si supera la puja mas alta
                if (p.cantidad > getVenta(p.ventaId).precio)
                {
                    //Establecer nuevo precio
                    Console.WriteLine("Cantidad antigua: " + getVenta(p.ventaId).precio);
                    LogMessageToFile("Nueva puja superior (Item " + p.ventaId + " ): " + p.cantidad);
                    Console.WriteLine(p.ventaId + ", " + p.cantidad);
                    setNuevoPrecio(p.ventaId, p.cantidad, p.pujadorId);

                    //Informar mediante topic del nuevo precio
                    broadcastPuja(p);

                }
                else
                {
                    LogMessageToFile("Puja descartada (Item " + p.ventaId + " ): " + p.cantidad);
                }
            }
        }
Exemplo n.º 3
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);
        }