public OAuthRefreshTokenIndexViewModel(
            TokenSearchCriteria searchCriteria,
            IClientsRepository clientRepository,
            ICodeTokenRepository codeTokenRepository,
            bool doSearch = false)
        {
            this.SearchCriteria = searchCriteria;
            var clients =
                from item in clientRepository.GetAll()
                select new
                {
                    item.Name, item.ID
                };
            var list =
                (from item in clients.ToArray()
                select new SelectListItem
                {
                    Text = item.Name, Value=item.ID.ToString()
                }).ToList();
            list.Insert(0, new SelectListItem { Text = "-none selected-", Value="" });
            this.Clients = list;

            if (searchCriteria.HasValues || doSearch)
            {
                var results = codeTokenRepository.Search(searchCriteria.ClientID, searchCriteria.Username, searchCriteria.Scope, CodeTokenType.RefreshTokenIdentifier);
                this.SearchResults = results.OrderBy(x=>x.TimeStamp);
            }
        }
 public ActionResult IndexPost(TokenSearchCriteria searchCriteria)
 {
     var vm = new OAuthRefreshTokenIndexViewModel(searchCriteria, clientRepository, codeTokenRepository, true);
     return View("Index", vm);
 }
 public ActionResult DeleteToken(string token, TokenSearchCriteria searchCriteria)
 {
     codeTokenRepository.DeleteCode(token);
     return RedirectToAction("Index", new { searchCriteria.Username, searchCriteria.Scope, searchCriteria.ClientID });
 }