public static void VoteContent(VoatDataContext context, Domain.Models.ContentType contentType, int id, int count, Domain.Models.VoteValue vote) { for (int i = 0; i < count; i++) { string userName = String.Format("VoteUser{0}", i.ToString().PadLeft(4, '0')); if (contentType == Domain.Models.ContentType.Comment) { context.CommentVoteTracker.Add( new CommentVoteTracker() { UserName = userName, IPAddress = Guid.NewGuid().ToString(), CommentID = id, VoteStatus = (int)vote, VoteValue = (int)vote, CreationDate = DateTime.UtcNow }); } else if (contentType == Domain.Models.ContentType.Submission) { context.SubmissionVoteTracker.Add( new SubmissionVoteTracker() { UserName = userName, IPAddress = Guid.NewGuid().ToString(), SubmissionID = id, VoteStatus = (int)vote, VoteValue = (int)vote, CreationDate = DateTime.UtcNow }); } } context.SaveChanges(); }
public static bool?IsSaved(IPrincipal user, Domain.Models.ContentType type, int id) { var identity = user.Identity; if (identity.IsAuthenticated) { var q = new QueryUserSaves(type).SetUserContext(user); var d = q.Execute(); return(d.Contains(id)); //string userName = identity.Name; //string cacheKey = CachingKey.UserSavedItems(type, userName); //if (!CacheHandler.Instance.Exists(cacheKey)) //{ // var q = new QueryUserSaves(type).SetUserContext(user); // var d = q.Execute(); // return d.Contains(id); //} //else //{ // return CacheHandler.Instance.SetExists(cacheKey, id); //} } return(null); }
public async Task <ActionResult> Save(Domain.Models.ContentType contentType, int id) { var cmd = new SaveCommand(contentType, id).SetUserContext(User); var response = await cmd.Execute(); return(JsonResult(response)); //if (response.Success) //{ // return Json(new { success = true }); //} //else //{ // return JsonError(response.Message); //} }
private void TestDirectVoteAccess(string userName, Domain.Models.ContentType type, int id, int expectedValue) { using (var repo = new Voat.Data.Repository()) { //Test direct vote access logic var result = repo.UserVoteStatus(userName, type, id); Assert.AreEqual(expectedValue, result, "Vote value incorrect direct pull"); var voteResults = repo.UserVoteStatus(userName, type, new int[] { id }); Assert.IsNotNull(voteResults, "Vote Results should not be null"); Assert.IsTrue(voteResults.Any(), "Enumerable should have contents"); var record = voteResults.FirstOrDefault(e => e.ID == id); Assert.IsNotNull(record, "Enumerable should have record matching ID"); Assert.AreEqual(id, record.ID, "Record should match ID"); Assert.AreEqual(expectedValue, record.Value, "Record should match vote value"); } }
public async Task <JsonResult> Vote(Domain.Models.ContentType contentType, int id, int voteStatus) { VoteResponse result = null; switch (contentType) { case Domain.Models.ContentType.Submission: var cmdV = new SubmissionVoteCommand(id, voteStatus, IpHash.CreateHash(Request.RemoteAddress())).SetUserContext(User); result = await cmdV.Execute(); break; case Domain.Models.ContentType.Comment: var cmdC = new CommentVoteCommand(id, voteStatus, IpHash.CreateHash(Request.RemoteAddress())).SetUserContext(User); result = await cmdC.Execute(); break; } return(Json(result)); }
public static bool?IsSaved(Domain.Models.ContentType type, int id) { var identity = System.Threading.Thread.CurrentPrincipal.Identity; if (identity.IsAuthenticated) { string userName = identity.Name; string cacheKey = CachingKey.UserSavedItems(type, userName); if (!CacheHandler.Instance.Exists(cacheKey)) { var q = new QueryUserSaves(type); var d = q.Execute(); return(d.Contains(id)); } else { return(CacheHandler.Instance.SetExists(cacheKey, id)); } } return(null); }
private async Task VerifyVoteStatus(string userToPost, string subverse, Domain.Models.ContentType contentType, int voteStatus, int voteValue) { int id = 0; string userName = ""; //Create submission var user = TestHelper.SetPrincipal(userToPost); var cmd = new CreateSubmissionCommand(new Domain.Models.UserSubmission() { Subverse = subverse, Title = "VerifyVoteStatus Test Submission in " + subverse }).SetUserContext(user); var response = cmd.Execute().Result; VoatAssert.IsValid(response, Status.Success); //Assert.AreEqual(Status.Success, response.Status, response.Message); var submission = response.Response; //voting username userName = USERNAMES.User100CCP; if (contentType == Domain.Models.ContentType.Submission) { id = submission.ID; user = TestHelper.SetPrincipal(userName); var voteSubmissionCommand = new SubmissionVoteCommand(id, voteStatus, Guid.NewGuid().ToString()).SetUserContext(user); var voteSubmissionResponse = await voteSubmissionCommand.Execute(); VoatAssert.IsValid(voteSubmissionResponse); Assert.IsNotNull(voteSubmissionResponse, "Expecting non-null submission vote command"); //verify in db using (var db = new VoatDataContext()) { var record = db.SubmissionVoteTracker.Where(x => x.SubmissionID == id && x.UserName == userName).FirstOrDefault(); Assert.IsNotNull(record, "Did not find Vote Record in database"); Assert.AreEqual(voteStatus, record.VoteStatus); Assert.AreEqual(voteValue, record.VoteValue); } } else if (contentType == Domain.Models.ContentType.Comment) { //Create comment var cmdComment = new CreateCommentCommand(submission.ID, null, $"VerifyVoteStatus Test Submission in {subverse} - {Guid.NewGuid().ToString()}").SetUserContext(user); var responseComment = await cmdComment.Execute(); VoatAssert.IsValid(responseComment); id = responseComment.Response.ID; user = TestHelper.SetPrincipal(userName); var voteCommentCommand = new CommentVoteCommand(id, voteStatus, Guid.NewGuid().ToString()).SetUserContext(user); var voteCommentResponse = await voteCommentCommand.Execute(); Assert.IsNotNull(voteCommentResponse, "Expecting non-null submission vote command"); //verify in db using (var db = new VoatDataContext()) { var record = db.CommentVoteTracker.Where(x => x.CommentID == id && x.UserName == userName).FirstOrDefault(); Assert.IsNotNull(record, "Did not find Vote Record in database"); Assert.AreEqual(voteStatus, record.VoteStatus); Assert.AreEqual(voteValue, record.VoteValue); } } }