Ejemplo n.º 1
0
        /* 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);
            }
        }
Ejemplo n.º 2
0
        /* 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);
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        /* 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);
            }
        }
Ejemplo n.º 5
0
        /* 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);
            }
        }
Ejemplo n.º 6
0
        /* 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);
            }
        }
Ejemplo n.º 7
0
        /* 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);
            }
        }
Ejemplo n.º 8
0
        /* 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);
            }
        }
Ejemplo n.º 9
0
        /* 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);
            }
        }
Ejemplo n.º 10
0
        /* 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));
            }
        }