Beispiel #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);
            }
        }
Beispiel #2
0
        public void PostVote(UserVoteData voteData, bool newState, LikedItem item)
        {
            if (AppModel.Instance.CurrentUser == null)
            {
                AppProvider.PopUpFactory.ShowMessage(AppResources.LoginFirstMessage, AppResources.Warning);
                return;
            }

            UserDialogs.Instance.ShowLoading(AppResources.LoadingSendingVote);
            string previousVote = voteData.Vote;

            voteData.SetState(newState);

            var postVoteTask = new PostEventVoteBackgroundTask(voteData, AppModel.Instance.CurrentUser.VoteData);

            postVoteTask.ContinueWith((task, result) =>
            {
                UserDialogs.Instance.HideLoading();

                if (result == null)
                {
                    AppProvider.PopUpFactory.ShowMessage(AppResources.FailedServer, AppResources.Error);
                    voteData.Vote = previousVote;
                }
                else
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        UserDialogs.Instance.ShowSuccess(AppResources.SuccessfulPostVote, 1);
                        item.Update();
                    });
                }
            });
            _backgroundWorkers[AppBackgroundWorkerType.UserPostData].Add(postVoteTask);
        }
Beispiel #3
0
        private UserVoteData GetVote(EventData eventData, UserVoteType voteType, Speaker speaker = null)
        {
            UserVoteData item   = null;
            string       userId = AppModel.Instance.CurrentUser == null ? string.Empty :
                                  AppModel.Instance.CurrentUser.User.Id;

            if (AppModel.Instance.CurrentUser != null)
            {
                if (speaker == null)
                {
                    item = AppModel.Instance.CurrentUser.VoteData.Items.Find(temp => temp.Event.Equals(eventData.Id) && temp.User.Equals(userId) && temp.UserVoteType == voteType);
                }
                else
                {
                    item = AppModel.Instance.CurrentUser.VoteData.Items.Find(temp => temp.Event.Equals(eventData.Id) &&
                                                                             temp.User.Equals(userId) && temp.UserVoteType == voteType &&
                                                                             temp.Subject.Equals(speaker.Id));
                }
            }
            if (item == null)
            {
                item = new UserVoteData(voteType, eventData.Id, userId, speaker);
            }

            return(item);
        }
Beispiel #4
0
        public void VoteUser(UserData user, int rating)
        {
            UserVoteData userVote = new UserVoteData(LoggedInUserModel.Instance.User.Id, user.Id, model.Question.Id, rating);
            //Create new request
            RMessage message = new RMessage(MessageType.ADD_USER_VOTE_REQUEST, userVote);

            //Handle the request to the service
            Service.Instance.AddMessage(message);
        }
Beispiel #5
0
        public void CheckUserVote(UserData user)
        {
            UserVoteData voteData = new UserVoteData(LoggedInUserModel.Instance.User.Id, user.Id, model.Question.Id, 0);
            //Create new request
            RMessage message = new RMessage(MessageType.CHECK_USER_VOTE_REQUEST, voteData);

            //Handle the request to the service
            Service.Instance.AddMessage(message);
        }
Beispiel #6
0
        /* The CheckUserVote MessageHandler
         * It handles messages of CHECK_USER_VOTE_REQUEST type.
         */
        private static void CheckUserVote(RMessage message, TcpClient connection)
        {
            Console.WriteLine("CheckUserVote");
            UserVoteData userVote = (UserVoteData)message.Data;
            UserVoteData rating   = UserVoteConnector.CheckUserVote(userVote);
            RMessage     replyMessage;

            replyMessage = new RMessage(MessageType.CHECK_USER_VOTE_REPLY, rating);
            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
Beispiel #7
0
 private LikedItem GetSpeakerItem(UserVoteData voteData)
 {
     return(new LikedItem(voteData)
     {
         UI_ImageHeight = 25,
         UI_NameFontSize = 14,
         UI_TextYPosition = 4,
         UI_LikeXPosition = AppProvider.Screen.ConvertPixelsToDp(AppProvider.Screen.Width) - 70,
         UI_DislikeXPosition = AppProvider.Screen.ConvertPixelsToDp(AppProvider.Screen.Width) - 40
     });
 }
Beispiel #8
0
 private LikedItem GetEventItem(UserVoteData voteData)
 {
     return(new LikedItem(voteData)
     {
         UI_ImageHeight = 40,
         UI_NameFontSize = 20,
         UI_TextYPosition = 10,
         UI_LikeXPosition = AppProvider.Screen.ConvertPixelsToDp(AppProvider.Screen.Width) - 100,
         UI_DislikeXPosition = AppProvider.Screen.ConvertPixelsToDp(AppProvider.Screen.Width) - 50
     });
 }
Beispiel #9
0
        /*
         * Callback functions section (for asynchronous actions).
         * These methods will be triggered by the Context.
         */
        #region callbacks

        public void OnUserVoteAdded(RMessage message)
        {
            UserVoteData vote = (UserVoteData)message.Data;

            if (model.My_votes.ContainsKey(vote.Id_votee_user))
            {
                model.My_votes[vote.Id_votee_user] = vote.Value_user_vote;
            }
            else
            {
                model.My_votes.Add(vote.Id_votee_user, vote.Value_user_vote);
            }
            UserVoteChecked(model);
        }
Beispiel #10
0
        public void Update(List <UserVoteData> result)
        {
            foreach (UserVoteData voteData in result)
            {
                UserVoteData current = Model.Find(temp => temp.Subject.Equals(voteData.Subject));

                if (current != null && current.UpdatedAtTime < voteData.UpdatedAtTime)
                {
                    current.UpdateWithItem(voteData);

                    LikedItem item = Items.Find(temp => temp.VoteData.Subject.Equals(current.Subject));
                    item.Update();
                }
            }
        }
Beispiel #11
0
 public void OnUserVoteChecked(RMessage message)
 {
     if (message.Data != null)
     {
         UserVoteData userVote = (UserVoteData)message.Data;
         if (model.My_votes.ContainsKey(userVote.Id_votee_user))
         {
             model.My_votes[userVote.Id_votee_user] = userVote.Value_user_vote;
         }
         else
         {
             model.My_votes.Add(userVote.Id_votee_user, userVote.Value_user_vote);
         }
         UserVoteChecked(model);
     }
 }
Beispiel #12
0
        public static void VoteUser(UserVoteData vote)
        {
            UserVoteData voteReply = UserVoteConnector.CheckUserVote(vote);
            double       adjustment;

            if (voteReply != null)
            {
                adjustment = Adjust(voteReply.Value_user_vote);
                UpdateUserRank(voteReply.Id_votee_user, -adjustment);
                UserVoteConnector.DeleteUserVote(voteReply);
            }

            UserVoteConnector.InsertUserVote(vote);

            adjustment = Adjust(vote.Value_user_vote);
            UpdateUserRank(vote.Id_votee_user, adjustment);
        }
Beispiel #13
0
 public LikedItem(UserVoteData voteData)
 {
     VoteData = voteData;
 }