public void SaveCurrentStateTest()
        {
            var page1 = new SavedWebpage
            {
                Url        = "www.wp.pl",
                LastUpdate = DateTime.Parse("2001-01-13T23:00:00")
            };

            var page2 = new SavedWebpage
            {
                Url             = "wwww.interia.pl",
                UpdateFrequency = 30
            };

            var state = new AppStateConfiguration();

            state.SavedWebpages = new List <SavedWebpage>
            {
                page1,
                page2
            };

            _appStateManager.SaveCurrentState(state);
            Assert.AreEqual(_appStateManager.GetState().SavedWebpages.Count, 2);
        }
Пример #2
0
        public ActionResult Results()
        {
            var ResultsViewModel = new ResultsViewModel();

            ResultsViewModel.Results = new List <VoteResult>();
            var state = AppStateManager.GetState();
            var Votes = state.Votes.Where(j => j.Timestamp >= DateTime.Today);

            if (Votes.Count() == 0)
            {
                ResultsViewModel.Winner     = PickRandom(state.Restaurants);
                ResultsViewModel.TieBreaker = ResultsViewModel.Winner;
                return(View(ResultsViewModel));
            }

            //show what current user voted for.
            if (Votes.Any(i => i.Username == Request["LOGON_USER"]))
            {
                ResultsViewModel.YourVote = Votes.First(i => i.Username == Request["LOGON_USER"]);
            }

            //make list of result tallies
            foreach (var k in state.Restaurants)
            {
                ResultsViewModel.Results.Add(new VoteResult {
                    Count = 0, Restaurant = k
                });
            }

            //fill with votes
            foreach (var k in Votes)
            {
                var result = ResultsViewModel.Results.First(j => j.Restaurant.ID == k.Restaurant.ID);
                result.Count++;
            }

            //remove tallies with 0 votes.
            ResultsViewModel.Results.RemoveAll(i => i.Count == 0);

            //if there's a tie for first, figure out how many tied.
            var WinCount = ResultsViewModel.Results.OrderByDescending(j => j.Count).First().Count;
            var WinTies  = (from j in ResultsViewModel.Results
                            where j.Count == WinCount
                            select j.Restaurant).ToList();

            //then pick randomly from the ties.
            if (WinTies.Count() > 1)
            {
                ResultsViewModel.Winner     = PickRandom(WinTies);
                ResultsViewModel.TieBreaker = ResultsViewModel.Winner;
                return(View(ResultsViewModel));
            }
            //If there's a clear winner, return it.
            ResultsViewModel.Winner     = WinTies.First();
            ResultsViewModel.TieBreaker = null;
            return(View(ResultsViewModel));
        }
Пример #3
0
        public ActionResult Index()
        {
            var state      = AppStateManager.GetState();
            var VotesToday = state.Votes.Where(i => i.Timestamp >= DateTime.Today);

            //if (VotesToday.Any(i => i.Username == Request["LOGON_USER"]))
            //{
            //    return RedirectToAction("Results");
            //}
            return(View(state.Restaurants.OrderBy(i => i.Name)));
        }
Пример #4
0
        public PageChanges CheckIfWebpageHasChanged(int webpageId)
        {
            var webPages = _appStateManager.GetState();

            if (webPages != null)
            {
                var webPage = webPages.SavedWebpages.Where(w => w.Id == webpageId).SingleOrDefault();
                var diff    = _changesChecker.Check(webPage, new Uri(webPage.Url));

                return(new PageChanges
                {
                    Changes = diff,
                    HasChanged = true
                });
            }

            return(new PageChanges
            {
                HasChanged = false,
                Changes = null
            });
        }
Пример #5
0
        public ActionResult Vote(int id)
        {
            var Username = Request["LOGON_USER"];
            var state    = AppStateManager.GetState();

            if (!state.Restaurants.Any(i => i.ID == id))
            {
                throw new Exception("No state found with that ID.");
            }
            if (state.Votes.Any(i => i.Timestamp >= DateTime.Today && i.Username == Username))
            {
                return(RedirectToAction("Results"));
            }
            state.Vote(id);
            AppStateManager.SaveState(state);
            return(RedirectToAction("Results"));
        }