コード例 #1
0
        public ActionResult UpdatePollTopic(long pollId, [FromForm] long topicId)
        {
            MyPollDelegate del = (Polls poll) => {
                poll.PollTopicId = topicId;
                _db.SaveChanges();
                TempData["FlashMessage"] = "Poll topic updated!";
            };

            return(MyPoll(pollId, del));
        }
コード例 #2
0
        public ActionResult UpdatePollStatus(long pollId, PollStatus pollStatus)
        {
            MyPollDelegate del = (Polls poll) => {
                poll.Status = (long)pollStatus;
                _db.SaveChanges();
                TempData["FlashMessage"] = "Poll status updated!";
            };

            return(MyPoll(pollId, del));
        }
コード例 #3
0
        public ActionResult EditPoll(long pollId)
        {
            MyPollDelegate del = (Polls poll) => {
                if (poll.ImageId != null)
                {
                    ViewData["PollImage"] = _db.PollImages.Single(img => img.Id == poll.ImageId && img.MemberId == _userId);
                }

                ViewData["Poll"]       = poll;
                ViewData["Choices"]    = _db.GetPollChoices(pollId);
                ViewData["PollTopics"] = _db.PollTopics.ToList();
            };

            return(MyPoll(pollId, del, View()));
        }
コード例 #4
0
        public ActionResult UpdatePollConfig(
            long pollId,
            [FromForm] bool hideVotingResults,
            [FromForm] bool hideLink2pollOwner,
            [FromForm] bool showResultsWhenClosed
            )
        {
            MyPollDelegate del = (Polls poll) => {
                poll.HideVotingResults     = hideVotingResults ? 1 : 0;
                poll.HideLink2pollOwner    = hideLink2pollOwner ? 1 : 0;
                poll.ShowResultsWhenClosed = showResultsWhenClosed ? 1 : 0;

                _db.SaveChanges();

                TempData["FlashMessage"] = "Poll config updated!";
            };

            return(MyPoll(pollId, del));
        }
コード例 #5
0
        public ActionResult DeletePoll(long pollId)
        {
            MyPollDelegate del = (Polls poll) => {
                using (var tran = _db.Database.BeginTransaction()) {
                    try {
                        PollChoices [] choicesToDelete = _db.PollChoices.Where(cho => cho.PollId == pollId).ToArray();
                        var            pollVotes2      = _db.PollVotes2.Where(v2 => v2.PollId == pollId);

                        List <long> imgIDs = new List <long>();

                        foreach (PollChoices choice in choicesToDelete)
                        {
                            if (choice.ImageId != null)
                            {
                                imgIDs.Add((long)choice.ImageId);
                            }

                            var pollVotes1 = _db.PollVotes1.Where(v1 => v1.PollChoiceId == choice.Id);

                            _db.PollVotes1.RemoveRange(pollVotes1);
                        }

                        if (poll.ImageId != null)
                        {
                            imgIDs.Add((long)poll.ImageId);
                        }

                        _db.PollChoices.RemoveRange(choicesToDelete);
                        _db.PollVotes2.RemoveRange(pollVotes2);
                        _db.Polls.Remove(poll);

                        _db.SaveChanges();

                        tran.Commit();
                    } catch (Exception) {
                        tran.Rollback();
                        throw;
                    }
                }
            };

            return(MyPoll(pollId, del, RedirectToAction("My", "Accounts")));
        }
コード例 #6
0
        public ActionResult UpdatePollLabels(long pollId, PollLabels model)
        {
            MyPollDelegate del = (Polls poll) => {
                if (ModelState.IsValid)
                {
                    poll.VoteButtonLabel = model.VoteButtonLabel;
                    poll.SeeResultsLabel = model.SeeResultsLabel;
                    poll.TotalVotesLabel = model.TotalVotesLabel;
                    poll.VotersLabel     = model.VotersLabel;
                    poll.IsClosedLabel   = model.IsClosedLabel;

                    _db.SaveChanges();

                    TempData["FlashMessage"] = "Poll labels updated!";
                }
                else
                {
                    TempData["ErrorMessage"] = _buildErrorMessage();
                }
            };

            return(MyPoll(pollId, del));
        }
コード例 #7
0
        private ActionResult MyPoll(long pollId, MyPollDelegate del, ActionResult retval = null)
        {
            if (_isUserLoggedIn() == false)
            {
                return(_redirectToLogin());
            }

            Polls poll = null;

            try {
                poll = _db.Polls.Single(p => p.Id == pollId && p.MemberId == _userId);
            } catch (InvalidOperationException) {
                return(NotFound());
            }

            del(poll);

            if (retval == null)
            {
                retval = RedirectToAction("EditPoll");
            }

            return(retval);
        }