public ActionResult Create() { var data = GetUserData(); // TODO: переход по ссылке [localhost] + "чтото" в умной строке адреса у яндекс браузера создает нового пользователя "чтото" if (!data.IsNewUser()) { return Logon(); // TODO: передавать контекст-объект } try { data.IsValid().ThrowArgExceptionIfNotValid(); var provider = new UserContextRepository(); var wordProvider = new WordFactory(); var cardSizeProvider = new CardSizeProvider(); var cardProvider = new CardFactory(cardSizeProvider.GetCardSize(), new Shuffler<string>(), new Cutter<string>()); var cardCount = cardProvider.GetCards(wordProvider.GetAllWords()).Length; // TODO: уйти от запросов постоянных, просто кешировать слова, выделить слова и карточки все в один класс, в синглтон var newUC = provider.Create(Guid.NewGuid(), data.UserName, cardCount); provider.Add(newUC); AddToSession(newUC); return RedirectToGamePage(); } catch (ArgumentException aex) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest, aex.Message); } }
private Card GetCard(int cardIndex) { var words = GetWords(); var cardSizeProvider = new CardSizeProvider(); var provider = new CardFactory(cardSizeProvider.GetCardSize(), new Shuffler<string>(), new Cutter<string>()); return provider.GetCards(words) .FirstOrDefault(x => x.Index == cardIndex); }
static CardsController() { var wordProvider = new WordFactory(); var words = wordProvider.GetAllWords(); var sizeProvider = new CardSizeProvider(); var cardProvider = new CardFactory(sizeProvider.GetCardSize(), new Shuffler<string>(), new Cutter<string>()); cards = cardProvider.GetCards(words); }
// GET: Game public ActionResult Index() { var uc = ReadUserContextFromSession(); if (uc == null) return new HttpStatusCodeResult(HttpStatusCode.Unauthorized); var cardSizeProvider = new CardSizeProvider(); var cardIndex = GetNextCardIndex(uc); var card = GetCard(cardIndex); var vm = new GameVM() { Context = uc, CurrentCard = card }; return View(vm); }