Example #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);
                }
            }
        }
Example #2
0
        public static bool enEspera(int id)
        {
            bool enEspera = false;

            MySqlConnection conn = new MySqlConnection(connString);
            MySqlCommand command = conn.CreateCommand();
            Venta v = new Venta();

            command.CommandText = "Select * from ventas where id =" + id;
            conn.Open();
            MySqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                v.id = int.Parse(reader["id"].ToString());
                v.finalizada = int.Parse(reader["finalizada"].ToString());

            }

            if (v.finalizada == 3)
            {
                enEspera = true;
                Debug.WriteLine("La venta: " + v.id + " es 3");
            }
            else if (v.finalizada == 4)
            {
                Debug.WriteLine("La venta: " + v.id + " es 4");
                isFinalizada(v.id);
            }
            conn.Close();

            return enEspera;
        }
Example #3
0
        public static void addToTopic(Venta v)
        {
            publisher = new TopicPublisher(TOPIC_NAME, BROKER);

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

            publisher.SendMessage(item);
        }
Example #4
0
 static void editarVenta(Venta v)
 {
     for (int i = 0; i < listaVentas.Count; i++)
     {
         if (listaVentas[i].id == v.id)
         {
             listaVentas[i].fecha_F = v.fecha_F;
         }
     }
 }
Example #5
0
        //Se llena la lista con las ventas de la BD
        static void InicializaVentas()
        {
            MySqlConnection conn = new MySqlConnection(connString);
            MySqlCommand command = conn.CreateCommand();
            Venta v;

            command.CommandText = "Select * from ventas where finalizada = 0";
            conn.Open();
            listaVentas = new List<Venta>();
            MySqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                v = new Venta();
                v.id = int.Parse(reader["id"].ToString());
                v.tipo = reader["tipo"].ToString();
                v.estado = reader["estado"].ToString();
                v.autor = reader["autor"].ToString();
                v.año = 0;
                v.precio = int.Parse(reader["precio"].ToString());
                v.fecha_I = Convert.ToDateTime(reader["fecha_I"].ToString());
                v.fecha_F = Convert.ToDateTime(reader["fecha_F"].ToString());
                v.finalizada = int.Parse(reader["finalizada"].ToString());
                v.negociado = int.Parse(reader["negociado"].ToString());
                v.idComprador = int.Parse(reader["idComprador"].ToString());
                listaVentas.Add(v);
                idHash.Add(v.id, true);
            }
            gp.insertar(listaVentas);
            conn.Close();
            VigilarBD();
        }
Example #6
0
        //Vigila la BD en busca de nuevas ventas
        static void VigilarBD()
        {
            MySqlConnection conn = new MySqlConnection(connString);
            MySqlCommand command = conn.CreateCommand();
            Venta v;
            List<int> toDelete = new List<int>();
            List<int> toFalse = new List<int>();

            while (true)
            {
                //Buscamos ventas en curso que pueden no estar en nuestra lista
                command.CommandText = "Select * from ventas where finalizada = 0";
                conn.Open();
                MySqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    v = new Venta();
                    v.id = int.Parse(reader["id"].ToString());
                    v.tipo = reader["tipo"].ToString();
                    v.estado = reader["estado"].ToString();
                    v.autor = reader["autor"].ToString();
                    v.año = 0;
                    v.precio = int.Parse(reader["precio"].ToString());
                    v.fecha_I = Convert.ToDateTime(reader["fecha_I"].ToString());
                    v.fecha_F = Convert.ToDateTime(reader["fecha_F"].ToString());
                    v.finalizada = int.Parse(reader["finalizada"].ToString());
                    v.negociado = int.Parse(reader["negociado"].ToString());
                    v.idComprador = int.Parse(reader["idComprador"].ToString());

                    if (isNuevaVenta(v))
                    {
                        //Informar de la nueva venta en el Topic Obras
                        addToTopic(v);
                        listaVentas = gp.getListaVentas();
                        listaVentas.Add(v);
                        gp.insertar(listaVentas);
                        idHash.Add(v.id, true);
                    }
                    else if (isVentaEditada(v)) //Venta existente que ha sido editada
                    {
                        editarVenta(v);
                        addToTopic(v);
                        idHash[v.id] = true;
                    }
                    else //No es nueva
                    {
                        idHash[v.id] = true;
                    }

                }

                //Comprobamos si todos son true, si no lo son, alguna venta ha finalizado
                foreach (int key in idHash.Keys)
                {
                    if ((Boolean)idHash[key] == false)
                    {
                        //Esta id ya no esta por lo que debe haber finalizado o haber sido cancelada, actualizamos la lista
                        isFinalizada(key);
                        //La eliminamos del Hash excepto si finalizada es 3 (esperando autorizacion vendedor)
                        if (!enEspera(key))
                        {
                            toDelete.Add(key);
                        }
                    }
                }

                for(int i=0; i<toDelete.Count; i++){
                    idHash.Remove(toDelete[i]);
                }

                foreach (int key in idHash.Keys)
                {
                    toFalse.Add(key);
                }

                for (int i = 0; i < toFalse.Count; i++)
                {
                    idHash[toFalse[i]] = false;
                }

                toFalse.Clear();
                toDelete.Clear();
                conn.Close();
            }
        }
Example #7
0
 static bool isVentaEditada(Venta v)
 {
     bool editada = true;
     for (int i = 0; i < listaVentas.Count; i++)
     {
         if (listaVentas[i].id == v.id)
         {
             if(listaVentas[i].fecha_F == v.fecha_F){
                 editada = false;
             }
         }
     }
     return editada;
 }
Example #8
0
 static bool isNuevaVenta(Venta v)
 {
     bool esNueva = true;
     for (int i = 0; i < listaVentas.Count; i++)
     {
         if (listaVentas[i].id == v.id)
         {
             esNueva = false;
         }
     }
     return esNueva;
 }
Example #9
0
        static void isFinalizada(int id)
        {
            Debug.WriteLine("La venta: " + id + " esta finalizandose");
            MySqlConnection conn = new MySqlConnection(connString);
            MySqlCommand command = conn.CreateCommand();
            Venta v = new Venta();

            command.CommandText = "Select * from ventas where id =" + id;
            conn.Open();
            MySqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                v.id = int.Parse(reader["id"].ToString());
                v.finalizada = int.Parse(reader["finalizada"].ToString());
                v.idComprador = int.Parse(reader["idComprador"].ToString());
            }
            conn.Close();

            for (int i = 0; i < listaVentas.Count; i++)
            {
                if (listaVentas[i].id == id)
                {
                    listaVentas[i].finalizada = v.finalizada;
                    listaVentas[i].idComprador = v.idComprador;
                }
            }
        }
Example #10
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);
        }
Example #11
0
        public Venta getVenta(int id)
        {
            Venta v = new Venta();

            for (int i = 0; i < listaVentas.Count; i++)
            {
                if (listaVentas[i].id == id)
                {
                    v = listaVentas[i];
                }
            }

            return v;
        }
Example #12
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);
        }
Example #13
0
        public void gestionarNegociadoManual(Venta v)
        {
            if (v.finalizada == 4) //El negociado ha terminado
            {
                finalizarVentaManual(v);
            }
            else if (v.finalizada == 3) //El tiempo ha terminado y hay que pasar al estado de negociado
            {

                //Ponemos la venta en espera en la BD
                MySqlConnection conn = new MySqlConnection(connString);
                MySqlCommand command = conn.CreateCommand();
                command.CommandText = "update ventas set finalizada = 3 where id =" + v.id;
                conn.Open();
                command.ExecuteNonQuery();
                conn.Close();

                //Evitamos que se puedan enviar mas pujas
                informarVentaFinalizada(v, new Usuario());
            }
        }