protected void Page_Load(object sender, EventArgs e) { var Filename = Request.QueryString["Filename"].ToString(); var Uploader = Request.QueryString["Uploader"].ToString(); var Page = Convert.ToInt32(Request.QueryString["Page"]); using (Dal.DB db = new Dal.DB()) { var files = (from f in db.Uploads where f.Filename.Contains(Filename) && f.User.Name.Contains(Uploader) orderby f.Time descending select f).ToList(); if (Session["User"] == null || (Session["User"] as Entity.User).Role < Entity.UserRole.Root) { files = files.Where(x => x.Type == Entity.UploadType.Public).ToList(); } List<FileListItem> lst = new List<FileListItem>(); files = files.Skip(20 * Page).Take(20).ToList(); foreach (var f in files) { lst.Add(new FileListItem() { ID = f.ID, Filename = f.Filename, Time = f.Time, Size = f.Size, Uploader = f.User.Name }); } JavaScriptSerializer jss = new JavaScriptSerializer(); Response.Write(jss.Serialize(lst)); } }
public static List<SignLog> GetAllSigns(string dataName,int Page, int DepartmentID) { List<SignLog> Signs = new List<SignLog>(); Dal.DB db = new Dal.DB(); db.Configuration.ProxyCreationEnabled = false; Signs = (from s in db.SignLogs select s).ToList(); if(dataName!="") { Signs = (from s in db.SignLogs where s.User.Name.Contains(dataName) select s).ToList(); } if (DepartmentID != 0) { Signs = (from s in db.SignLogs where s.User.DepartmentID == DepartmentID select s).ToList(); } foreach (SignLog Sign in Signs) { Sign.User = db.Users.Find(Sign.UserID); Sign.User.DepartmentTitle = db.Departments.Find(Sign.User.DepartmentID).Title; } return Signs; }
public static int Count() { using (Dal.DB db = new Dal.DB()) { return db.Users.Count(); } }
protected void Page_Load(object sender, EventArgs e) { var Name = Request.QueryString["Name"].ToString(); var Page = Convert.ToInt32(Request.QueryString["Page"]); var DepartmentID = Convert.ToInt32(Request.QueryString["DepartmentID"]); using (Dal.DB db = new Dal.DB()) { db.Configuration.ProxyCreationEnabled = false; var users = (from u in db.Users where u.Name.Contains(Name) orderby u.ID ascending select u).ToList(); for (int i = 0; i < users.Count(); i++) { if (users[i].Department != null) users[i].DepartmentTitle = users[i].Department.Title; else users[i].DepartmentTitle = ""; } if (DepartmentID != 0) { users = users.Where(x => x.DepartmentID == DepartmentID).ToList(); } JavaScriptSerializer jss = new JavaScriptSerializer(); jss.MaxJsonLength = 102400000; Response.Write(jss.Serialize(users)); } }
public static void Insert(UserLog user_log) { using (Dal.DB db = new Dal.DB()) { db.UserLogs.Add(user_log); db.SaveChanges(); } }
public static List<Department> GetAllDepartment() { List<Department> Departments = new List<Department>(); using (Dal.DB db = new Dal.DB()) { db.Configuration.ProxyCreationEnabled = false; Departments = (from d in db.Departments select d).ToList(); } return Departments; }
/// <summary> /// 题目编号->比赛题目索引 /// </summary> /// <param name="problem_id"></param> /// <returns></returns> public static int FindProblem(int problem_id, int contest_id) { using (Dal.DB db = new Dal.DB()) { var problemids = (from p in db.Problems where p.ContestID == contest_id orderby p.Score ascending select p.ID).ToList(); return(problemids.FindIndex(x => x == problem_id)); } }
/// <summary> /// 题目编号->比赛题目索引 /// </summary> /// <param name="problem_id"></param> /// <returns></returns> public static int FindProblem(int problem_id, int contest_id) { using (Dal.DB db = new Dal.DB()) { var problemids = (from p in db.Problems where p.ContestID == contest_id orderby p.Score ascending select p.ID).ToList(); return problemids.FindIndex(x => x == problem_id); } }
public static string DeleteDepartment(int department_id) { Department Department=new Department (); using (Dal.DB db = new Dal.DB()) { Department = db.Departments.Find(department_id); // Department.Title = "aaa"; db.Departments.Remove(Department); db.SaveChanges(); } return "ok"; }
/// <summary> /// 添加一个用户 /// </summary> /// <param name="user">用户实体</param> /// <returns>产生的用户id,如果失败返回-1</returns> public static int Insert(User user) { using (Dal.DB db = new Dal.DB()) { if (db.Users.Any(x => x.Username == user.Username)) { return -1; } else { db.Users.Add(user); db.SaveChanges(); return user.ID; } } }
/// <summary> /// 重构某用户的排名信息 /// </summary> /// <param name="user_id"></param> /// <param name="contest_id"></param> /// <param name="problemids"></param> public static void UpdateSingleUser(int user_id, int contest_id, List <int> problemids) { using (Dal.DB db = new Dal.DB()) { Entity.StandingItem standing = new Entity.StandingItem(); standing.Type = (Entity.ContestType)(from c in db.Contests where c.ID == contest_id select c.TypeAsInt).FirstOrDefault(); standing.UserID = user_id; standing.Competitor = (from u in db.Users where u.ID == user_id select u.NickName).FirstOrDefault(); if (standing.Type == Entity.ContestType.Codeforces || standing.Type == Entity.ContestType.TopCoder) { standing.SuccessfulHack = (from h in db.Hacks where h.HackerID == user_id && h.StatusAsInt == (int)Entity.HackStatus.Success && problemids.Contains(h.Record.Problem.ID) select h.ID).Count(); standing.UnsuccessfulHack = (from h in db.Hacks where h.HackerID == user_id && h.StatusAsInt == (int)Entity.HackStatus.Failure && problemids.Contains(h.Record.Problem.ID) select h.ID).Count(); } if (standing.Details == null) { standing.Details = new Entity.StandingDetail[problemids.Count]; } int userindex = (Standings[contest_id] as List <Entity.StandingItem>).FindIndex(x => x.UserID == user_id); if (userindex == -1) { (Standings[contest_id] as List <Entity.StandingItem>).Add(standing); } else { (Standings[contest_id] as List <Entity.StandingItem>)[userindex] = standing; } foreach (int problem_id in problemids) { UpdateSingleDetail(user_id, problem_id, contest_id, standing.Type); } } }
/// <summary> /// 重新构建排名 /// </summary> /// <param name="contest_id"></param> public static void Rebuild(int contest_id)//Center server only { Standings[contest_id] = null; GC.Collect(); Standings[contest_id] = new List <Entity.StandingItem>(); using (Dal.DB db = new Dal.DB()) { var problemids = (from p in db.Problems where p.ContestID == contest_id orderby p.Score ascending select p.ID).ToList(); var userids = (from r in db.Records where problemids.Contains(r.ProblemID) select r.UserID).Distinct().ToList(); foreach (int uid in userids) { UpdateSingleUser(uid, contest_id, problemids); } } }
protected void Page_Load(object sender, EventArgs e) { if (Request.Form["Username"] == null || Request.Form["Password"] == null) { return; } using (Dal.DB db = new Dal.DB()) { var username = Request.Form["Username"].ToString(); var password = Request.Form["Password"].ToString(); var bytespwd = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(password)); Entity.User user = (from u in db.Users where u.Username == username && u.Password == bytespwd select u).SingleOrDefault(); if (user == null) return; Session["User"] = user; Response.Write("OK"); } }
//Center server only /// <summary> /// 重新构建排名 /// </summary> /// <param name="contest_id"></param> public static void Rebuild(int contest_id) { Standings[contest_id] = null; GC.Collect(); Standings[contest_id] = new List<Entity.StandingItem>(); using (Dal.DB db = new Dal.DB()) { var problemids = (from p in db.Problems where p.ContestID == contest_id orderby p.Score ascending select p.ID).ToList(); var userids = (from r in db.Records where problemids.Contains(r.ProblemID) select r.UserID).Distinct().ToList(); foreach (int uid in userids) { UpdateSingleUser(uid, contest_id, problemids); } } }
/// <summary> /// 更新某用户某题的排名元素 /// </summary> /// <param name="user_id"></param> /// <param name="problem_id"></param> /// <param name="contest_id"></param> /// <param name="Type"></param> public static void UpdateSingleDetail(int user_id, int problem_id, int contest_id, Entity.ContestType Type) { using (Dal.DB db = new Dal.DB()) { Entity.StandingDetail detail = new Entity.StandingDetail(); detail.DisplayFormat = Type; switch (Type) { case Entity.ContestType.OI: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.FirstScore = r.Score.GetValueOrDefault(); detail.SecondScore = r.TimeUsage.GetValueOrDefault(); } break; } case Entity.ContestType.ACM: { var r = Dal.RecordHelper.GetFirstAcceptedRecord(user_id, problem_id); if (r != null) { detail.FirstScore = Dal.RecordHelper.GetEffectiveCount(user_id, problem_id, r.SubmissionTime); var BeginTime = (from c in db.Contests where c.ID == contest_id select c.StartTime).FirstOrDefault(); detail.SecondScore = Convert.ToInt32((r.SubmissionTime - BeginTime).TotalSeconds) + 60 * 20 * (detail.FirstScore - 1); } else { detail.FirstScore = Dal.RecordHelper.GetEffectiveCount(user_id, problem_id); detail.SecondScore = 0; } break; } case Entity.ContestType.TopCoder: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.RecordID = r.ID; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); if (r.Status == Entity.RecordStatus.Accepted) { int problem_pts = (from p in db.Problems where p.ID == problem_id select p.Score).FirstOrDefault(); DateTime BeginTime = (from pv in db.ProblemViews where pv.ProblemID == problem_id && pv.UserID == user_id select pv.Time).FirstOrDefault(); int seconds = (int)(r.SubmissionTime - BeginTime).TotalSeconds; int minutes = seconds / 60; detail.FirstScore = Convert.ToInt32(problem_pts * (1 - 0.004 * minutes * minutes)) - 50 * detail.ThirdScore; //Topcoder动态分数计算公式 if (detail.FirstScore < problem_pts * 0.3) { detail.FirstScore = (int)(problem_pts * 0.3); } detail.SecondScore = seconds; } } else { detail.FirstScore = 0; detail.SecondScore = 0; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); } break; } case Entity.ContestType.Codeforces: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.RecordID = r.ID; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); if (r.Status == Entity.RecordStatus.Accepted) { int problem_pts = (from p in db.Problems where p.ID == problem_id select p.Score).FirstOrDefault(); DateTime BeginTime = (from c in db.Contests where c.ID == contest_id select c.StartTime).FirstOrDefault(); int seconds = (int)(r.SubmissionTime - BeginTime).TotalSeconds; int minutes = seconds / 60; detail.FirstScore = Convert.ToInt32(problem_pts * (1 - 0.004 * minutes)) - 50 * detail.ThirdScore; //Codeforces动态分数计算公式 if (detail.FirstScore < problem_pts * 0.3) { detail.FirstScore = (int)(problem_pts * 0.3); } detail.SecondScore = seconds; } } else { detail.FirstScore = 0; detail.SecondScore = 0; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); } break; } } int userindex = (Standings[contest_id] as List <Entity.StandingItem>).FindIndex(x => x.UserID == user_id); (Standings[contest_id] as List <Entity.StandingItem>)[userindex].Details[FindProblem(problem_id, contest_id)] = detail; } }
/// <summary> /// 重构某用户的排名信息 /// </summary> /// <param name="user_id"></param> /// <param name="contest_id"></param> /// <param name="problemids"></param> public static void UpdateSingleUser(int user_id, int contest_id, List<int> problemids) { using (Dal.DB db = new Dal.DB()) { Entity.StandingItem standing = new Entity.StandingItem(); standing.Type = (Entity.ContestType)(from c in db.Contests where c.ID == contest_id select c.TypeAsInt).FirstOrDefault(); standing.UserID = user_id; standing.Competitor = (from u in db.Users where u.ID == user_id select u.NickName).FirstOrDefault(); if (standing.Type == Entity.ContestType.Codeforces || standing.Type == Entity.ContestType.TopCoder) { standing.SuccessfulHack = (from h in db.Hacks where h.HackerID == user_id && h.StatusAsInt == (int)Entity.HackStatus.Success && problemids.Contains(h.Record.Problem.ID) select h.ID).Count(); standing.UnsuccessfulHack = (from h in db.Hacks where h.HackerID == user_id && h.StatusAsInt == (int)Entity.HackStatus.Failure && problemids.Contains(h.Record.Problem.ID) select h.ID).Count(); } if (standing.Details == null) standing.Details = new Entity.StandingDetail[problemids.Count]; int userindex=(Standings[contest_id] as List<Entity.StandingItem>).FindIndex(x=>x.UserID==user_id); if (userindex == -1) { (Standings[contest_id] as List<Entity.StandingItem>).Add(standing); } else { (Standings[contest_id] as List<Entity.StandingItem>)[userindex] = standing; } foreach (int problem_id in problemids) { UpdateSingleDetail(user_id, problem_id, contest_id, standing.Type); } } }
/// <summary> /// 更新某用户某题的排名元素 /// </summary> /// <param name="user_id"></param> /// <param name="problem_id"></param> /// <param name="contest_id"></param> /// <param name="Type"></param> public static void UpdateSingleDetail(int user_id, int problem_id, int contest_id, Entity.ContestType Type) { using (Dal.DB db = new Dal.DB()) { Entity.StandingDetail detail = new Entity.StandingDetail(); detail.DisplayFormat = Type; switch (Type) { case Entity.ContestType.OI: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.FirstScore = r.Score.GetValueOrDefault(); detail.SecondScore = r.TimeUsage.GetValueOrDefault(); } break; } case Entity.ContestType.ACM: { var r = Dal.RecordHelper.GetFirstAcceptedRecord(user_id, problem_id); if (r != null) { detail.FirstScore = Dal.RecordHelper.GetEffectiveCount(user_id, problem_id, r.SubmissionTime); var BeginTime = (from c in db.Contests where c.ID == contest_id select c.StartTime).FirstOrDefault(); detail.SecondScore = Convert.ToInt32((r.SubmissionTime - BeginTime).TotalSeconds) + 60 * 20 * (detail.FirstScore - 1); } else { detail.FirstScore = Dal.RecordHelper.GetEffectiveCount(user_id, problem_id); detail.SecondScore = 0; } break; } case Entity.ContestType.TopCoder: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.RecordID = r.ID; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); if (r.Status == Entity.RecordStatus.Accepted) { int problem_pts = (from p in db.Problems where p.ID == problem_id select p.Score).FirstOrDefault(); DateTime BeginTime = (from pv in db.ProblemViews where pv.ProblemID == problem_id && pv.UserID == user_id select pv.Time).FirstOrDefault(); int seconds = (int)(r.SubmissionTime - BeginTime).TotalSeconds; int minutes = seconds / 60; detail.FirstScore = Convert.ToInt32(problem_pts * (1 - 0.004 * minutes * minutes)) - 50 * detail.ThirdScore;//Topcoder动态分数计算公式 if (detail.FirstScore < problem_pts * 0.3) detail.FirstScore = (int)(problem_pts * 0.3); detail.SecondScore = seconds; } } else { detail.FirstScore = 0; detail.SecondScore = 0; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); } break; } case Entity.ContestType.Codeforces: { var r = Dal.RecordHelper.GetLastRecord(user_id, problem_id); if (r != null) { detail.RecordID = r.ID; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); if (r.Status == Entity.RecordStatus.Accepted) { int problem_pts = (from p in db.Problems where p.ID == problem_id select p.Score).FirstOrDefault(); DateTime BeginTime = (from c in db.Contests where c.ID == contest_id select c.StartTime).FirstOrDefault(); int seconds = (int)(r.SubmissionTime - BeginTime).TotalSeconds; int minutes = seconds / 60; detail.FirstScore = Convert.ToInt32(problem_pts * (1 - 0.004 * minutes)) - 50 * detail.ThirdScore;//Codeforces动态分数计算公式 if (detail.FirstScore < problem_pts * 0.3) detail.FirstScore = (int)(problem_pts * 0.3); detail.SecondScore = seconds; } } else { detail.FirstScore = 0; detail.SecondScore = 0; detail.ThirdScore = Dal.RecordHelper.GetNoZeroPtsEffectiveCount(user_id, problem_id); } break; } } int userindex = (Standings[contest_id] as List<Entity.StandingItem>).FindIndex(x=>x.UserID == user_id); (Standings[contest_id] as List<Entity.StandingItem>)[userindex].Details[FindProblem(problem_id, contest_id)] = detail; } }