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;
        }
Beispiel #3
0
 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));
     }
 }
Beispiel #5
0
 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;
 }
Beispiel #7
0
 /// <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));
     }
 }
Beispiel #8
0
 /// <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";
 }
Beispiel #10
0
 /// <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;
         }
     }
 }
Beispiel #11
0
 /// <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);
         }
     }
 }
Beispiel #12
0
 /// <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");
     }
 }
Beispiel #14
0
 //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);
         }
     }
 }
Beispiel #15
0
        /// <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;
            }
        }
Beispiel #16
0
 /// <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);
         }
     }
 }
Beispiel #17
0
 /// <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;
     }
 }