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();
 }
Example #2
0
        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);
        }
Example #3
0
        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);
            //}
        }
Example #4
0
        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");
            }
        }
Example #5
0
        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));
        }
Example #6
0
        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);
                }
            }
        }