public ActionResult Delete(int gameId) { var context = new UnityContext(); var game = context.GameResults.FirstOrDefault(r => r.Id == gameId); if (game == null) { ViewBag.Message = "игра не найдена"; return RedirectToAction("DeleteGame"); } context.GameResults.Remove(game); context.SaveChanges(); ViewBag.Message = "Игра удалена"; return RedirectToAction("DeleteGame"); }
public ActionResult CleanUp(FormCollection collection) { if (collection["UserName"] != User.Identity.Name) { ViewBag.Message = "Неверно введено ваше имя пользователя"; return View(); } var context = new UnityContext(); foreach (var value in context.GameResults) context.GameResults.Remove(value); context.SaveChanges(); ViewBag.Message = "Все результаты игр удалены."; return View(); }
public ActionResult PushResult(GameResultInfo result) { if (result.PushPassword != WebConstants.WebPassword) return new ContentResult { Content = "Password fail" }; var context = new UnityContext(); var users = context.UserProfiles.ToArray(); var tags = users.Select(u => u.CvarcTag).ToArray(); if (result.Players.Length == 2) { if (!tags.Contains(result.Players[0].CvarcTag) || !tags.Contains(result.Players[1].CvarcTag)) return new ContentResult {Content = "tag fail"}; context.GameResults.Add(new GameResults { Time = WebConstants.GetCurrentTime(), LeftPlayerUserName = users.First(u => u.CvarcTag == result.Players[0].CvarcTag).UserName, RightPlayerUserName = users.First(u => u.CvarcTag == result.Players[1].CvarcTag).UserName, LeftPlayerScores = result.Players[0].Score, RightPlayerScores = result.Players[1].Score, LogFileName = result.LogFileName, Type = result.Tag, Subtype = result.Subtag }); context.SaveChanges(); return new ContentResult {Content = "successful"}; } var player = result.Players[0]; if (!tags.Contains(player.CvarcTag)) return new ContentResult { Content = "tag fail" }; context.GameResults.Add(new GameResults { Time = WebConstants.GetCurrentTime(), LeftPlayerUserName = users.First(u => u.CvarcTag == player.CvarcTag).UserName, LeftPlayerScores = player.Score, LogFileName = result.LogFileName, Type = result.Tag, Subtype = result.Subtag }); context.SaveChanges(); return new ContentResult { Content = "successful" }; }
public ActionResult SayStatus(string password, bool isOnline) { if (password != WebConstants.WebPassword) return new ContentResult {Content = "password fail"}; var context = new UnityContext(); var status = context.UnityStatus.First(); if (status.Online == isOnline) return new ContentResult {Content = "already know!"}; status.Online = isOnline; if (isOnline) status.UpTime = WebConstants.GetCurrentTime(); context.SaveChanges(); return new ContentResult {Content = "successful"}; }
public ActionResult UploadSolution(SimpleFileView simpleFileView) { if (!Directory.Exists(WebConstants.BasePath + WebConstants.RelativeSolutionsPath)) Directory.CreateDirectory(WebConstants.BasePath + WebConstants.RelativeSolutionsPath); if (simpleFileView.UploadedFile == null) { ViewBag.Message = "Ошибка: Выберете файл для загрузки!"; return View(simpleFileView); } if (simpleFileView.UploadedFile.ContentLength > 7 * 512 * 1024) // 3.5 MB { ViewBag.Message = "Ошибка: Файл слишком большой! Максимальный размер 3.5 МБ. Попробуйте удалить все бинарные файлы из архива."; return View(simpleFileView); } var path = WebConstants.BasePath + WebConstants.RelativeSolutionsPath; var extention = simpleFileView.UploadedFile.FileName.Split('.').Last(); if (extention != "zip") { ViewBag.Message = "Ошибка: вы должны предоставить архив с решением в формате *.zip"; return View(simpleFileView); } var expectedFileName = User.Identity.Name + "." + extention; simpleFileView.UploadedFile.SaveAs(path + expectedFileName); var context = new UnityContext(); context.UserProfiles.First(u => u.UserName == User.Identity.Name).SolutionLoaded = WebConstants.GetCurrentTime(); context.SaveChanges(); ViewBag.Message = "Решение было загружено успешно!"; return View(simpleFileView); }
public ActionResult DeleteGamesByFilter(FormCollection collection) { var gameContext = new UnityContext(); var contextChanged = false; double minutesToDelete; if (double.TryParse(collection["Time"], out minutesToDelete)) { var timeToDeleteFrom = WebConstants.GetCurrentTime() - TimeSpan.FromMinutes(minutesToDelete); var gamesToDeleteByTime = gameContext.GameResults.Where(r => r.Time > timeToDeleteFrom).ToArray(); contextChanged = gamesToDeleteByTime.Length > 0; foreach (var game in gamesToDeleteByTime) gameContext.GameResults.Remove(game); } string tag = collection["Tag"]; string subtag = collection["Subtag"]; var gamesToDelete = string.IsNullOrEmpty(subtag) ? gameContext.GameResults.Where(r => r.Type == tag).ToArray() : gameContext.GameResults.Where(r => r.Type == tag && r.Subtype == subtag).ToArray(); contextChanged = contextChanged || gamesToDelete.Length > 0; foreach (var game in gamesToDelete) gameContext.GameResults.Remove(game); if (contextChanged) gameContext.SaveChanges(); return View(); }
public ActionResult RegisterUser(RegisterModel model) { if (WebSecurity.UserExists(model.UserName)) { ViewBag.Message = "Такой пользователь уже есть!"; return View(model); } if (!RegisterModel.IsCorrectUserName(model.UserName)) { ViewBag.Message = "В имени пользователя допустимы только рус/англ буквы, точка, пробел, земля и дефис."; return View(model); } WebSecurity.CreateUserAndAccount(model.UserName, model.Password); var context = new UnityContext(); context.UserProfiles.First(z => z.UserName == model.UserName).CvarcTag = Guid.NewGuid().ToString(); context.SaveChanges(); ViewBag.Message = "Аккаунт создан успешно"; return View(); }
public ActionResult RegisterManyUsers(string users) { var splited = users.Split(new[] {'\n', '\r'}, StringSplitOptions.RemoveEmptyEntries) .Where(l => !string.IsNullOrEmpty(l)).Select(line => line.Split(';')).ToArray(); var uncorrect = splited.Where(s => s.Length < 2 || !RegisterModel.IsCorrectUserName(s[0]) || s[1].Length < 6 || WebSecurity.UserExists(s[0])) .ToArray(); if (uncorrect.Any()) { ViewBag.Message = "Что-то не так(пароль меньше 6 или не указан, в имени некорректные символы, пользователь уже сущ-вует) для пользователей: "; foreach (var value in uncorrect) ViewBag.Message += string.Join(";", value); return View(); } ViewBag.Message = ""; foreach (var value in splited) ViewBag.Message += WebSecurity.CreateUserAndAccount(value[0], value[1]); var userNames = splited.Select(s => s[0]); var context = new UnityContext(); foreach (var value in splited) { var name = value[0]; var user = context.UserProfiles.First(u => u.UserName == name); user.CvarcTag = Guid.NewGuid().ToString(); if (value.Length > 2) user.Email = value[2]; if (value.Length > 3) user.SocialLink = value[3]; } context.SaveChanges(); ViewBag.Message = "Пользователи успешно зарегистрированы"; return View(); }
public ActionResult SetAdditionalInfo(string email, string socialLink) { /*Смысл примерно такой: если пользователь указал что-то -- меняем всегда. Если не указал -- проверяем на то, что он уже не пустой. Если он уже пустой -- принудительно просим ввести еще раз. Если нет -- все норм*/ var context = new UnityContext(); var user = context.UserProfiles.First(u => u.UserName == User.Identity.Name); bool changed = false; if (!string.IsNullOrEmpty(email)) { user.Email = email; changed = true; } else if (string.IsNullOrEmpty(user.Email)) { ViewBag.Message = "Вам нужно указать email"; return View(user); } if (changed) context.SaveChanges(); if (!string.IsNullOrEmpty(socialLink)) { if (!socialLink.StartsWith("http")) socialLink = "http://" + socialLink; user.SocialLink = socialLink; changed = true; } else if (string.IsNullOrEmpty(user.SocialLink)) { ViewBag.Message = "Вам нужно указать ссылку на соц сеть"; return View(user); } if (changed) context.SaveChanges(); return RedirectToAction("Manage"); }
public ActionResult Register(RegisterModel model) { if (!WebConstants.IsRegistrationAvailable) return View(); if (!ModelState.IsValid) return View(model); // Attempt to register the user try { if (!RegisterModel.IsCorrectUserName(model.UserName)) { ViewBag.Message = "В имени пользователя допустимы только рус/англ буквы, точка, пробел, земля и дефис."; return View(model); } WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new {Email = model.Email}); var context = new UnityContext(); context.UserProfiles.First(z => z.UserName == model.UserName).CvarcTag = Guid.NewGuid().ToString(); context.SaveChanges(); WebSecurity.Login(model.UserName, model.Password); return RedirectToAction("Index", "Home"); } catch (MembershipCreateUserException e) { ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); } // If we got this far, something failed, redisplay form return View(model); }
public ActionResult RecreateCvarcTag() { if (!WebConstants.IsRecreateTagAvailable) return RedirectToAction("Manage", new {Message = ManageMessageId.RecreateCvarcTagFail}); var context = new UnityContext(); context.UserProfiles.First(u => u.UserName == User.Identity.Name).CvarcTag = Guid.NewGuid().ToString(); context.SaveChanges(); return RedirectToAction("Manage", new {Message = ManageMessageId.RecreateCvarcTagSuccess}); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string provider = null; string providerUserId = null; if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId)) { return RedirectToAction("Manage"); } if (ModelState.IsValid) { // Insert a new user into the database using (UnityContext db = new UnityContext()) { UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); // Check if user already exists if (user == null) { // Insert name into the profile table db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false); return RedirectToLocal(returnUrl); } else { ModelState.AddModelError("UserName", "Такой пользователь уже существует. Выберете другое имя."); } } } ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return View(model); }