public ActionResult Index()
        {
            Random r         = new Random(DateTime.Now.Millisecond);
            int    start     = r.Next(14980);
            var    repo      = ComputerRepositoryFactory.GetSyncRepository();
            var    computers = repo.GetComputers(start, 20);

            return(View(new ComputersViewModel {
                Computers = computers, IsAsync = false
            }));
        }
        public async Task <ActionResult> IndexAsync()
        {
            Random r         = new Random(DateTime.Now.Millisecond);
            int    start     = r.Next(14980);
            var    repo      = ComputerRepositoryFactory.GetAsyncRepository();
            var    computers = await repo.GetComputersAsync(start, 20);

            return(View(new ComputersViewModel {
                Computers = computers, IsAsync = true
            }));
        }
        public ActionResult Ping(int id)
        {
            var repo = ComputerRepositoryFactory.GetSyncRepository();
            var comp = repo.GetById(id);

            if (comp == null)
            {
                return(View((IView)null));
            }
            comp.StatusMessage = "Alive, " + Guid.NewGuid();
            comp.Updated       = DateTime.Now;
            return(View(repo.Save(comp)));
        }
        public async Task <ActionResult> Ping(int id)
        {
            var repo = ComputerRepositoryFactory.GetAsyncRepository();

            var comp = await repo.GetByIdAsync(id);

            if (comp == null)
            {
                return(View((IView)null));
            }
            comp.StatusMessage = "Alive, " + Guid.NewGuid();
            comp.Updated       = DateTime.Now;
            comp = await repo.SaveAsync(comp);

            Interlocked.Increment(ref CallsCount);
            return(View(comp));
        }