public async Task <ActionResult> Submit([Bind(Include = "Id,Votes,Name,Date,Type,Linkdescription,Title,Rank,MessageContent")] Message message)
        {
            if (ModelState.IsValid)
            {
                db.Messages.Add(message);
                await db.SaveChangesAsync();

                //get newly generated message ID and execute ranking and self upvoting
                Votingtracker tmpVotingTracker = new Votingtracker();
                tmpVotingTracker.MessageId  = message.Id;
                tmpVotingTracker.UserName   = message.Name;
                tmpVotingTracker.VoteStatus = 1;
                db.Votingtrackers.Add(tmpVotingTracker);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Sorry, you are doing that too fast. Please try again in a few minutes.");
                return(View(message));
            }
        }
Beispiel #2
0
        // submit submission upvote
        public static void UpvoteSubmission(int submissionId, string userWhichUpvoted)
        {
            int result = CheckIfVoted(userWhichUpvoted, submissionId);

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

                if (submission.Anonymized)
                {
                    // do not execute voting, subverse is in anonymized mode
                    return;
                }

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

                    if (submission.Name != userWhichUpvoted)
                    {
                        submission.Likes++;
                        double currentScore  = submission.Likes - submission.Dislikes;
                        double submissionAge = Submissions.CalcSubmissionAgeDouble(submission.Date);
                        double newRank       = Ranking.CalculateNewRank(submission.Rank, submissionAge, currentScore);
                        submission.Rank = newRank;

                        // register upvote
                        var tmpVotingTracker = new Votingtracker
                        {
                            MessageId  = submissionId,
                            UserName   = userWhichUpvoted,
                            VoteStatus = 1,
                            Timestamp  = DateTime.Now
                        };
                        db.Votingtrackers.Add(tmpVotingTracker);
                        db.SaveChanges();

                        SendVoteNotification(submission.Name, "upvote");
                    }

                    break;

                // downvoted before, turn downvote to upvote
                case -1:

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

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

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

                        if (votingTracker != null)
                        {
                            votingTracker.VoteStatus = 1;
                            votingTracker.Timestamp  = DateTime.Now;
                        }
                        db.SaveChanges();

                        SendVoteNotification(submission.Name, "downtoupvote");
                    }

                    break;

                // upvoted before, reset
                case 1:
                {
                    submission.Likes--;

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

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

                    ResetMessageVote(userWhichUpvoted, submissionId);

                    SendVoteNotification(submission.Name, "downvote");
                }

                break;
                }
            }
        }
Beispiel #3
0
        // submit submission downvote
        public static void DownvoteSubmission(int submissionId, string userWhichDownvoted)
        {
            int result = CheckIfVoted(userWhichDownvoted, submissionId);

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

                // do not execute downvoting if subverse is in anonymized mode
                if (submission.Anonymized)
                {
                    return;
                }

                // do not execute downvoting if user has insufficient CCP for target subverse
                if (Karma.CommentKarmaForSubverse(userWhichDownvoted, submission.Subverse) < submission.Subverses.minimumdownvoteccp)
                {
                    return;
                }

                switch (result)
                {
                // never voted before
                case 0:
                {
                    // this user is downvoting more than upvoting, don't register the downvote
                    if (User.IsUserCommentVotingMeanie(userWhichDownvoted))
                    {
                        return;
                    }

                    submission.Dislikes++;

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

                    submission.Rank = newRank;

                    // register downvote
                    var tmpVotingTracker = new Votingtracker
                    {
                        MessageId  = submissionId,
                        UserName   = userWhichDownvoted,
                        VoteStatus = -1,
                        Timestamp  = DateTime.Now
                    };
                    db.Votingtrackers.Add(tmpVotingTracker);
                    db.SaveChanges();

                    SendVoteNotification(submission.Name, "downvote");
                }

                break;

                // upvoted before, turn upvote to downvote
                case 1:
                {
                    submission.Likes--;
                    submission.Dislikes++;

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

                    submission.Rank = newRank;

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

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

                    SendVoteNotification(submission.Name, "uptodownvote");
                }

                break;

                // downvoted before, reset
                case -1:
                {
                    submission.Dislikes--;

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

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

                    ResetMessageVote(userWhichDownvoted, submissionId);

                    SendVoteNotification(submission.Name, "upvote");
                }

                break;
                }
            }
        }
Beispiel #4
0
        // submit submission upvote
        public static void UpvoteSubmission(int submissionId, string userWhichUpvoted, string clientIp)
        {
            // user account voting check
            int result = CheckIfVoted(userWhichUpvoted, submissionId);

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

                if (submission.Anonymized)
                {
                    // do not execute voting, subverse is in anonymized mode
                    return;
                }

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

                    if (submission.Name != userWhichUpvoted)
                    {
                        // check if this IP already voted on the same submission, abort voting if true
                        var ipVotedAlready = db.Votingtrackers.Where(x => x.MessageId == submissionId && x.ClientIpAddress == clientIp);
                        if (ipVotedAlready.Any())
                        {
                            return;
                        }

                        submission.Likes++;

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

                        // register upvote
                        var tmpVotingTracker = new Votingtracker
                        {
                            MessageId       = submissionId,
                            UserName        = userWhichUpvoted,
                            VoteStatus      = 1,
                            Timestamp       = DateTime.Now,
                            ClientIpAddress = clientIp
                        };

                        db.Votingtrackers.Add(tmpVotingTracker);
                        db.SaveChanges();

                        Karma.UpdateUserScp(submission.Name, 1);

                        SendVoteNotification(submission.Name, "upvote");
                    }

                    break;

                // downvoted before, turn downvote to upvote
                case -1:

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

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

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

                        if (votingTracker != null)
                        {
                            votingTracker.VoteStatus = 1;
                            votingTracker.Timestamp  = DateTime.Now;
                        }
                        db.SaveChanges();

                        Karma.UpdateUserScp(submission.Name, 2);

                        SendVoteNotification(submission.Name, "downtoupvote");
                    }

                    break;

                // upvoted before, reset
                case 1:
                {
                    submission.Likes--;

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

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

                    Karma.UpdateUserScp(submission.Name, -1);

                    ResetMessageVote(userWhichUpvoted, submissionId);

                    SendVoteNotification(submission.Name, "downvote");
                }

                break;
                }
            }
        }
Beispiel #5
0
        //submit submission upvote
        public static void UpvoteSubmission(int submissionId, string userWhichUpvoted)
        {
            int result = Voting.CheckIfVoted(userWhichUpvoted, submissionId);

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

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

                    if (submission != null)
                    {
                        submission.Likes++;
                        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 upvote
                        Votingtracker tmpVotingTracker = new Votingtracker();
                        tmpVotingTracker.MessageId  = submissionId;
                        tmpVotingTracker.UserName   = userWhichUpvoted;
                        tmpVotingTracker.VoteStatus = 1;
                        db.Votingtrackers.Add(tmpVotingTracker);
                        db.SaveChanges();
                    }

                    break;

                //downvoted before, turn downvote to upvote
                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 == userWhichUpvoted)
                                            .FirstOrDefault();

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

                    break;

                //upvoted before, reset
                case 1:

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

                        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(userWhichUpvoted, submissionId);
                    }

                    break;
                }
            }
        }
Beispiel #6
0
        public async Task <ActionResult> Submit([Bind(Include = "Id,Votes,Name,Date,Type,Linkdescription,Title,Rank,MessageContent,Subverse")] Message message)
        {
            if (ModelState.IsValid)
            {
                //check if subverse exists
                if (db.Subverses.Find(message.Subverse) != null && message.Subverse != "all")
                {
                    //check if username is admin and get random username instead
                    if (message.Name == "system")
                    {
                        message.Name = GrowthUtility.GetRandomUsername();
                        Random r    = new Random();
                        int    rInt = r.Next(6, 17);
                        message.Likes = (short)rInt;
                    }

                    //generate a thumbnail if submission is a link submission and a direct link to image
                    if (message.Type == 2)
                    {
                        try
                        {
                            string domain = Whoaverse.Utils.UrlUtility.GetDomainFromUri(message.MessageContent);

                            //if domain is youtube, try generating a thumbnail for the video
                            if (domain == "youtube.com")
                            {
                                string thumbFileName = ThumbGenerator.GenerateThumbFromYoutubeVideo(message.MessageContent);
                                message.Thumbnail = thumbFileName;
                            }
                            else
                            {
                                string extension = Path.GetExtension(message.MessageContent);

                                if (extension != String.Empty && extension != null)
                                {
                                    if (extension == ".jpg" || extension == ".JPG" || extension == ".png" || extension == ".PNG" || extension == ".gif" || extension == ".GIF")
                                    {
                                        string thumbFileName = ThumbGenerator.GenerateThumbFromUrl(message.MessageContent);
                                        message.Thumbnail = thumbFileName;
                                    }
                                }
                            }
                        }
                        catch (Exception)
                        {
                            //unable to generate a thumbnail, don't use any
                        }
                    }

                    //trim trailing blanks from subverse name if a user mistakenly types them
                    message.Subverse = message.Subverse.Trim();

                    db.Messages.Add(message);
                    await db.SaveChangesAsync();

                    //get newly generated message ID and execute ranking and self upvoting
                    Votingtracker tmpVotingTracker = new Votingtracker();
                    tmpVotingTracker.MessageId  = message.Id;
                    tmpVotingTracker.UserName   = message.Name;
                    tmpVotingTracker.VoteStatus = 1;
                    db.Votingtrackers.Add(tmpVotingTracker);
                    await db.SaveChangesAsync();

                    return(RedirectToRoute(
                               "SubverseComments",
                               new
                    {
                        controller = "Home",
                        action = "Comments",
                        id = message.Id,
                        subversetoshow = message.Subverse
                    }
                               ));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Sorry, The subverse you are trying to post to does not exist.");
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }