public ActionResult Create() { var contest = new Entity.Contest { AllowClarification = true, AllowPrintRequest = false, Begin = Convert.ToDateTime("2099-1-1 8:00"), End = Convert.ToDateTime("2099-1-1 11:00"), Format = Entity.ContestFormat.OI, Password = null, Content = "", Ready = false, Title = ViewBag.CurrentUser.Nickname + "创建的比赛", RatingBegin = 0, RatingEnd = 4000 }; var manager = new Entity.ContestManager { ContestID = contest.ID, IsCreator = true, UserID = ViewBag.CurrentUser.ID }; DbContext.Contests.Add(contest); DbContext.ContestManagers.Add(manager); DbContext.SaveChanges(); return(RedirectToAction("General", "ContestSettings", new { id = contest.ID })); }
public HomeContest(Entity.Contest contest) { ID = contest.ID; Title = contest.Title; Begin = contest.Begin; End = contest.End; RestBegin = contest.RestBegin; RestEnd = contest.RestEnd; }
public void OnFragmentNavigation(FirstFloor.ModernUI.Windows.Navigation.FragmentNavigationEventArgs e) { contest = App.Server.GetContest(int.Parse(e.Fragment)); contest_id = contest.ID; RebuildColumn(contest_id); StandingItems = Bll.StandingsCache.Standings[contest_id] as List<Entity.StandingItem>; Sort(); dgStandings.ItemsSource = StandingItems; dgStandings.Items.Refresh(); }
public void OnFragmentNavigation(FirstFloor.ModernUI.Windows.Navigation.FragmentNavigationEventArgs e) { contest = App.Server.GetContest(int.Parse(e.Fragment)); contest_id = contest.ID; RebuildColumn(contest_id); StandingItems = Bll.StandingsCache.Standings[contest_id] as List <Entity.StandingItem>; Sort(); dgStandings.ItemsSource = StandingItems; dgStandings.Items.Refresh(); }
public Standing(Entity.User user, Entity.Contest contest) { UserID = user.ID; Details = new List <StandingCol>(); var problems = contest.Problems.OrderBy(x => x.Credit); foreach (var problem in problems) { Details.Add(new StandingCol(user, problem)); } Key1 = Details.Sum(x => x.Key1); Key2 = Details.Sum(x => x.Key2); Key3 = Details.Sum(x => x.Key3); Gravatar = Helpers.Gravatar.GetAvatarURL(user.Gravatar, 180); Nickname = Helpers.ColorName.GetNicknameHtml(user.Nickname, user.Ratings.Sum(x => x.Credit) + 1500); UserID = user.ID; Display1 = Key1.ToString(); switch (contest.Format) { case Entity.ContestFormat.OI: Display2 = Key2 + " ms"; break; case Entity.ContestFormat.OPJOI: Display2 = Key2.ToString(); break; case Entity.ContestFormat.ACM: Display2 = new TimeSpan(0, 0, Key2).ToString("c"); break; case Entity.ContestFormat.Codeforces: case Entity.ContestFormat.TopCoder: if (Key2 == 0 && Key3 == 0) { Display2 = ""; } else if (Key2 != 0 && Key3 == 0) { Display2 = "+" + Key2; } else if (Key2 == 0 && Key3 != 0) { Display2 = "-" + Key3; } else { Display2 = "+" + Key2 + " : -" + Key3; } Key1 += Key2 * 100; Key1 -= Key3 * 50; Display1 = Key1.ToString(); break; } }
public void OnFragmentNavigation(FragmentNavigationEventArgs e) { int id = int.Parse(e.Fragment); Entity.Contest contest = App.Server.GetContest(id); var wholeRange = new TextRange(txtDescription.Document.ContentStart, txtDescription.Document.ContentEnd); using (MemoryStream mem = new MemoryStream(Encoding.UTF8.GetBytes(contest.Description))) { wholeRange.Load(mem, DataFormats.Rtf); } }
public static bool IsUserInPrivateContest(Entity.User user, Entity.Contest contest) { if (DateTime.Now < contest.Begin || DateTime.Now >= contest.End) { return(true); } if (string.IsNullOrEmpty(contest.Password)) { return(true); } if (user == null) { return(false); } var joinlog = contest.JoinLogs.Where(x => x.UserID == user.ID).FirstOrDefault(); if (joinlog == null) { if (user.Role >= Entity.UserRole.Master || (from cm in contest.Managers select cm.UserID).Contains(user.ID)) { Database.DB DbContext = new Database.DB(); DbContext.JoinLogs.Add(new Entity.JoinLog { ContestID = contest.ID, UserID = user.ID }); DbContext.SaveChanges(); return(true); } else { return(false); } } return(true); }
public Contest(Entity.Contest contest) { ID = contest.ID; Format = contest.Format.ToString(); ProblemCount = contest.Problems.Count; Time = contest.Begin.ToString("yyyy-MM-dd HH:mm"); TimeLength = Helpers.Time.ToVagueTimeLength(contest.Begin, contest.End); Title = HttpUtility.HtmlEncode(contest.Title); Database.DB DbContext = new Database.DB(); UserCount = (from s in DbContext.Statuses let pid = (from p in DbContext.Problems where p.ContestID == contest.ID select p.ID).ToList() where pid.Contains(s.ProblemID) && s.Time >= contest.Begin && s.Time < contest.End select s.UserID).Distinct().Count(); Managers = ""; foreach (var m in contest.Managers) { Managers += String.Format("<a href='/User/{0}'>{1}</a> ", m.UserID, Helpers.ColorName.GetNicknameHtml(m.User.Nickname, m.User.Ratings.Sum(x => x.Credit) + 1500)); } Rating = ""; if (contest.Ready) { Rating = string.Format("<span class='label gray'>评级赛({0}~{1})</span> ", contest.RatingBegin, contest.RatingEnd); } if (string.IsNullOrEmpty(contest.Password)) { Private = false; } else { Private = true; } }
public ActionResult General(int id, Entity.Contest model) { if (!ViewBag.IsMaster) { return(RedirectToAction("Message", "Shared", new { msg = "您没有权限对本场比赛进行任何修改!" })); } var contest = DbContext.Contests.Find(id); if (contest.Password != model.Password) { var joinlogs = (from j in DbContext.JoinLogs where j.ContestID == id select j).ToList(); foreach (var joinlog in joinlogs) { DbContext.JoinLogs.Remove(joinlog); } DbContext.SaveChanges(); } contest.Begin = model.Begin; contest.RestBegin = model.RestBegin; contest.RestEnd = model.RestEnd; contest.End = model.End; contest.Title = model.Title; contest.Password = model.Password; contest.Content = model.Content; contest.Format = model.Format; contest.RatingBegin = model.RatingBegin; contest.RatingEnd = model.RatingEnd; contest.AllowClarification = model.AllowClarification; contest.AllowPrintRequest = model.AllowPrintRequest; if (model.RatingBegin > model.RatingEnd) { return(RedirectToAction("Message", "Shared", new { msg = "能力值不合法" })); } if (((Entity.User)ViewBag.CurrentUser).Role >= Entity.UserRole.Master) { contest.Ready = model.Ready;//这里只有系统管理员才可以设置这个选项,比赛创建者、管理员均无权 } if (contest.Format == Entity.ContestFormat.TopCoder) { if (!(contest.Begin < contest.RestBegin && contest.RestBegin <= contest.RestEnd && contest.RestEnd < contest.End)) { return(RedirectToAction("Message", "Shared", new { msg = "比赛时间或休息时间不合法" })); } } else { if (!(contest.Begin < contest.End)) { return(RedirectToAction("Message", "Shared", new { msg = "比赛时间设定不合法" })); } contest.RestBegin = null; contest.RestEnd = null; } if (string.IsNullOrEmpty(contest.Password)) { contest.Password = null; } DbContext.SaveChanges(); return(RedirectToAction("General", "ContestSettings", new { id = id })); }
public ActionResult Create() { var contest = new Entity.Contest { AllowClarification = true, AllowPrintRequest = false, Begin = Convert.ToDateTime("2099-1-1 8:00"), End = Convert.ToDateTime("2099-1-1 11:00"), Format = Entity.ContestFormat.OI, Password = null, Content = "", Ready = false, Title = ViewBag.CurrentUser.Nickname +"创建的比赛", RatingBegin = 0, RatingEnd = 4000 }; var manager = new Entity.ContestManager { ContestID = contest.ID, IsCreator = true, UserID = ViewBag.CurrentUser.ID }; DbContext.Contests.Add(contest); DbContext.ContestManagers.Add(manager); DbContext.SaveChanges(); return RedirectToAction("General", "ContestSettings", new { id = contest.ID }); }