public static void InsertImageMessage(ImageMessage message, int groupID) { OleDbConnection connect = new OleDbConnection(); connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Path.Combine(Environment.CurrentDirectory, @"Data\..\..\..\", "DBA.accdb"); string QueryText = "INSERT INTO ImageMessages (GroupID, UserID, PostDate, ImageData, FileExt) VALUES (@GroupID, @UserID, @PostDate, @ImageData, @FileExt)"; connect.Open(); using (OleDbCommand command = new OleDbCommand(QueryText)) { try { OleDbDataAdapter da = new OleDbDataAdapter("INSERT INTO Users", connect); command.Connection = connect; command.Parameters.AddWithValue("@GroupID", groupID); command.Parameters.AddWithValue("@UserID", message.UserID); command.Parameters.AddWithValue("@PostDate", message.PostDate.ToString()); command.Parameters.AddWithValue("@ImageData", Convert.ToBase64String(message.ImageData)); command.Parameters.AddWithValue("@FileExt", message.FileExtension); command.ExecuteNonQuery(); connect.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); connect.Close(); } } }
//Determines what the server should do given a message. private void HandleClientMessage(Message mes, ClientConnection cc) { DatabaseHelper.mut.WaitOne(); if (mes is TextMessage) { TextMessage textMessage = (TextMessage)mes; DatabaseHelper.InsertTextMessage(textMessage, group.GroupID); parentForm.Log("Text Message from " + textMessage.UserID + ": " + textMessage.Content); } else if (mes is ImageMessage) { ImageMessage img = (ImageMessage)mes; DatabaseHelper.InsertImageMessage(img, group.GroupID); parentForm.Log("Image Message from " + img.UserID); } else if (mes is CommandMessage) { CommandMessage command = (CommandMessage)mes; if (command.type == CommandType.ValidateAttempt) { CmdValidateAttempt(command, cc); } else if (command.type == CommandType.Ping) { parentForm.Log(command.content.ToString()); cc.userID = mes.UserID; } else if (command.type == CommandType.RequestMessages) { CmdReturnMessages(command, cc); } else if (command.type == CommandType.SetDisplayName) { var userToChange = DatabaseHelper.SelectUserById(command.UserID); if (userToChange != null) { userToChange.Alias = command.content.ToString(); DatabaseHelper.UpdateUser(userToChange); } } else if (command.type == CommandType.GetGroupAnnouncements) { string content = DatabaseHelper.SelectAnnouncement(group.GroupID); CommandMessage cmd = new CommandMessage(-1, "server", CommandType.GetGroupAnnouncements, content); SendToClient(cmd, cc); } if (group.Moderators.Contains(command.UserID) || group.Owner == command.UserID) { if (command.type == CommandType.Ban) { var userToBan = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID); if (userToBan != null) { ClientConnection clientToBan = null; foreach (var client in clients) { if (client.userID == userToBan.UserID) { clientToBan = client; } } if (clientToBan != null) { clientToBan.TcpC.Close(); clientToBan.ListeningThread.Abort(); clients.Remove(clientToBan); } } } else if (command.type == CommandType.SetGroupAnnouncements) { DatabaseHelper.InsertAnnouncement(command.content.ToString(), group.GroupID); } else if (command.type == CommandType.DeleteMessage) { DatabaseHelper.DeleteMessage(int.Parse(command.content.ToString())); } } if (group.Owner == command.UserID) { if (command.type == CommandType.Lock) { group.IsLocked = bool.Parse(command.content.ToString()); DatabaseHelper.UpdateGroup(group); } else if (command.type == CommandType.Promote) { var userToPromote = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID); if (userToPromote != null && !group.Moderators.Contains(userToPromote.UserID)) { group.Moderators.Add(userToPromote.UserID); DatabaseHelper.UpdateGroup(group); } } else if (command.type == CommandType.Demote) { var userToDemote = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID); if (userToDemote != null) { group.Moderators.Remove(userToDemote.UserID); DatabaseHelper.UpdateGroup(group); } } else if (command.type == CommandType.SetPassword) { group.Password = command.content.ToString(); DatabaseHelper.UpdateGroup(group); } } } DatabaseHelper.mut.ReleaseMutex(); }
public void SendImage(byte[] imageData, string fileExtension) { ImageMessage img = new ImageMessage(user.UserID, user.Alias, imageData, fileExtension); SendToServer(img); }