コード例 #1
0
        public ActionResult Create([Bind(Include = "MeetingId,BeginDateTime,Name,Location,MapLink")] Meetings meetings)
        {
            if (ModelState.IsValid)
            {
                db.Meetings.Add(meetings);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(meetings));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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"
            });
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
        public ActionResult Create([Bind(Include = "AnnouncementId,Description,Expiration")] Announcements announcements)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.Announcements.Add(announcements);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }
            catch (DataException)
            {
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists contact your administrator.");
            }

            return(View(announcements));
        }
コード例 #8
0
        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 }));
        }
コード例 #9
0
        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"));
        }
コード例 #10
0
        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());
        }
コード例 #11
0
        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());
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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());
        }
コード例 #14
0
        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"
            });
        }