/// <summary> /// Va a la página de un usuario y carga sus datos. /// </summary> private void IrAPerfilDeContacto(object sender, EventArgs e) { byte[] avatarByte; MemoryStream ms; PictureBox a = sender as PictureBox; ControlPaginas.SelectedTab = tabPageContacto; CargarEstadisticasContacto(a.Tag.ToString()); string sql = "SELECT usuario_twitter, foto from usuarios WHERE usuario_twitter=@USER"; MySqlCommand comand = new MySqlCommand(sql, conexion); comand.Parameters.AddWithValue("@USER", a.Tag); MySqlDataReader Reader = comand.ExecuteReader(); if (Reader.Read()) { labelNombreContacto.Text = Reader["usuario_twitter"].ToString(); try { avatarByte = (byte[])Reader["foto"]; ms = new MemoryStream(avatarByte); pictureBoxContacto.Image = Image.FromStream(ms, false, false); } catch (InvalidCastException) { pictureBoxPerfilUserFoto.Image = null;//TODO: METER IMAGEN POR DEFECTO } } Reader.Close(); sql = "SELECT mensaje, num_rets,num_favs, user_emisor,foto FROM mensajes, usuarios WHERE user_emisor=@USER AND user_emisor=usuario_twitter"; comand = new MySqlCommand(sql, conexion); comand.Parameters.AddWithValue("@USER", a.Tag); MySqlDataReader reader = comand.ExecuteReader(); Image fotoavatar; while (reader.Read()) { CajaTwitt.BoxTwit cajita = new CajaTwitt.BoxTwit(ref conexion); cajita.ForeColor = Color.Black; cajita.SetTuit(reader["mensaje"].ToString()); cajita.SetRets(Int32.Parse(reader["num_rets"].ToString())); cajita.SetFavs(Int32.Parse(reader["num_favs"].ToString())); cajita.SetUser(reader["user_emisor"].ToString()); try { avatarByte = (byte[])reader["foto"]; ms = new MemoryStream(avatarByte); fotoavatar = Image.FromStream(ms, false, false); } catch (InvalidCastException) { fotoavatar = null;//TODO: METER IMAGEN POR DEFECTO } cajita.SetFoto(fotoavatar); flowLayoutPanelContacto.Controls.Add(cajita); } reader.Close(); }
/// <summary> /// Rescata de la BBDD los tuits del propio usuario. /// </summary> private void RescateTwittsSelfUsuario(string Usuario) { byte[] avatarByte = null; Image fotoavatar = null; MemoryStream ms; string sql = "SELECT mensaje, num_rets,num_favs,user_emisor,foto from mensajes,usuarios WHERE user_emisor = @USER AND user_emisor = usuario_twitter ORDER BY fecha DESC"; MySqlCommand comand = new MySqlCommand(sql, conexion); comand.Parameters.AddWithValue("@USER", Usuario); MySqlDataReader reader = comand.ExecuteReader(); while (reader.Read()) { CajaTwitt.BoxTwit cajita = new CajaTwitt.BoxTwit(ref conexion); cajita.ForeColor = Color.Black; cajita.SetTuit(reader["mensaje"].ToString()); cajita.SetRets(Int32.Parse(reader["num_rets"].ToString())); cajita.SetFavs(Int32.Parse(reader["num_favs"].ToString())); cajita.SetUser(reader["user_emisor"].ToString()); try { avatarByte = (byte[])reader["foto"]; ms = new MemoryStream(avatarByte); fotoavatar = Image.FromStream(ms, false, false); } catch (InvalidCastException) { pictureBoxPerfilUserFoto.Image = null;//TODO: METER IMAGEN POR DEFECTO } cajita.SetFoto(fotoavatar); cajita.Enabled = false; //evitamos que el user se autohaga retuit o fav. A lo mejor en twitter se puede, pero da igual, no me gusta y lo quito. flowLayoutPanelLastTuits.Controls.Add(cajita); } reader.Close(); }
/// <summary> /// Rellena el flowlayout de los tuits de los seguidos por el usuario. /// </summary> private void RescateTimeline(string User) { byte[] avatarByte = null; Image fotoavatar = null; MemoryStream ms; string sql = "SELECT mensaje,num_rets,num_favs,user_emisor,foto FROM mensajes, usuarios WHERE user_emisor IN (SELECT user_seguido FROM seguimiento WHERE user_sigue = @USER) AND mensajes.user_emisor =usuarios.usuario_twitter ORDER BY fecha DESC"; MySqlCommand comand = new MySqlCommand(sql, conexion); comand.Parameters.AddWithValue("@USER", User); MySqlDataReader reader = comand.ExecuteReader(); while (reader.Read()) { CajaTwitt.BoxTwit cajita = new CajaTwitt.BoxTwit(ref conexion); cajita.ForeColor = Color.Black; cajita.SetTuit(reader["mensaje"].ToString()); cajita.SetRets(Int32.Parse(reader["num_rets"].ToString())); cajita.SetFavs(Int32.Parse(reader["num_favs"].ToString())); cajita.SetUser(reader["user_emisor"].ToString()); cajita.ClicEnFoto += new System.EventHandler(this.IrAPerfilDeContacto); try { avatarByte = (byte[])reader["foto"]; ms = new MemoryStream(avatarByte); fotoavatar = Image.FromStream(ms, false, false); } catch (InvalidCastException) { pictureBoxPerfilUserFoto.Image = null;//TODO: METER IMAGEN POR DEFECTO } cajita.SetFoto(fotoavatar); flowLayoutPanelTwits.Controls.Add(cajita); } reader.Close(); }
/// <summary> /// Evento que responde al botón de tuitear. /// </summary> private void ButtonTwittIt_Click(object sender, EventArgs e) { byte[] avatarByte; MemoryStream ms; Image fotoavatar = null; //inserción en BBDD string sql = "Insert INTO mensajes VALUES(@USER,@RECEPTOR,@DATE,@MENSAJE,@FAVS,@RETS)"; MySqlCommand comand = new MySqlCommand(sql, conexion); comand.Parameters.AddWithValue("@USER", Usuario); comand.Parameters.AddWithValue("@RECEPTOR", ""); comand.Parameters.AddWithValue("@DATE", DateTime.Now.ToString("yyyy-MM-dd h:mm:ss")); comand.Parameters.AddWithValue("@MENSAJE", richTextBoxCajaTwit.Text); comand.Parameters.AddWithValue("@FAVS", 0); comand.Parameters.AddWithValue("@RETS", 0); comand.ExecuteNonQuery(); //refresco del flowlayout e inserción del tuit en la vista String sql2 = "SELECT foto FROM usuarios WHERE usuario_twitter = @USER"; comand = new MySqlCommand(sql2, conexion); comand.Parameters.AddWithValue("@USER", Usuario); MySqlDataReader reader = comand.ExecuteReader(); flowLayoutPanelTwits.Controls.Clear(); CajaTwitt.BoxTwit cajita = new CajaTwitt.BoxTwit(ref conexion); cajita.ForeColor = Color.Black; cajita.SetTuit(richTextBoxCajaTwit.Text); cajita.SetRets(0); cajita.SetFavs(0); cajita.SetUser(Usuario); if (reader.Read()) { try { avatarByte = (byte[])reader["foto"]; ms = new MemoryStream(avatarByte); fotoavatar = Image.FromStream(ms, false, false); } catch (InvalidCastException) { fotoavatar = null;//TODO: METER IMAGEN POR DEFECTO } } reader.Close(); cajita.SetFoto(fotoavatar); flowLayoutPanelTwits.Controls.Add(cajita); RescateTimeline(Usuario); flowLayoutPanelLastTuits.Controls.Clear(); RescateTwittsSelfUsuario(Usuario); richTextBoxCajaTwit.Text = ""; CargarEstadisticas(); }