/* The AddUserVote MessageHandler * It handles messages of ADD_USER_VOTE_REQUEST type. */ private static void AddUserVote(RMessage message, TcpClient connection) { Console.WriteLine("AddUserVote"); // Get the vote data from the message UserVoteData vote = (UserVoteData)message.Data; // Update the voter's rank UserVoteData rating = UserVoteConnector.CheckUserVote(vote); if (rating == null) { UserConnector.UpdateUserRank(vote.Id_voter_user, Ranking.VOTE_USER); } // Update the votee's rank UserConnector.VoteUser(vote); // Send the vote back to the client RMessage replyMessage = new RMessage(MessageType.ADD_USER_VOTE_REPLY, vote); ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage); // Send the updated user rank to all clients UserData user = UserConnector.GetUserById(vote.Id_votee_user); replyMessage = new RMessage(MessageType.RANK_USER_UPDATED, user); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(replyMessage); } }
/* The DeleteResource MessageHandler * It handles messages of DELETE_RESOURCE_REQUEST type. */ private static void DeleteResource(RMessage message, TcpClient connection) { Console.WriteLine("DeleteResource"); ResourceConnector.DeleteResource((ResourceData)message.Data); RMessage replyMessage = new RMessage(MessageType.DELETE_RESOURCE_REPLY, (ResourceData)message.Data); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
private static void AddAnswer(RMessage message, TcpClient connection) { Console.WriteLine("ChangeQuestionStatus"); AnswerData answer = (AnswerData)message.Data; LogConnector.AddAnswer(answer); UserConnector.UpdateUserRank(answer.Owner, Ranking.ADD_ANSWER); foreach (ClientWorker workersIterator in ServerCore.GetAllWorkers()) { workersIterator.SendMessage(new RMessage(MessageType.ADD_ANSWER_REPLY, answer)); } }
/* The ChangeQuestionStatus MessageHandler * It handles messages of CHANGE_QUESTION_STATUS_REQUEST type. */ private static void ChangeQuestionStatus(RMessage message, TcpClient connection) { Console.WriteLine("ChangeQuestionStatus"); QuestionData question = QuestionConnector.ChangeQuestionStatus(((QuestionData)message.Data).Id); RMessage replyMessage = new RMessage(MessageType.CHANGE_QUESTION_STATUS_REPLY, question); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(replyMessage); } }
/* The EditResource MessageHandler * It handles messages of EDIT_RESOURCE_REQUEST type. */ private static void EditResource(RMessage message, TcpClient connection) { Console.WriteLine("EditResource"); ResourceData res = (ResourceData)message.Data; ResourceConnector.EditResource(res); ResourceData editedResource = ResourceConnector.GetResource(res.Id); RMessage replyMessage = new RMessage(MessageType.EDIT_RESOURCE_REPLY, editedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The PostResource MessageHandler * It handles messages of ADD_RESOURCE_REQUEST type. */ private static void PostResource(RMessage message, TcpClient connection) { Console.WriteLine("PostResource"); ResourceConnector.AddResource((ResourceData)message.Data); // a lil' something for the user UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), Ranking.USER_POSTED_RESOURCE_VALUE); ResourceData adddedResource = ResourceConnector.GetResource((ResourceData)message.Data); RMessage replyMessage = new RMessage(MessageType.ADD_RESOURCE_REPLY, adddedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The ResourceAccess MessageHandler * It handles messages of RANK_RESOURCE_ACCESSED_REQUEST type. */ private static void ResourceAccess(RMessage message, TcpClient connection) { Console.WriteLine("AccessResource"); ResourceData res = (ResourceData)message.Data; ResourceConnector.UpdateResourceRank(res, Ranking.RESOURCE_ACCESSED_VALUE); ResourceData editedResource = ResourceConnector.GetResource(res.Id); RMessage replyMessage = new RMessage(MessageType.EDIT_RESOURCE_REPLY, editedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The AddReference MessageHandler * It handles messages of ADD_REFERENCE_REQUEST type. */ private static void AddReference(RMessage message, TcpClient connection) { Console.WriteLine("AddReference"); List <UInt32> ids = (List <UInt32>)message.Data; QuestionConnector.AddReference(ids); RMessage replyMessage = new RMessage(MessageType.ADD_QUESTION_REFERENCE_REPLY, null); //ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(replyMessage); } }
/* The ResourceVote MessageHandler * It handles messages of VOTE_RESOURCE_REQUEST type. */ private static void ResourceVote(RMessage message, TcpClient connection) { Console.WriteLine("VoteResource"); ResourceVoteData resVote = (ResourceVoteData)message.Data; ResourceVoteData oldResVote = ResourceVoteConnector.UpdateVote(resVote); ResourceConnector.VoteResource(oldResVote, resVote); UserConnector.UpdateUserRank(ServerCore.GetIdByConnection(connection), Ranking.USER_VOTED_RESOURCE_VALUE); ResourceData editedResource = ResourceConnector.GetResource(resVote.Id_Resource); RMessage replyMessage = new RMessage(MessageType.EDIT_RESOURCE_REPLY, editedResource); List <ClientWorker> clientList = ServerCore.GetAllWorkers(); foreach (ClientWorker client in clientList) { client.SendMessage(replyMessage); } }
/* The AddQuestion MessageHandler * It handles messages of ADD_QUESTION_REQUEST type. */ private static void AddQuestion(RMessage message, TcpClient connection) { Console.WriteLine("AddQuestion"); List <Object> data = (List <Object>)message.Data; QuestionData question0 = (QuestionData)data[0]; List <DomainData> domains = (List <DomainData>)data[1]; QuestionConnector.AddQuestion(question0); UserConnector.UpdateUserRank(question0.Owner, Ranking.ADD_QUESTION); UInt32 id = (UInt32)(Int64Connector.GetLastInsertId()); QuestionData question = QuestionConnector.GetQuestion(id); QuestionConnector.AddDomainQuestion(id, domains); List <ClientWorker> allWorkers = ServerCore.GetAllWorkers(); foreach (ClientWorker workersIterator in allWorkers) { workersIterator.SendMessage(new RMessage(MessageType.ADD_QUESTION_REPLY, question)); } }