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)); } }
// 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; } } }
// 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; } } }
// 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; } } }
//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; } } }
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()); } }