Пример #1
0
        public static int LinkKarma(string userName)
        {
            using (whoaverseEntities db = new whoaverseEntities())
            {

                try
                {
                    int likes = db.Messages
                                                .Where(r => r.Name.Equals(userName, StringComparison.OrdinalIgnoreCase))
                                                .Sum(r => (int)r.Likes);

                    int dislikes = db.Messages
                                        .Where(r => r.Name.Equals(userName, StringComparison.OrdinalIgnoreCase))
                                        .Sum(r => (int)r.Dislikes);

                    return likes - dislikes;
                }
                catch (Exception)
                {

                    return 0;
                }

            }
        }
Пример #2
0
        // delete a user account and all history: comments, posts and votes
        public static bool DeleteUser(string userName)
        {
            using (whoaverseEntities db = new whoaverseEntities())
            {
                using (UserManager<ApplicationUser> tmpUserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
                {
                    var tmpuser = tmpUserManager.FindByName(userName);
                    if (tmpuser != null)
                    {
                        //remove voting history for submisions
                        db.Votingtrackers.RemoveRange(db.Votingtrackers.Where(x => x.UserName == userName));

                        //remove voting history for comments
                        db.Commentvotingtrackers.RemoveRange(db.Commentvotingtrackers.Where(x => x.UserName == userName));

                        //remove all comments
                        var comments = db.Comments.Where(c => c.Name == userName);
                        foreach (Comment c in comments)
                        {
                            c.Name = "deleted";
                            c.CommentContent = "deleted";
                            db.SaveChangesAsync();
                        }

                        //remove all submissions
                        var submissions = db.Messages.Where(c => c.Name == userName);
                        foreach (Message s in submissions)
                        {
                            if (s.Type == 1)
                            {
                                s.Name = "deleted";
                                s.MessageContent = "deleted";
                                s.Title = "deleted";
                            }
                            else
                            {
                                s.Name = "deleted";
                                s.Linkdescription = "deleted";
                                s.MessageContent = "http://whoaverse.com";
                            }
                        }
                        db.SaveChangesAsync();

                        var result = tmpUserManager.DeleteAsync(tmpuser);
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }

            }
        }
Пример #3
0
        //returns -1:downvoted, 1:upvoted, 0:not voted
        public static int CheckIfVoted(string userToCheck, int messageId)
        {
            int intCheckResult = 0;

            using (whoaverseEntities db = new whoaverseEntities())
            {
                var checkResult = db.Votingtrackers
                                .Where(b => b.MessageId == messageId && b.UserName == userToCheck)
                                .FirstOrDefault();

                if (checkResult != null)
                {
                    intCheckResult = checkResult.VoteStatus.Value;
                }
                else
                {
                    intCheckResult = 0;
                }

                return intCheckResult;
            }
        }
Пример #4
0
        public static int CommentKarma(string userName)
        {
            using (whoaverseEntities db = new whoaverseEntities())
            {
                try
                {
                    int sumOfLikes = db.Comments
                                               .Where(r => r.Name.Trim().Equals(userName, StringComparison.OrdinalIgnoreCase))
                                               .Sum(r => (int)r.Likes);

                    int sumOfdislikes = db.Comments
                                        .Where(r => r.Name.Trim().Equals(userName, StringComparison.OrdinalIgnoreCase))
                                        .Sum(r => (int)r.Dislikes);

                    return sumOfLikes - sumOfdislikes;
                }
                catch (Exception)
                {

                    return 0;
                }

            }
        }
Пример #5
0
        //submit submission downvote
        public static void DownvoteSubmission(int submissionId, string userWhichDownvoted)
        {
            int result = Voting.CheckIfVoted(userWhichDownvoted, submissionId);

            using (whoaverseEntities db = new whoaverseEntities())
            {
                Message submission = db.Messages.Find(submissionId);

                switch (result)
                {
                    //never voted before
                    case 0:

                        if (submission != null)
                        {
                            submission.Dislikes++;

                            double currentScore = submission.Likes - submission.Dislikes;
                            double submissionAge = Whoaverse.Utils.Submissions.CalcSubmissionAgeDouble(submission.Date);
                            double newRank = Ranking.CalculateNewRank(submission.Rank, submissionAge, currentScore);

                            submission.Rank = newRank;

                            //register downvote
                            Votingtracker tmpVotingTracker = new Votingtracker();
                            tmpVotingTracker.MessageId = submissionId;
                            tmpVotingTracker.UserName = userWhichDownvoted;
                            tmpVotingTracker.VoteStatus = -1;
                            db.Votingtrackers.Add(tmpVotingTracker);
                            db.SaveChanges();
                        }

                        break;

                    //upvoted before, turn upvote to downvote
                    case 1:

                        if (submission != null)
                        {
                            submission.Likes--;
                            submission.Dislikes++;

                            double currentScore = submission.Likes - submission.Dislikes;
                            double submissionAge = Whoaverse.Utils.Submissions.CalcSubmissionAgeDouble(submission.Date);
                            double newRank = Ranking.CalculateNewRank(submission.Rank, submissionAge, currentScore);

                            submission.Rank = newRank;

                            //register Turn DownVote To UpVote
                            var votingTracker = db.Votingtrackers
                                .Where(b => b.MessageId == submissionId && b.UserName == userWhichDownvoted)
                                .FirstOrDefault();

                            if (votingTracker != null)
                            {
                                votingTracker.VoteStatus = -1;
                            }
                            db.SaveChanges();
                        }

                        break;

                    //downvoted before, reset
                    case -1:

                        if (submission != null)
                        {
                            submission.Dislikes--;

                            double currentScore = submission.Likes - submission.Dislikes;
                            double submissionAge = Whoaverse.Utils.Submissions.CalcSubmissionAgeDouble(submission.Date);
                            double newRank = Ranking.CalculateNewRank(submission.Rank, submissionAge, currentScore);

                            submission.Rank = newRank;
                            db.SaveChanges();

                            ResetMessageVote(userWhichDownvoted, submissionId);
                        }

                        break;

                }
            }
        }
Пример #6
0
        //a user has either upvoted or downvoted this submission earlier and wishes to reset the vote, delete the record
        public static void ResetMessageVote(string userWhichVoted, int messageId)
        {
            using (whoaverseEntities db = new whoaverseEntities())
            {
                var votingTracker = db.Votingtrackers
                                .Where(b => b.MessageId == messageId && b.UserName == userWhichVoted)
                                .FirstOrDefault();

                if (votingTracker != null)
                {
                    //delete vote history
                    db.Votingtrackers.Remove(votingTracker);
                    db.SaveChanges();
                }
            }
        }
Пример #7
0
        //submit submission downvote
        public static void DownvoteComment(int commentId, string userWhichDownvoted)
        {
            int result = VotingComments.CheckIfVotedComment(userWhichDownvoted, commentId);

            using (whoaverseEntities db = new whoaverseEntities())
            {
                Comment comment = db.Comments.Find(commentId);

                switch (result)
                {
                    //never voted before
                    case 0:

                        if (comment != null)
                        {
                            comment.Dislikes++;

                            //register downvote
                            Commentvotingtracker tmpVotingTracker = new Commentvotingtracker();
                            tmpVotingTracker.CommentId = commentId;
                            tmpVotingTracker.UserName = userWhichDownvoted;
                            tmpVotingTracker.VoteStatus = -1;
                            db.Commentvotingtrackers.Add(tmpVotingTracker);
                            db.SaveChanges();
                        }

                        break;

                    //upvoted before, turn upvote to downvote
                    case 1:

                        if (comment != null)
                        {
                            comment.Likes--;
                            comment.Dislikes++;

                            //register Turn DownVote To UpVote
                            var votingTracker = db.Commentvotingtrackers
                                .Where(b => b.CommentId == commentId && b.UserName == userWhichDownvoted)
                                .FirstOrDefault();

                            if (votingTracker != null)
                            {
                                votingTracker.VoteStatus = -1;
                            }
                            db.SaveChanges();
                        }

                        break;

                    //downvoted before, reset
                    case -1:

                        if (comment != null)
                        {
                            comment.Dislikes--;
                            db.SaveChanges();
                            ResetCommentVote(userWhichDownvoted, commentId);
                        }

                        break;
                }
            }
        }
Пример #8
0
 // return a list of user badges
 public static List<Userbadge> UserBadges(string userName)
 {
     using (whoaverseEntities db = new whoaverseEntities())
     {
         return db.Userbadges.Include("Badge")
             .Where(r => r.Username.Equals(userName, StringComparison.OrdinalIgnoreCase))
             .ToList();
     }
 }
Пример #9
0
 // check if given user is moderator for a given subverse
 public static bool IsUserSubverseModerator(string userName, string subverse)
 {
     using (whoaverseEntities db = new whoaverseEntities())
     {
         var subverseModerator = db.SubverseAdmins.Where(n => n.SubverseName == subverse && n.Power == 2).FirstOrDefault();
         if (subverseModerator != null && subverseModerator.Username == userName)
         {
             return true;
         }
         else
         {
             return false;
         };
     }
 }
Пример #10
0
        // unsubscribe from a subverse
        public static void UnSubscribeFromSubverse(string userName, string subverse)
        {
            if (IsUserSubverseSubscriber(userName, subverse))
            {
                using (whoaverseEntities db = new whoaverseEntities())
                {
                    var subscription = db.Subscriptions
                                .Where(b => b.Username == userName && b.SubverseName == subverse)
                                .FirstOrDefault();

                    if (subverse != null)
                    {
                        // remove subscription record
                        db.Subscriptions.Remove(subscription);

                        // record new unsubscription in subverse table subscribers field
                        Subverse tmpSubverse = db.Subverses.Find(subverse);

                        if (tmpSubverse != null)
                        {
                            tmpSubverse.subscribers--;
                        }

                        db.SaveChanges();
                    }

                }
            }
        }
Пример #11
0
        // return subscription count for a given user
        public static int SubscriptionCount(string userName)
        {
            using (whoaverseEntities db = new whoaverseEntities())
            {
                return db.Subscriptions.AsEnumerable()
                                    .Where(r => r.Username.Equals(userName, StringComparison.OrdinalIgnoreCase))
                                    .Count();

            }
        }
Пример #12
0
        // subscribe to a subverse
        public static void SubscribeToSubverse(string userName, string subverse)
        {
            if (!IsUserSubverseSubscriber(userName, subverse))
            {
                using (whoaverseEntities db = new whoaverseEntities())
                {
                    // add a new subscription
                    Subscription newSubscription = new Subscription();
                    newSubscription.Username = userName;
                    newSubscription.SubverseName = subverse;
                    db.Subscriptions.Add(newSubscription);

                    // record new subscription in subverse table subscribers field
                    Subverse tmpSubverse = db.Subverses.Find(subverse);

                    if (tmpSubverse != null)
                    {
                        tmpSubverse.subscribers++;
                    }

                    db.SaveChanges();
                }
            }
        }
Пример #13
0
 // check if given user is subscribed to a given subverse
 public static bool IsUserSubverseSubscriber(string userName, string subverse)
 {
     using (whoaverseEntities db = new whoaverseEntities())
     {
         var subverseSubscriber = db.Subscriptions.Where(n => n.SubverseName.ToLower() == subverse.ToLower() && n.Username == userName).FirstOrDefault();
         if (subverseSubscriber != null)
         {
             return true;
         }
         else
         {
             return false;
         };
     }
 }
Пример #14
0
 // check if given user is the owner for a given subverse
 public static bool IsUserSubverseAdmin(string userName, string subverse)
 {
     using (whoaverseEntities db = new whoaverseEntities())
     {
         var subverseOwner = db.SubverseAdmins.Where(n => n.SubverseName.ToLower() == subverse.ToLower() && n.Power == 1).FirstOrDefault();
         if (subverseOwner != null && subverseOwner.Username.ToLower() == userName.ToLower())
         {
             return true;
         }
         else
         {
             return false;
         };
     }
 }