Exemplo n.º 1
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("file.create", false)) return;

        string fileName = Resources.Moo.File_UploadPath + Path.GetRandomFileName() + "." + fileUpload.FileName.Split('.').Last();
        fileUpload.SaveAs(fileName);
        int fileID;
        using (MooDB db = new MooDB())
        {
            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            UploadedFile file = new UploadedFile()
            {
                Name = txtName.Text,
                Description = txtDescription.Text,
                Path = fileName,
                CreatedBy=currentUser
            };
            db.UploadedFiles.AddObject(file);
            db.SaveChanges();
            fileID = file.ID;

            Logger.Info(db, "创建文件#" + fileID);
        }

        PageUtil.Redirect("创建成功", "~/File/?id=" + fileID);
    }
Exemplo n.º 2
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("user.create", true)) return;

        using (MooDB db = new MooDB())
        {
            User user = new User()
            {
                Name = txtUserName.Text,
                Password = Converter.ToSHA256Hash(txtPassword.Text),
                Role = SiteRoles.ByType[RoleType.NormalUser].GetDBRole(db),
                BriefDescription = "我很懒,什么都没留下~",
                Description = "我懒到头了,*真的*啥都没写",
                Email = "",
                Score = 0,
                PreferredLanguage = "c++"
            };
            db.Users.AddObject(user);
            db.SaveChanges();

            Logger.Info(db, "创建用户#" + user.ID);
        }
        PageUtil.Redirect("注册成功,请登录", "~/Special/Login.aspx");
    }
Exemplo n.º 3
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        e.Cancel = true;

        int testCaseID = (int)e.Keys[0];
        using (MooDB db = new MooDB())
        {
            TestCase testCase = (from t in db.TestCases
                                 where t.ID == testCaseID
                                 select t).Single<TestCase>();
            bool allowed = Permission.Check("testcase.delete", false, false)
                   || User.Identity.IsAuthenticated && ((SiteUser)User.Identity).ID == testCase.CreatedBy.ID;
            if (!allowed)
            {
                Permission.Check("i'm superman.", false);
                return;
            }
            db.TestCases.DeleteObject(testCase);
            db.SaveChanges();

            Logger.Warning(db, "删除测试数据#" + testCase.ID);
        }

        grid.Rows[e.RowIndex].Visible = false;
    }
Exemplo n.º 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Permission.Check("mail.read", false)) return;

        if (!Page.IsPostBack)
        {
            using (MooDB db = new MooDB())
            {
                if (Request["id"] != null)
                {
                    CollectEntityByID(db, int.Parse(Request["id"]));
                }
                if (mail == null)
                {
                    PageUtil.Redirect(Resources.Moo.FoundNothing, "~/");
                    return;
                }

                int myUserID = ((SiteUser)User.Identity).ID;
                if (myUserID != mail.From.ID && myUserID != mail.To.ID)
                {
                    Permission.Check("i'm superman", false);
                    return;
                }

                if (mail.To.ID == myUserID)
                {
                    mail.IsRead = true;
                    Logger.Info(db, "阅读邮件#" + mail.ID);
                }
                db.SaveChanges();
                Page.DataBind();
            }
        }
    }
Exemplo n.º 5
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        int receiverID=(int)ViewState["receiverID"];
        using (MooDB db = new MooDB())
        {
            Mail mail=new Mail()
            {
                From = ((SiteUser)User.Identity).GetDBUser(db),
                To = (from u in db.Users
                      where u.ID == receiverID
                      select u).Single<User>(),
                Title = txtTitle.Text,
                Content = txtContent.Text,
                IsRead = false,
            };

            db.Mails.AddObject(mail);

            db.SaveChanges();

            Logger.Info(db,string.Format("向用户#{0}发送邮件#{1}",receiverID,mail.ID));
        }

        PageUtil.Redirect("创建成功", "~/Mail/List.aspx");
    }
Exemplo n.º 6
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        int problemID = (int)ViewState["problemID"];

        using (MooDB db = new MooDB())
        {
            Problem problem = (from p in db.Problems
                               where p.ID == problemID
                               select p).Single<Problem>();
            if (problem.Lock)
            {
                if (!Permission.Check("problem.locked.update", false)) return;
            }
            else
            {
                if (!Permission.Check("problem.update", false)) return;
            }

            User user = ((SiteUser)User.Identity).GetDBUser(db);
            ProblemRevision revision = new ProblemRevision()
            {
                Content = txtContent.Text,
                Problem = problem,
                Reason = txtReason.Text,
                CreatedBy = user
            };
            db.ProblemRevisions.AddObject(revision);
            problem.LatestRevision = revision;
            db.SaveChanges();

            Logger.Info(db, string.Format("更新题目#{0},新版本为#{1}", problem.ID, revision.ID));
        }
        PageUtil.Redirect("更新成功", "~/Problem/?id=" + problemID);
    }
Exemplo n.º 7
0
    protected void btnAttend_Click(object sender, EventArgs e)
    {
        if (!Permission.Check("contest.attend", false)) return;

        int contestID = (int)ViewState["contestID"];
        using (MooDB db = new MooDB())
        {
            contest = (from c in db.Contests
                       where c.ID == contestID
                       select c).Single<Contest>();

            if (DateTimeOffset.Now > contest.EndTime)
            {
                return;
            }

            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            if (contest.User.Contains(currentUser))
            {
                return;
            }

            contest.User.Add(currentUser);
            db.SaveChanges();

            Logger.Info(db, "报名比赛#" + contest.ID);
        }

        Response.Redirect("~/Contest/?id=" + contestID, true);
    }
Exemplo n.º 8
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("problem.modify", false)) return;

        int problemID = (int)ViewState["problemID"];
        using (MooDB db = new MooDB())
        {
            problem = (from p in db.Problems
                       where p.ID == problemID
                       select p).Single<Problem>();
            problem.Name = txtName.Text;
            problem.Type = ddlType.SelectedValue;
            problem.Hidden = chkHidden.Checked;
            problem.TestCaseHidden = chkTestCaseHidden.Checked;
            problem.AllowTesting = chkAllowTesting.Checked;
            problem.Lock = chkLock.Checked;
            problem.LockPost = chkLockPost.Checked;
            problem.LockRecord = chkLockRecord.Checked;
            problem.LockSolution = chkLockSolution.Checked;
            problem.LockTestCase = chkLockTestCase.Checked;

            db.SaveChanges();
            Logger.Info(db, "修改题目#" + problem.ID);
        }

        PageUtil.Redirect("修改成功", "~/Problem/?id=" + problemID);
    }
Exemplo n.º 9
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;

        if (!User.Identity.IsAuthenticated)
        {
            Permission.Check("i'm super man.", false);
            return;
        }

        int userID = (int)ViewState["userID"];
        using (MooDB db = new MooDB())
        {
            user = (from u in db.Users
                    where u.ID == userID
                    select u).Single<User>();

            SiteUser siteUser = (SiteUser)User.Identity;
            canModify = siteUser.ID == user.ID
                || Permission.Check("user.modify", false, false)
                    && siteUser.Role.Type < SiteRoles.ByID[user.Role.ID].Type;
            if (!canModify)
            {
                Permission.Check("i'm super man.", false);
                return;
            }

            if (Permission.Check("user.name.modify", false, false))
            {
                user.Name = txtName.Text;
            }

            if (txtPassword.Text.Length > 0)
            {
                user.Password = Converter.ToSHA256Hash(txtPassword.Text);
            }

            user.Role = SiteRoles.ByID[int.Parse(ddlRole.SelectedValue)].GetDBRole(db);
            user.Email = txtEmail.Text;
            user.BriefDescription = txtBriefDescription.Text;
            user.Description = txtDescription.Text;

            db.SaveChanges();

            //Refresh SiteUser
            if (SiteUsers.ByID.ContainsKey(user.ID))
            {
                siteUser = SiteUsers.ByID[user.ID];
                siteUser.Role = SiteRoles.ByID[user.Role.ID];
                siteUser.Name = user.Name;
            }

            Logger.Info(db, "修改用户#" + user.ID);
        }

        PageUtil.Redirect("修改成功", "~/User/?id=" + userID);
    }
Exemplo n.º 10
0
        static int MainLoop()
        {
            using (MooDB db = new MooDB())
            {
                db.ExecuteStoreCommand("DELETE FROM [dbo].[Logs] WHERE [CreateTime] < @minTime", new SqlParameter("minTime", DateTimeOffset.Now.AddMonths(-1)));
                db.SaveChanges();
            }

            return 5 * 60 * 1000;
        }
Exemplo n.º 11
0
 public static void Fatal(MooDB db, string info)
 {
     db.Logs.AddObject(new Log()
     {
         CreateTime = DateTimeOffset.Now,
         Level = (byte)LogLevel.Fatal,
         User = GetCurrentUser(db),
         Info = info,
         RemoteAddress = GetRemoteAddress()
     });
     db.SaveChanges();
 }
Exemplo n.º 12
0
        static int MainLoop()
        {
            using (MooDB db = new MooDB())
            {
                Contest contest = (from c in db.Contests
                                   where c.Status == "Before" && c.StartTime <= DateTimeOffset.Now
                                   select c).FirstOrDefault<Contest>();
                if (contest != null)
                {
                    contest.Status = "During";
                    foreach (Problem problem in contest.Problem)
                    {
                        problem.AllowTesting = contest.AllowTestingOnStart;
                        problem.TestCaseHidden = contest.HideTestCaseOnStart;
                        problem.LockPost = contest.LockPostOnStart;
                        problem.LockTestCase = contest.LockTestCaseOnStart;
                        problem.LockSolution = contest.LockSolutionOnStart;
                        problem.Lock = contest.LockProblemOnStart;
                        problem.Hidden = contest.HideProblemOnStart;
                        problem.LockRecord = contest.LockRecordOnStart;
                    }
                    db.SaveChanges();

                    Logger.Info(db, "开始比赛#" + contest.ID);
                    return 0;
                }

                contest = (from c in db.Contests
                           where c.Status == "During" && c.EndTime <= DateTimeOffset.Now
                           select c).FirstOrDefault<Contest>();
                if (contest != null)
                {
                    contest.Status = "After";
                    foreach (Problem problem in contest.Problem)
                    {
                        problem.AllowTesting = contest.AllowTestingOnEnd;
                        problem.TestCaseHidden = contest.HideTestCaseOnEnd;
                        problem.LockPost = contest.LockPostOnEnd;
                        problem.LockTestCase = contest.LockTestCaseOnEnd;
                        problem.LockSolution = contest.LockSolutionOnEnd;
                        problem.Lock = contest.LockProblemOnEnd;
                        problem.Hidden = contest.HideProblemOnEnd;
                        problem.LockRecord = contest.LockRecordOnEnd;
                    }
                    db.SaveChanges();
                    Logger.Info(db, "结束比赛#" + contest.ID);
                    return 0;
                }

                return 60 * 1000;
            }
        }
Exemplo n.º 13
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        int postID = (int)ViewState["postID"];
        using (MooDB db = new MooDB())
        {
            Post post = (from p in db.Posts
                         where p.ID == postID
                         select p).Single<Post>();

            if (post.Lock || post.Problem != null && post.Problem.LockPost)
            {
                if (!Permission.Check("post.locked.reply", false)) return;
            }
            else
            {
                if (!Permission.Check("post.reply", false)) return;
            }

            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);

            //Send Mails
            SortedSet<User> userBeAt;
            string parsed = WikiParser.ParseAt(db, txtContent.Text, out userBeAt);
            foreach (User user in userBeAt)
            {
                db.Mails.AddObject(new Mail()
                {
                    Title = "我@了您哦~",
                    Content = "我在帖子[url:" + post.Name + "|../Post/?id=" + post.ID + "]中*@*了您哦~快去看看!\r\n\r\n*原文如下*:\r\n" + parsed,
                    From = currentUser,
                    To = user,
                    IsRead = false
                });
            }

            PostItem postItem = new PostItem()
            {
                Post = post,
                Content = txtContent.Text,
                CreatedBy = currentUser
            };
            db.PostItems.AddObject(postItem);
            db.SaveChanges();

            Logger.Info(db, string.Format("创建帖子#{0}的新项#{1}", post.ID, postItem.ID));
        }

        PageUtil.Redirect("回复成功", "~/Post/?id=" + postID);
    }
Exemplo n.º 14
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("problem.create", false)) return;

        int problemID;
        using (MooDB db = new MooDB())
        {
            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            Problem problem = new Problem()
            {
                Name = txtName.Text,
                Type = ddlType.SelectedValue,
                AllowTesting = true,
                Lock = false,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                Hidden = false,
                TestCaseHidden = false,
            };
            ProblemRevision revision = new ProblemRevision()
            {
                Problem = problem,
                Content = txtContent.Text,
                Reason = "创建题目",
                CreatedBy = currentUser
            };
            SolutionRevision solution = new SolutionRevision()
            {
                Problem = problem,
                Content = "暂无题解",
                Reason = "创建题解",
                CreatedBy = currentUser
            };
            problem.LatestRevision = revision;
            problem.LatestSolution = solution;

            db.ProblemRevisions.AddObject(revision);
            db.SaveChanges();

            problemID = revision.Problem.ID;

            Logger.Info(db, "创建题目#" + problemID);
        }
        PageUtil.Redirect("创建成功", "~/Problem/?id=" + problemID);
    }
Exemplo n.º 15
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("contest.create", false)) return;

        int contestID;
        using (MooDB db = new MooDB())
        {
            Contest contest = new Contest()
            {
                Title = txtTitle.Text,
                Description = txtDescription.Text,
                Status = "Before",
                StartTime = timeStart.Value,
                EndTime = timeEnd.Value,
                AllowTestingOnStart = chkAllowTestingOnStart.Checked,
                HideTestCaseOnStart = chkHideTestCaseOnStart.Checked,
                LockProblemOnStart = chkLockProblemOnStart.Checked,
                LockTestCaseOnStart = chkLockTestCaseOnStart.Checked,
                LockSolutionOnStart = chkLockSolutionOnStart.Checked,
                LockPostOnStart = chkLockPostOnStart.Checked,
                LockRecordOnStart=chkLockRecordOnStart.Checked,
                HideProblemOnStart=chkHideProblemOnStart.Checked,

                AllowTestingOnEnd=chkAllowTestingOnEnd.Checked,
                HideTestCaseOnEnd=chkHideTestCaseOnEnd.Checked,
                LockProblemOnEnd=chkLockProblemOnEnd.Checked,
                LockTestCaseOnEnd=chkLockTestCaseOnEnd.Checked,
                LockSolutionOnEnd=chkLockSolutionOnEnd.Checked,
                LockPostOnEnd=chkLockPostOnEnd.Checked,
                LockRecordOnEnd=chkLockRecordOnEnd.Checked ,
                HideProblemOnEnd=chkHideProblemOnEnd.Checked
            };

            db.Contests.AddObject(contest);
            db.SaveChanges();
            contestID = contest.ID;

            Logger.Info(db, "创建比赛#" + contestID);
        }

        PageUtil.Redirect("创建成功", "~/Contest/?id=" + contestID);
    }
Exemplo n.º 16
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("contest.modify", false)) return;

        int contestID = (int)ViewState["contestID"];
        using (MooDB db = new MooDB())
        {
            Contest contest = (from c in db.Contests
                               where c.ID == contestID
                               select c).Single<Contest>();

            contest.Title = txtTitle.Text;
            contest.Description = txtDescription.Text;
            contest.StartTime = timeStart.Value;
            contest.EndTime = timeEnd.Value;

            contest.AllowTestingOnStart = chkAllowTestingOnStart.Checked;
            contest.HideTestCaseOnStart = chkHideTestCaseOnStart.Checked;
            contest.LockProblemOnStart = chkLockProblemOnStart.Checked;
            contest.LockTestCaseOnStart = chkLockTestCaseOnStart.Checked;
            contest.LockSolutionOnStart = chkLockSolutionOnStart.Checked;
            contest.LockPostOnStart = chkLockPostOnStart.Checked;
            contest.LockRecordOnStart = chkLockRecordOnStart.Checked;
            contest.HideProblemOnStart = chkHideProblemOnStart.Checked;

            contest.AllowTestingOnEnd = chkAllowTestingOnEnd.Checked;
            contest.HideTestCaseOnEnd = chkHideTestCaseOnEnd.Checked;
            contest.LockProblemOnEnd = chkLockProblemOnEnd.Checked;
            contest.LockTestCaseOnEnd = chkLockTestCaseOnEnd.Checked;
            contest.LockSolutionOnEnd = chkLockSolutionOnEnd.Checked;
            contest.LockPostOnEnd = chkLockPostOnEnd.Checked;
            contest.LockRecordOnEnd = chkLockRecordOnEnd.Checked;
            contest.HideProblemOnEnd = chkHideProblemOnEnd.Checked;

            db.SaveChanges();

            Logger.Info(db, "修改比赛#" + contest.ID);
        }

        PageUtil.Redirect("修改成功", "~/Contest/?id=" + contestID);
    }
Exemplo n.º 17
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        e.Cancel = true;

        int fileID = (int)e.Keys[0];
        using (MooDB db = new MooDB())
        {
            UploadedFile file = (from f in db.UploadedFiles
                                 where f.ID == fileID
                                 select f).Single<UploadedFile>();
            bool allowed = User.Identity.IsAuthenticated && ((SiteUser)User.Identity).ID == file.CreatedBy.ID
                    || Permission.Check("file.delete", false,false);
            if (!allowed)
            {
                Permission.Check("i'm super man.", false);
                return;
            }
            var spjTestCases = from t in db.TestCases.OfType<SpecialJudgedTestCase>()
                               where t.Judger.ID == file.ID
                               select t;
            var interactiveTestCases = from t in db.TestCases.OfType<InteractiveTestCase>()
                                       where t.Invoker.ID == file.ID
                                       select t;
            var answerOnlyTestCases = from t in db.TestCases.OfType<AnswerOnlyTestCase>()
                                      where t.Judger.ID == file.ID
                                      select t;
            if (spjTestCases.Any() || interactiveTestCases.Any() || answerOnlyTestCases.Any())
            {
                PageUtil.Redirect("尚有测试点使用此文件,无法删除。", "~/File/List.aspx");
                return;
            }

            File.Delete(file.Path);
            db.UploadedFiles.DeleteObject(file);
            db.SaveChanges();

            Logger.Warning(db, "删除文件#" + file.ID);
        }

        grid.Rows[e.RowIndex].Visible = false;
    }
Exemplo n.º 18
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        e.Cancel = true;

        if (!Permission.Check("contest.delete", false)) return;
        int contestID = (int)e.Keys[0];
        using (MooDB db = new MooDB())
        {
            Contest contest = (from c in db.Contests
                               where c.ID == contestID
                               select c).Single<Contest>();

            contest.Problem.Clear();
            contest.User.Clear();
            db.Contests.DeleteObject(contest);
            db.SaveChanges();

            Logger.Warning(db, "删除比赛#" + contest.ID);
        }

        grid.Rows[e.RowIndex].Visible = false;
    }
Exemplo n.º 19
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if (!Permission.Check("problem.delete", false)) e.Cancel = true;
        int problemID = (int)e.Keys[0];
        using (MooDB db = new MooDB())
        {
            Problem problem = (from p in db.Problems
                               where p.ID == problemID
                               select p).Single<Problem>();
            if (problem.Contest.Any())
            {
                PageUtil.Redirect("请先删除相关比赛。", "~/Problem/List.aspx");
                return;
            }
            db.Problems.DeleteObject(problem);
            db.SaveChanges();

            Logger.Warning(db, "删除题目#" + problem.ID);
        }

        grid.Rows[e.RowIndex].Visible = false;
    }
Exemplo n.º 20
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("post.modify", false)) return;

        int postID = (int)ViewState["postID"];
        using (MooDB db = new MooDB())
        {
            post = (from p in db.Posts
                    where p.ID == postID
                    select p).SingleOrDefault<Post>();

            post.Name = txtName.Text;
            post.Lock = chkLock.Checked;
            post.OnTop = chkOnTop.Checked;
            db.SaveChanges();

            Logger.Info(db, "修改帖子#" + post.ID);
        }

        PageUtil.Redirect("修改成功", "~/Post/?id=" + postID);
    }
Exemplo n.º 21
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;

        int recordID = (int)ViewState["recordID"];
        using (MooDB db = new MooDB())
        {
            record = (from r in db.Records
                      where r.ID == recordID
                      select r).Single<Record>();
            canModify = Permission.Check("record.modify", false, false)
                    || User.Identity.IsAuthenticated && record.User.ID == ((SiteUser)User.Identity).ID;
            if (!canModify)
            {
                Permission.Check("i'm super man.", false);
                return;
            }
            record.PublicCode = chkPublicCode.Checked;
            db.SaveChanges();
        }

        PageUtil.Redirect("修改成功", "~/Record/?id=" + recordID);
    }
Exemplo n.º 22
0
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("contest.modify", false)) return;

        int contestID = (int)ViewState["contestID"];
        int problemID = int.Parse(txtProblemID.Text);
        using (MooDB db = new MooDB())
        {
            Problem problem = (from p in db.Problems
                               where p.ID == problemID
                               select p).Single<Problem>();
            contest = (from c in db.Contests
                       where c.ID == contestID
                       select c).Single<Contest>();

            contest.Problem.Add(problem);
            db.SaveChanges();

            Logger.Info(db, string.Format("向比赛#{0}加入题目#{1}", contest.ID, problem.ID));
        }
        Response.Redirect("~/Contest/?id=" + contestID);
    }
Exemplo n.º 23
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        if (!Permission.Check("homepage.update", false)) return;

        using (MooDB db = new MooDB())
        {
            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            HomepageRevision revision=new HomepageRevision()
            {
                Title = txtTitle.Text,
                Content = txtContent.Text,
                Reason = txtReason.Text,
                CreatedBy = currentUser
            };

            db.HomepageRevisions.AddObject(revision);

            db.SaveChanges();
            Logger.Info(db, "更新主页,新版本为#" + revision.ID);
        }

        PageUtil.Redirect("更新成功", "~/");
    }
Exemplo n.º 24
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if (!Permission.Check("contest.modify", false)) return;

        int problemID = (int)e.Keys[0];
        int contestID = (int)ViewState["contestID"];
        using (MooDB db = new MooDB())
        {
            contest = (from c in db.Contests
                       where c.ID == contestID
                       select c).Single<Contest>();
            Problem problem = (from p in db.Problems
                               where p.ID == problemID
                               select p).Single<Problem>();
            contest.Problem.Remove(problem);
            db.SaveChanges();

            Logger.Warning(db, string.Format("删除比赛#{0}的题目#{1}", contest.ID, problem.ID));
        }
        Response.Redirect("~/Contest/?id=" + contestID);
    }
Exemplo n.º 25
0
        public int CreateTranditionalTestCase(string sToken, int problemID, byte[] input, byte[] answer, int timeLimit, int memoryLimit, int score)
        {
            Authenticate(sToken);

            using (MooDB db = new MooDB())
            {
                Problem problem = (from p in db.Problems
                                   where p.ID == problemID
                                   select p).SingleOrDefault<Problem>();
                if (problem == null) throw new ArgumentException("无此题目");
                if (problem.Type != "Tranditional") throw new ArgumentException("不是传统题");

                if (problem.LockTestCase)
                {
                    Authorize("testcase.locked.create");
                }
                else
                {
                    Authorize("testcase.create");
                }

                User currentUser = CurrentUser.GetDBUser(db);

                TestCase testCase = new TranditionalTestCase()
                {
                    Answer = answer,
                    CreatedBy = currentUser,
                    Input = input,
                    MemoryLimit = memoryLimit,
                    TimeLimit = timeLimit,
                    Problem = problem,
                    Score = score
                };

                db.TestCases.AddObject(testCase);
                db.SaveChanges();

                return testCase.ID;
            }
        }
Exemplo n.º 26
0
        public int CreateProblem(string sToken, string name, string type, string content)
        {
            Authenticate(sToken);
            Authorize("problem.create");
            using (MooDB db = new MooDB())
            {
                User currentUser = CurrentUser.GetDBUser(db);

                Problem problem = new Problem()
                {
                    Name = name,
                    Type = type,
                    AllowTesting = true,
                    Hidden = false,
                    Lock = false,
                    LockPost = false,
                    LockRecord = false,
                    LockSolution = false,
                    LockTestCase = false,
                    MaximumScore = null,
                    ScoreSum = 0,
                    SubmissionCount = 0,
                    SubmissionUser = 0,
                    TestCaseHidden = false
                };

                ProblemRevision revision = new ProblemRevision()
                {
                    Content = content,
                    CreatedBy = currentUser,
                    Reason = "创建题目",
                    Problem = problem
                };

                SolutionRevision solution = new SolutionRevision()
                {
                    Content = "暂无题解",
                    CreatedBy = currentUser,
                    Reason = "创建题解",
                    Problem = problem
                };

                problem.LatestRevision = revision;
                problem.LatestSolution = solution;
                db.SaveChanges();

                return problem.ID;
            }
        }
Exemplo n.º 27
0
        public static void AddTestData(MooDB db)
        {
            //Users
            User MrPhone = new User()
            {
                Name = "onetwogoo",
                Password = Converter.ToSHA256Hash("123456"),
                Role = SiteRoles.ByType[RoleType.Organizer].GetDBRole(db),
                BriefDescription = "我觉得我写这么多应该够两行了",
                Description = "我是--屌丝--我骄傲,我为国家省钞票!",
                Email = "*****@*****.**",
                Score = 256,
                PreferredLanguage="c++"
            };
            db.Users.AddObject(MrPhone);

            User ShaBi = new User()
            {
                Name = "ShaBi",
                Password = Converter.ToSHA256Hash("ShaBi"),
                Role = SiteRoles.ByType[RoleType.Worker].GetDBRole(db),
                BriefDescription = "我觉得我写这么多应该够两行了",
                Description = "Moo*真*他妈的好!",
                Email = "*****@*****.**",
                Score = 128,
                PreferredLanguage="c++"
            };
            db.Users.AddObject(ShaBi);

            User Baby = new User()
            {
                Name = "Baby",
                Password = Converter.ToSHA256Hash("Baby"),
                Role = SiteRoles.ByType[RoleType.NormalUser].GetDBRole(db),
                BriefDescription = "我啥都不懂",
                Description = "真不懂",
                Email = "*****@*****.**",
                Score = 1000,
                PreferredLanguage="pascal"
            };
            db.Users.AddObject(Baby);

            db.Users.AddObject(new User()
            {
                Name = "BeiJu",
                Password = Converter.ToSHA256Hash("BeiJu"),
                Role = SiteRoles.ByType[RoleType.Malefactor].GetDBRole(db),
                BriefDescription = "冤枉啊!啥都没干就被封了!",
                Description = "太他妈冤枉了!",
                Email = "",
                Score = 0,
                PreferredLanguage="c"
            });

            //Homepage
            db.HomepageRevisions.AddObject(new HomepageRevision()
            {
                Title = "欢迎测试",
                Content = "测试用户:\n"
                + "onetwogoo/123456 组织者\n"
                + "ShaBi/ShaBi 工作者\n"
                + "Baby/Baby 普通用户\n"
                + "BeiJu/BeiJu 作恶者",
                Reason = "测试用原因",
                CreatedBy = ShaBi
            });

            //Problems
            Problem APlusB = new Problem()
            {
                Name = "A+B问题",
                Type = "Tranditional",
                Lock = false,
                Hidden = false,
                TestCaseHidden = false,
                AllowTesting = true,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                SubmissionCount = 10,
                ScoreSum = 100,
                SubmissionUser = 1,
                MaximumScore = 30
            };

            Problem CPlusD = new Problem()
            {
                Name = "C+D问题",
                Type = "Tranditional",
                Lock = true,
                Hidden = false,
                TestCaseHidden = false,
                LockPost = true,
                LockTestCase = true,
                LockSolution = true,
                LockRecord = true,
                AllowTesting = true,
                SubmissionCount = 20,
                ScoreSum = 5,
                SubmissionUser = 2,
                MaximumScore = 120
            };
            db.Problems.AddObject(CPlusD);

            Problem EPlusF = new Problem()
            {
                Name = "E+F问题",
                Type = "Tranditional",
                Lock = false,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                AllowTesting = true,
                Hidden = true,
                TestCaseHidden = true,
                SubmissionCount = 40,
                ScoreSum = 300,
                SubmissionUser = 4,
                MaximumScore = 110
            };
            db.Problems.AddObject(EPlusF);

            Problem Cat = new Problem()
            {
                Name = "Cat",
                Type = "SpecialJudged",
                Lock = false,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                AllowTesting = true,
                Hidden = false,
                TestCaseHidden = false
            };
            db.Problems.AddObject(Cat);

            Problem EasyAPlusB = new Problem()
            {
                Name = "Easy A+B",
                Type = "Interactive",
                Lock = false,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                AllowTesting = true,
                Hidden = false,
                TestCaseHidden = false
            };
            db.Problems.AddObject(EasyAPlusB);

            Problem AnswerAPlusB = new Problem()
            {
                Name = "Answer A+B",
                Type = "AnswerOnly",
                Lock = false,
                LockPost = false,
                LockRecord = false,
                LockSolution = false,
                LockTestCase = false,
                AllowTesting = true,
                Hidden = false,
                TestCaseHidden = false
            };

            //File
            UploadedFile file = new UploadedFile()
            {
                Name = "SPJ for Cat",
                Description = "给Cat的SPJ",
                Path = "D:\\Cat.exe",
                CreatedBy=MrPhone
            };
            db.UploadedFiles.AddObject(file);

            //Test Cases
            db.TestCases.AddObject(new TranditionalTestCase()
            {
                Problem = CPlusD,
                Input = Encoding.ASCII.GetBytes("qwertyuioplkjhgfdsazxcvbnm"),
                Answer = Encoding.ASCII.GetBytes("mnbvcxzasdfghjklpoiuytrewq"),
                TimeLimit = 1000,
                MemoryLimit = 1024 * 1024 * 6,
                Score = 12,
                CreatedBy=MrPhone
            });
            db.SaveChanges();

            db.TestCases.AddObject(new TranditionalTestCase()
            {
                Problem = APlusB,
                Input = Encoding.ASCII.GetBytes("1 2"),
                Answer = Encoding.ASCII.GetBytes("3"),
                TimeLimit = 1000,
                MemoryLimit = 60 * 1024 * 1024,
                Score = 50,
                CreatedBy = MrPhone
            });

            db.TestCases.AddObject(new TranditionalTestCase()
            {
                Problem = APlusB,
                Input = Encoding.ASCII.GetBytes("100 345"),
                Answer = Encoding.ASCII.GetBytes("445"),
                TimeLimit = 1000,
                MemoryLimit = 60 * 1024 * 1024,
                Score = 50,
                CreatedBy = MrPhone
            });

            db.TestCases.AddObject(new SpecialJudgedTestCase()
            {
                Problem = Cat,
                Input = Encoding.ASCII.GetBytes("1 2"),
                Answer = Encoding.ASCII.GetBytes("Miao~"),
                TimeLimit = 1000,
                MemoryLimit = 60 * 1024 * 1024,
                Judger = file,
                CreatedBy = MrPhone
            });

            file = new UploadedFile()
            {
                Name = "Invoker for EasyA+B",
                Description = "EasyA+B的调用程序",
                Path = "D:\\EasyA+B.o",
                CreatedBy = MrPhone
            };

            db.TestCases.AddObject(new InteractiveTestCase()
            {
                Problem = EasyAPlusB,
                TestData = Encoding.ASCII.GetBytes("1123 3212"),
                TimeLimit = 1000,
                MemoryLimit = 60 * 1024 * 1024,
                Invoker = file,
                CreatedBy = MrPhone
            });

            db.TestCases.AddObject(new InteractiveTestCase()
            {
                Problem = EasyAPlusB,
                TestData = Encoding.ASCII.GetBytes("1 3"),
                TimeLimit = 1000,
                MemoryLimit = 60 * 1024 * 1024,
                Invoker = file,
                CreatedBy = MrPhone
            });

            file = new UploadedFile()
            {
                Name = "Judger Of Answer A+B",
                Description="*测评程序*啊",
                Path = "D:\\AnswerA+B.exe",
                CreatedBy = MrPhone
            };

            AnswerOnlyTestCase answerOnlyTestCase1 = new AnswerOnlyTestCase()
            {
                Problem = AnswerAPlusB,
                TestData = Encoding.ASCII.GetBytes("23 345"),
                Judger = file,
                CreatedBy = MrPhone
            };
            db.TestCases.AddObject(answerOnlyTestCase1);

            AnswerOnlyTestCase answerOnlyTestCase2 = new AnswerOnlyTestCase()
            {
                Problem = AnswerAPlusB,
                TestData = Encoding.ASCII.GetBytes("453 123"),
                Judger = file,
                CreatedBy = MrPhone
            };
            db.TestCases.AddObject(answerOnlyTestCase2);

            //Problem Revision
            db.ProblemRevisions.AddObject(new ProblemRevision()
             {
                 Problem = APlusB,
                 Content = "输入A,B。输出A+B。啊!输错了!",
                 Reason = "蛋疼",
                 CreatedBy = ShaBi
             });

            db.ProblemRevisions.AddObject(new ProblemRevision()
            {
                Problem = APlusB,
                Content = "输入A,B。输出它们的和。",
                Reason = "蛋疼",
                CreatedBy = MrPhone
            });

            db.ProblemRevisions.AddObject(new ProblemRevision()
            {
                Problem = APlusB,
                Content = "输入俩蛋,输出它们的和。",
                Reason = "蛋疼",
                CreatedBy = ShaBi
            });

            APlusB.LatestRevision = new ProblemRevision()
            {
                Problem = APlusB,
                Content = "输入两个Int32,输出它们的和。",
                Reason = "蛋疼",
                CreatedBy = MrPhone
            };

            CPlusD.LatestRevision = new ProblemRevision()
            {
                Problem = CPlusD,
                Content = "输入C,D。*注意是Int64*输出它们的和。",
                Reason = "蛋疼",
                CreatedBy = ShaBi
            };

            EPlusF.LatestRevision = new ProblemRevision()
            {
                Problem = EPlusF,
                Content = "输入E,F。输出它们的和。",
                Reason = "蛋疼",
                CreatedBy = ShaBi
            };

            Cat.LatestRevision = new ProblemRevision()
            {
                Problem = Cat,
                Content = "模拟Cat",
                Reason = "擦!",
                CreatedBy = MrPhone
            };

            EasyAPlusB.LatestRevision = new ProblemRevision()
            {
                Problem = EasyAPlusB,
                Content = "仅需编写一个int APlusB(int,int);即可。",
                Reason = "This is Interactive",
                CreatedBy = ShaBi
            };

            AnswerAPlusB.LatestRevision = new ProblemRevision()
            {
                Problem = AnswerAPlusB,
                Content = "提交答案吧!",
                Reason = "None",
                CreatedBy = MrPhone
            };

            //Solution
            db.SolutionRevisions.AddObject(new SolutionRevision()
            {
                Problem = APlusB,
                Content = "很简单。水题不解释。",
                Reason = "太水了",
                CreatedBy = ShaBi
            });

            APlusB.LatestSolution = new SolutionRevision()
            {
                Problem = APlusB,
                Content = "var a,b:*int64*; begin read(a,b); write(a+b); end.",
                Reason = "上代码",
                CreatedBy = MrPhone
            };

            CPlusD.LatestSolution = new SolutionRevision()
            {
                Problem = CPlusD,
                Content = "这个好像跟A+B一样吧",
                Reason = "神犇题解",
                CreatedBy = ShaBi
            };

            EPlusF.LatestSolution = new SolutionRevision()
            {
                Problem = EPlusF,
                Content = "太难了,不会啊",
                Reason = "垃圾题解",
                CreatedBy = ShaBi
            };

            Cat.LatestSolution = new SolutionRevision()
            {
                Problem = Cat,
                Content = "抄!",
                Reason = "",
                CreatedBy = ShaBi
            };

            EasyAPlusB.LatestSolution = new SolutionRevision()
            {
                Problem = EasyAPlusB,
                Content = "就……就A了。",
                Reason = "",
                CreatedBy = MrPhone
            };

            AnswerAPlusB.LatestSolution = new SolutionRevision()
            {
                Problem = AnswerAPlusB,
                Content = "弱爆了",
                Reason = "xxx",
                CreatedBy = ShaBi
            };

            //Post
            Post post = new Post()
            {
                Name = "讨论一下出题人心理",
                Problem = APlusB,
                Lock = false,
                OnTop = true,
            };
            db.Posts.AddObject(post);

            db.PostItems.AddObject(new PostItem()
            {
                Post = post,
                Content = "出--这么水--的题,找死啊",
                CreatedBy = ShaBi,
            });
            db.SaveChanges();

            db.PostItems.AddObject(new PostItem()
            {
                Post = post,
                Content = "靠!作为出题人我压力很大啊!",
                CreatedBy = MrPhone
            });

            post = new Post()
            {
                Name = "认真研究一下此题变形",
                Problem = APlusB,
                Lock = false,
                OnTop = false
            };
            db.Posts.AddObject(post);

            db.PostItems.AddObject(new PostItem()
            {
                Post = post,
                Content = "A+B能有什么变形呢?",
                CreatedBy = MrPhone
            });
            db.SaveChanges();

            db.PostItems.AddObject(new PostItem()
            {
                Post = post,
                Content = "靠!没人回答,我寂寞了~",
                CreatedBy = MrPhone
            });

            post = new Post()
            {
                Name = "讨论一下Moo好不好",
                Lock = true,
                OnTop = false
            };
            db.Posts.AddObject(post);

            db.PostItems.AddObject(new PostItem()
            {
                Post = post,
                Content = "Moo很好啊。*注意此贴没有对应题目且被锁*",
                CreatedBy = MrPhone
            });

            //Mail
            db.Mails.AddObject(new Mail()
            {
                Title = "咱把Moo黑了如何?",
                Content = "嘿!onetwogoo!把Moo--黑--了吧!",
                IsRead = true,
                From = ShaBi,
                To = MrPhone
            });
            db.SaveChanges();

            db.Mails.AddObject(new Mail()
            {
                Title = "找死啊!",
                Content = "我会去黑自己网站吗?",
                IsRead = true,
                From = MrPhone,
                To = ShaBi
            });
            db.SaveChanges();

            db.Mails.AddObject(new Mail()
            {
                Title = "没准嘞!",
                Content = "敢说你没这想法",
                IsRead = true,
                From = ShaBi,
                To = MrPhone
            });
            db.SaveChanges();

            db.Mails.AddObject(new Mail()
            {
                Title = "傻逼",
                Content = "不解释!",
                IsRead = false,
                From = MrPhone,
                To = ShaBi
            });
            db.SaveChanges();

            db.Mails.AddObject(new Mail()
            {
                Title = "把我弄成组织者如何啊",
                Content = "???",
                IsRead = false,
                From = Baby,
                To = MrPhone
            });
            db.SaveChanges();

            db.Mails.AddObject(new Mail()
            {
                Title = "美死你",
                Content = "怎么可能",
                IsRead = true,
                From = MrPhone,
                To = Baby
            });
            db.SaveChanges();

            //Contest
            Contest contest = new Contest()
            {
                StartTime = DateTimeOffset.Now.AddMinutes(1),
                EndTime = DateTimeOffset.Now.AddMinutes(2),
                Status = "Before",
                Title = "Moo水题大赛",
                Description = "全是--水--题啊!",
                LockProblemOnStart = true,
                LockPostOnStart = true,
                LockSolutionOnStart = true,
                LockTestCaseOnStart = true,
                AllowTestingOnStart = false,
                HideTestCaseOnStart = true,
                LockRecordOnStart = false,
                HideProblemOnStart = false,
                AllowTestingOnEnd = true,
                LockPostOnEnd = false,
                LockProblemOnEnd = false,
                LockRecordOnEnd = false,
                LockSolutionOnEnd = false,
                LockTestCaseOnEnd = false,
                HideProblemOnEnd = false,
                HideTestCaseOnEnd = false,
            };
            //contest.Problem.Add(APlusB);
            contest.Problem.Add(CPlusD);
            contest.User.Add(ShaBi);

            //Record
            JudgeInfo info = new JudgeInfo()
            {
                Info = "Test",
                Score = 10
            };

            Record record = new Record()
            {
                Code = "",
                Language = "cxx",
                CreateTime = DateTimeOffset.Now.AddMinutes(1.5),
                User = ShaBi,
                Problem = APlusB,
                PublicCode = true
            };
            record.JudgeInfo = info;
            info.Record = record;
            db.Records.AddObject(record);

            info = new JudgeInfo()
            {
                Info = "test",
                Score = 30
            };

            record = new Record()
            {
                Code = "",
                Language = "c++",
                CreateTime = DateTimeOffset.Now.AddMinutes(1.5),
                User = ShaBi,
                Problem = APlusB,
                PublicCode = true
            };
            record.JudgeInfo = info;
            info.Record = record;
            db.Records.AddObject(record);

            info = new JudgeInfo()
            {
                Info = "test",
                Score = 60
            };

            record = new Record()
            {
                Code = "",
                Language = "c++",
                CreateTime = DateTimeOffset.Now.AddMinutes(1.5),
                User = ShaBi,
                Problem = CPlusD,
                PublicCode = true
            };
            record.JudgeInfo = info;
            info.Record = record;
            db.Records.AddObject(record);

            db.Records.AddObject(new Record()
            {
                Code = "int APlusB(int x,int y){return 4;}",
                CreateTime = DateTimeOffset.Now,
                Language = "c++",
                Problem = EasyAPlusB,
                User = MrPhone,
                PublicCode = true
            });

            db.Records.AddObject(new Record()
            {
                Code = "<Moo:Answer testCase='" + answerOnlyTestCase1.ID + "'>368</Moo:Answer>\n"
                + "<Moo:Answer testCase='" + answerOnlyTestCase2.ID + "'>496</Moo:Answer>",
                CreateTime = DateTimeOffset.Now,
                Language = "plaintext",
                Problem = AnswerAPlusB,
                User = MrPhone,
                PublicCode = true
            });

            db.SaveChanges();
        }
Exemplo n.º 28
0
    protected void btnRejudge_Click(object sender, EventArgs e)
    {
        if (!Permission.Check("record.judgeinfo.delete.limited", false)) return;

        if (!Permission.Check("record.judgeinfo.delete", false, false))
        {
            if (!allowRejudge)
            {
                PageUtil.Redirect("请喝杯茶", Request.RawUrl);
                return;
            }

            allowRejudge = false;
            rejudgeTimer.Start();
        }

        LinkButton theButton = (LinkButton)sender;
        GridViewRow row = (GridViewRow)theButton.Parent.Parent;
        int recordID = (int)grid.DataKeys[row.RowIndex][0];
        using (MooDB db = new MooDB())
        {
            Record record = (from r in db.Records
                             where r.ID == recordID
                             select r).Single<Record>();
            JudgeInfo info = record.JudgeInfo;
            if (info == null)
            {
                PageUtil.Redirect("已经提交重测,请耐心等候。", Request.RawUrl);
                return;
            }

            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            //Refresh Score
            DeleteJudgeInfoAndRefresh(db, record, info);

            //Send A Mail
            db.Mails.AddObject(new Mail()
            {
                Title = "您提交的记录 #" + record.ID + " 被我提请重新测评",
                From = currentUser,
                To = record.User,
                Content = "您为 [url:" + record.Problem.Name + "|../Problem/?id=" + record.Problem.ID + "] 提交的记录已被我提请重新测评,请[url:点击这里|../Record/?id=" + record.ID + "]了解最新情况。\n\n"
                        + "*注意*:原始测评结果为*" + info.Score + "*分。详细测评信息为:\n"
                        + info.Info,
                IsRead = false
            });

            record.JudgeInfo = null;
            db.JudgeInfos.DeleteObject(info);
            db.SaveChanges();

            Logger.Warning(db, string.Format("删除记录#{0}的测评信息#{1}", record.ID, info.ID));
        }

        PageUtil.Redirect("提交重测成功", Request.RawUrl);
    }
Exemplo n.º 29
0
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if (!Permission.Check("record.delete", false)) return;

        int recordID = (int)e.Keys[0];
        using (MooDB db = new MooDB())
        {
            Record record = (from r in db.Records
                             where r.ID == recordID
                             select r).Single<Record>();
            if (record.JudgeInfo != null)
            {
                DeleteJudgeInfoAndRefresh(db, record, record.JudgeInfo);
                db.JudgeInfos.DeleteObject(record.JudgeInfo);
                db.SaveChanges();
            }
            DeleteRecordAndRefresh(db, record);
            db.Records.DeleteObject(record);
            db.SaveChanges();

            Logger.Warning(db, "删除记录#" + record.ID);
        }

        grid.Rows[e.RowIndex].Visible = false;
    }
Exemplo n.º 30
0
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (!Page.IsValid) return;
        int problemID = (int)ViewState["problemID"];
        using (MooDB db = new MooDB())
        {
            problem = (from p in db.Problems
                       where p.ID == problemID
                       select p).Single<Problem>();
            if (problem.LockRecord)
            {
                if (!Permission.Check("record.locked.create", false)) return;
            }
            else
            {
                if (!Permission.Check("record.create", false)) return;
            }

            User currentUser = ((SiteUser)User.Identity).GetDBUser(db);
            Record record;
            if (problem.Type == "AnswerOnly")
            {
                record = new Record()
                {
                    Problem = problem,
                    User = currentUser,
                    Code = MergeAnswers(db),
                    Language = "plaintext",
                    PublicCode = chkPublicCode.Checked,
                    CreateTime = DateTimeOffset.Now
                };
            }
            else
            {
                record = new Record()
                {
                    Problem = problem,
                    User = currentUser,
                    Code = txtCode.Text,
                    Language = ddlLanguage.SelectedValue,
                    PublicCode = chkPublicCode.Checked,
                    CreateTime = DateTimeOffset.Now
                };
                currentUser.PreferredLanguage = ddlLanguage.SelectedValue;
            }
            db.Records.AddObject(record);

            problem.SubmissionCount++;
            if (!(from r in db.Records
                  where r.ID != record.ID && r.User.ID == currentUser.ID && r.Problem.ID == problem.ID
                  select r).Any())
            {
                problem.SubmissionUser++;
            }

            db.SaveChanges();

            Logger.Info(db, "创建记录#" + record.ID);
        }

        PageUtil.Redirect("创建成功", "~/Record/List.aspx?userID=" + ((SiteUser)User.Identity).ID);
    }