Пример #1
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType(), Context);
                rp.ProcessRequirements();

                Page.Response.AddHeader("Refresh", "90");
                if (rp.TidDefined)
                {
                    tid = selcon.TID = rp.ContestID;

                    questionsGrid.Columns[5].Visible = BaseDb.IsAdmin(Page.User);

                    using (BaseDb db = DbFactory.ConstructDatabase())
                    {
                        if (db.GetContest(tid).Future)
                        {
                            throw new NeJudgeInvalidParametersException("tid");                            //Hide("Ќельз¤ просмотреть вопросы будущего соревновани¤");
                        }
                        else
                        {
                            Off();
                            Bind();
                        }
                    }
                }
            }
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                if (rp.ContestIDDefined)
                {
                    selcon.Visible = false;
                    Contest t = Contest.GetContest(rp.ContestID);
                    if (!Page.User.IsInRole("Administrator") && t.Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeInvalidParametersException("problemID");
                    }
                    //"Соревнование, которое вы хотите просмотреть, ещё не началось. Попробуйте позже."
                    problemsPH.Controls.Add(new LiteralControl("<div align='center'><h1 style='color:#418ade;'>" + t.Name + "</h1></div>"));
                    foreach (Problem p in Problem.GetProblems(t.ID))
                    {
                        problemsPH.Controls.Add(new LiteralControl("<hr/>"));
                        ProblemView pv = (ProblemView)LoadControl("~/UC/problemview.ascx");
                        pv.ProblemID = p.ID;
                        problemsPH.Controls.Add(pv);
                        problemsPH.Controls.Add(new LiteralControl("<br/>"));
                    }
                }
                else
                {
                    problemsPH.Visible = false;
                }
            }
        }
Пример #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                if (rp.ProblemIDDefined)
                {
                    selprob.Visible  = false;
                    goButton.Visible = false;
                    Problem p = Problem.GetProblem(rp.ProblemID);
                    Contest t = Contest.GetContest(p.ContestID);

                    if (!Page.User.IsInRole("Administrator") && t.Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeInvalidParametersException("problemID");
                    }
                    //"Соревнование, задачу с которого вы хотите просмотреть, ещё не началось. Попробуйте позже."
                    problemView.ProblemID = p.ID;
                }
                else
                {
                    problemView.Visible = false;
                }
            }
        }
Пример #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                if (rp.UserIDDefined)                   //редактирование
                {
                    reg = false;
                    if (!User.IsInRole("Judge") && rp.UserID != User.Identity.Name)
                    {
                        throw new NeJudgeException("Identity");
                    }

                    Table1.Rows[2].Visible        = false;
                    loginTextBoxValidator.Enabled = false;
                    u = NeUser.GetUser(rp.UserID);
                    nameTextBox.Text = u.Name;
                    mailTextBox.Text = u.Email;
                }
                else                 //регистрация
                {
                    reg = true;
                    u   = new NeUser();
                    Table1.Rows[3].Visible          = false;
                    oldpassTextBoxValidator.Enabled = false;
                }
            }
        }
Пример #5
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();
                //Page.Response.AddHeader("Refresh","300");
                if (rp.ContestIDDefined)
                {
                    selcon.ContestID = rp.ContestID;

                    Contest con = Contest.GetContest(rp.ContestID);
                    if (con.Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeException("Нельзя просмотреть монитор будущего соревнования");
                    }
                    DateTime cur_time = TimeUtils.ZeroDateTime(DateTime.Now);
                    DateTime t_begin  = TimeUtils.ZeroDateTime(con.Beginning);
                    DateTime t_end    = TimeUtils.ZeroDateTime(con.Ending);

                    // Последнее обновление
                    TimeSpan dur       = TimeUtils.ZeroTimeSpan(t_end - t_begin);
                    TimeSpan elapsed   = TimeUtils.ZeroTimeSpan((cur_time - t_begin < dur) ? cur_time - t_begin : dur);
                    TimeSpan estimated = TimeUtils.ZeroTimeSpan(dur - elapsed);
                    if (elapsed >= dur)
                    {
                        st_label.InnerHtml += "<span style='color:red;font-size:small;display:block;'>(Соревнование окончено)</span>";
                    }
                    refresh.Text = TimeUtils.BeautifyTimeSpan(elapsed, false);
                    // Продолжительность соревнования
                    period.Text = TimeUtils.BeautifyTimeSpan(dur, false);
                    left.Text   = TimeUtils.BeautifyTimeSpan(estimated, false);


                    ContestTypeHandler h   = Factory.GetHandlerInstance(con.Type);
                    DataTable[]        dts = h.MonitorManager.Build(con.ID);
                    for (int i = 0; i < dts.Length; i++)
                    {
                        DataTable dt = dts[i];
                        monitorPH.Controls.Add(new LiteralControl(dt.TableName));
                        DataGrid gv = new DataGrid();
                        gv.Width                = new Unit(100.0, UnitType.Percentage);
                        gv.CellPadding          = 5;
                        gv.HeaderStyle.CssClass = "gridHeader";
                        gv.DataSource           = dt;
                        gv.DataBind();
                        h.MonitorManager.PaintDataGrid(gv, i, dt.Columns.Count - 3);
                        monitorPH.Controls.Add(gv);
                        if (i != dts.Length - 1)
                        {
                            monitorPH.Controls.Add(new LiteralControl("<br />"));
                        }
                    }
                }
                else
                {
                    info.Visible = false;
                }
            }
        }
Пример #6
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType(), Context);
                rp.ProcessRequirements();

                selprob.AddHidableControl(goButton);

                if (rp.PidDefined)
                {
                    selprob.PID = rp.ProblemID;

                    BaseDb  db = DbFactory.ConstructDatabase();
                    Problem p  = db.GetProblem(rp.ProblemID);
                    Contest t  = db.GetContest(p.TID);
                    db.Close();

                    if (!BaseDb.IsAdmin(Page.User) && t.Future)
                    {
                        throw new NeJudgeInvalidParametersException("pid");                        //"Соревнование, задачу с которого вы хотите просмотреть, ещё не началось. Попробуйте позже."
                    }
                    #region Возня со ссылками
                    InitLinks(rp.ProblemID);
                    if (BaseDb.IsAdmin(Page.User))
                    {
                        Hyperlink2.Text        = "Редактировать";
                        Hyperlink2.NavigateUrl = "../editproblem.aspx?pid=" + rp.ProblemID + "&ret=p";

                        Hyperlink3.Visible = Hyperlink4.Visible = false;
                    }
                    else
                    {
                        if (BaseDb.IsAnonymous(Page.User) || t.Old)
                        {
                            Hyperlink2.Visible = Hyperlink3.Visible = Hyperlink4.Visible = false;
                        }
                    }
                    #endregion

                    FillLiterals(p);
                }
                else
                {
                    Hide();
                }
            }
        }
Пример #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.IsInRole("Judge") && !User.IsInRole("User"))
            {
                throw new NeJudgeSecurityException("User");
            }

            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();
                if (rp.ProblemIDDefined)
                {
                    selprob.ProblemID = rp.ProblemID;
                }
            }
        }
Пример #8
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!BaseDb.IsUser(Page.User))
            {
                throw new NeJudgeSecurityException("User");
            }

            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType(), Context);
                rp.ProcessRequirements();
                selprob.AddHidableControl(hidabletable);
                if (rp.PidDefined)
                {
                    selprob.PID = rp.ProblemID;
                }
            }
        }
Пример #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                if (rp.ProblemIDDefined)
                {
                    selprob.ProblemID = rp.ProblemID;

                    Problem p = Problem.GetProblem(rp.ProblemID);
                    Contest t = Contest.GetContest(p.ContestID);

                    if (!Page.User.IsInRole("Administrator") && t.Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeInvalidParametersException("problemID");
                    }
                    //"Соревнование, задачу с которого вы хотите просмотреть, ещё не началось. Попробуйте позже."
                    problemView.ProblemID = p.ID;
                    #region Возня со ссылками

                    InitLinks(rp.ProblemID);
                    if (Page.User.IsInRole("Administrator"))
                    {
                        editHL.Visible = true;
                        HideLinks();
                    }
                    else
                    {
                        if (Page.User.IsInRole("Anonymous") || t.Time == ContestTime.Past)
                        {
                            HideLinks();
                        }
                    }

                    #endregion
                }
                else
                {
                    problemTable.Visible = false;
                }
            }
        }
Пример #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();
                if (rp.ContestIDDefined)
                {
                    if (Contest.GetContest(rp.ContestID).Time == ContestTime.Forthcoming && !Page.User.IsInRole("Administrator"))
                    {
                        throw new NeJudgeInvalidParametersException("contestID");
                    }
                    //Hide("Ёто соревнование начнетс¤ через " + HtmlFunctions.BeautifyTimeSpan(db.GetContest(tid).Beginning - DateTime.Now, false) + ". —ейчас задачи посмотреть нельз¤.");

                    #region —сылочки (Visible в зависимости от роли)

                    statHL.NavigateUrl  = UrlRenderer.RenderStatusUrl(rp.ContestID);
                    quesHL.NavigateUrl  = UrlRenderer.RenderQuestionsUrl(rp.ContestID);
                    monHL.NavigateUrl   = UrlRenderer.RenderMonitorUrl(rp.ContestID);
                    editHL.NavigateUrl  = UrlRenderer.RenderEditContestUrl(rp.ContestID);
                    printHL.NavigateUrl = UrlRenderer.RenderPrintContestUrl(rp.ContestID);

                    if (Page.User.IsInRole("Anonymous"))
                    {
                        statHL.Visible = false;
                        quesHL.Visible = false;
                    }
                    if (Page.User.IsInRole("Administrator"))
                    {
                        editHL.Visible = true;
                    }

                    #endregion
                }
                else
                {
                    monHL.Visible   = false;
                    statHL.Visible  = false;
                    quesHL.Visible  = false;
                    printHL.Visible = false;
                }
            }
        }
Пример #11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.IsInRole("Judge") && !User.IsInRole("User"))
            {
                throw new NeJudgeSecurityException("User, Judge");
            }
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                //Page.Response.AddHeader("Refresh", "90");
                MessagesFilter mf = new MessagesFilter(rp.ContestIDDefined?rp.ContestID:0, MessageType.Question);
                if (rp.UserIDDefined && User.IsInRole("Judge"))
                {
                    mf.UserID = rp.UserID;
                }
                mf.RequiredEmptyJuryMessage =
                    Request.QueryString["answered"] == null ||
                    Request.QueryString["answered"].ToLower() != "true";
                if (rp.ContestIDDefined)
                {
                    if (Contest.GetContest(rp.ContestID).Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeInvalidParametersException("contestID", "Нельзя просмотреть вопросы будущего соревнования");
                    }

                    mf.ContestID   = rp.ContestID;
                    mf.ProblemID   = (rp.ProblemIDDefined) ? rp.ProblemID : 0;
                    selmess.Filter = mf;

                    questionsGV.Columns[6].Visible = User.IsInRole("Judge");
                    Bind();
                }
                else
                {
                    questionsGV.Visible = false;
                    selmess.Filter      = mf;
                }
            }
        }
Пример #12
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType(), Context);
                rp.ProcessRequirements();
                using (BaseDb db = DbFactory.ConstructDatabase())
                {
                    if (rp.TidDefined)
                    {
                        selcon.TID = rp.ContestID;

                        #region Ссылочки (Visible в зависимости от роли)
                        InitLinks(rp.ContestID);
                        if (BaseDb.IsAnonymous(Page.User))
                        {
                            subHyperLink.Visible  = false;
                            quesHyperLink.Visible = false;
                        }
                        if (BaseDb.IsAdmin(Page.User))
                        {
                            editHyperLink.Visible = true;
                        }
                        #endregion

                        if (db.GetContest(rp.ContestID).Future&& !BaseDb.IsAdmin(Page.User))
                        {
                            throw new NeJudgeInvalidParametersException("tid");                            //Hide("Это соревнование начнется через " + HtmlFunctions.BeautifyTimeSpan(db.GetContest(tid).Beginning - DateTime.Now, false) + ". Сейчас задачи посмотреть нельзя.");
                        }
                        else
                        {
                            RedrawRepeater(rp.ContestID);
                        }
                    }
                    else
                    {
                        Hide("");
                    }
                }
            }
        }
Пример #13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.User.IsInRole("Anonymous"))
            {
                throw new NeJudgeSecurityException("User, Administrator, Judge");
            }
            if (!IsPostBack)
            {
                //Page.Response.AddHeader("Refresh", "90");
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                /*SubmissionsFilter*/ f = new SubmissionsFilter(0);
                if (rp.OutcomeDefined)
                {
                    f.Outcome = rp.Outcome;
                }
                f.UserID = (rp.UserIDDefined && User.IsInRole("Judge")) ? rp.UserID : User.Identity.Name;

                if (rp.ContestIDDefined)
                {
                    if (Contest.GetContest(rp.ContestID).Time == ContestTime.Forthcoming && !Page.User.IsInRole("Judge"))
                    {
                        throw new NeJudgeSecurityException("Ќевозможно просмотреть submissions будущего соревновани¤");
                    }

                    f.ContestID = rp.ContestID;
                    f.ProblemID = (rp.ProblemIDDefined) ? rp.ProblemID : 0;
                    int page;
                    int.TryParse(Request.QueryString["page"], out page);
                    statusGV.PageIndex = (page >= 1) ? page - 1 : 0;
                }
                else
                {
                    statusGV.Visible = false;
                }

                filter.Filter = f;
                //Context.Items["filter"] = f;
            }
        }
Пример #14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            RequirementsProcessor rp = new RequirementsProcessor(GetType());

            rp.ProcessRequirements();

            if (rp.SubmissionIDDefined)
            {
                Submission      sm  = Submission.GetSubmission(rp.SubmissionID);
                ITestLogManager itm =
                    Factory.GetHandlerInstance(
                        Contest.GetContest(Problem.GetProblem(sm.ProblemID).ContestID).Type
                        ).TestLogManager;

                TestLogGrid         = itm.BuildTestLogGrid(sm);
                TestLogGrid.Visible = true;
            }
            else
            {
                TestLogGrid.Visible = false;
            }
        }
Пример #15
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         RequirementsProcessor rp = new RequirementsProcessor(GetType());
         rp.ProcessRequirements();
         if (rp.ModeDefined)
         {
             if (rp.Mode == "edit")
             {
                 contest = Contest.GetContest(rp.ContestID);
             }
             mv.SetActiveView(contestParams);
             monthsDDL.Attributes.Add("onchange", "SelectedMonthChanged(this.options[this.selectedIndex].value)");
         }
         else
         {
             menu.Visible  = false;
             mv.Visible    = false;
             saveB.Visible = false;
         }
     }
 }
Пример #16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                if (rp.ModeDefined)
                {
                    if (rp.Mode == "create")
                    {
                        if ((Contest.GetContest(rp.ContestID).Time & (ContestTime.Past | ContestTime.Current)) != 0)
                        {
                            throw new NeJudgeInvalidParametersException("contestID", "Нельзя создать задачу в текущем или прошедшем соревновании");
                        }

                        selprob.ContestID = rp.ContestID;
                        problem           = new Problem();
                        problem.ContestID = rp.ContestID;
                    }
                    else if (rp.Mode == "edit")
                    {
                        selprob.ProblemID = rp.ProblemID;
                        problem           = Problem.GetProblem(rp.ProblemID);
                    }
                    problem.LoadStatement();

                    mv.SetActiveView(contentsParams);
                }
                else
                {
                    mv.Visible    = false;
                    menu.Visible  = false;
                    saveB.Visible = false;
                }
            }
        }
Пример #17
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (BaseDb.IsAnonymous(Page.User))
            {
                throw new NeJudgeSecurityException("User, Administrator, Judge");
            }
            if (!IsPostBack)
            {
                Page.Response.AddHeader("Refresh", "90");
                ArrayList sids = new ArrayList();
                int       page = 0;
                #region параметры
                _rp = new RequirementsProcessor(this.GetType(), Context);
                _rp.ProcessRequirements();
                if (Page.Request.QueryString["sname"] != null)
                {
                    problem = Page.Request.QueryString["sname"];
                }
                if (Page.Request.QueryString["result"] != null)
                {
                    result = Page.Request.QueryString["result"];
                }
                try
                {
                    page = int.Parse(Page.Request.QueryString["page"]);
                }
                catch
                {
                    page = 0;
                }
                using (BaseDb db = DbFactory.ConstructDatabase())
                {
                    if (_rp.UidDefined)
                    {
                        if (BaseDb.IsJudge(Page.User))
                        {
                            filter.UserID = _rp.UserID;
                        }
                        else
                        {
                            throw new NeJudgeSecurityException("Judge");
                        }
                    }

                    if (_rp.TidDefined)
                    {
                        //filter.ContestID = _rp.ContestID;
                        if (db.GetContest(_rp.ContestID).Future)
                        {
                            Hide("Невозможно просмотреть submissions будущего соревнования");
                        }
                        else
                        {
                            int pid = -1;
                            if (problem != "")
                            {
                                pid = db.GetPidByShortName(_rp.ContestID, problem);
                                if (pid == -1)
                                {
                                    throw new NeJudgeInvalidParametersException("sname");
                                }
                                else
                                {
                                    if (!Page.IsPostBack)
                                    {
                                        filter.ProblemID = problem[0];
                                    }
                                }
                            }
                            if (result != "")
                            {
                                try
                                {
                                    Result r = (Result)Enum.Parse
                                                   (typeof(Result), result);
                                    if (!Page.IsPostBack)
                                    {
                                        filter.Result = r;
                                    }
                                }
                                catch (ArgumentException)
                                {
                                    throw new NeJudgeInvalidParametersException("result");
                                }
                            }
                            #endregion
                            foreach (Submission s in db.GetSubmissions(_rp.ContestID,
                                                                       _rp.UidDefined ? _rp.UserID : 0,
                                                                       (problem == "") ? 0 : pid, result))
                            {
                                sids.Add(s.SID);
                            }
                            if (sids.Count == 0)
                            {
                                //Hide("В этом соревновании нет ни одного submission");
                            }
                            sids.Reverse();
                            statusGrid.VirtualItemCount = sids.Count;
                            if (sids.Count - page * statusGrid.PageSize < 0)
                            {
                                page = sids.Count / statusGrid.PageSize;
                            }
                            statusGrid.CurrentPageIndex = page;
                            ArrayList arr = new ArrayList();
                            int       l;
                            if (sids.Count - page * statusGrid.PageSize < statusGrid.PageSize)
                            {
                                l = sids.Count;
                            }
                            else
                            {
                                l = page * statusGrid.PageSize + statusGrid.PageSize;
                            }
                            for (int i = page * statusGrid.PageSize; i < l; i++)
                            {
                                arr.Add(sids[i]);
                            }
                            Bind(arr);
                            HtmlFunctions.BeautifyDataGrid(statusGrid);
                        }
                    }
                    else
                    {
                        Hide(null);
                    }
                }
            }
        }
Пример #18
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType(), Context);
                rp.ProcessRequirements();
                //Page.Response.AddHeader("Refresh","300");
                if (rp.TidDefined)
                {
                    Contest con;
                    BaseDb  db = DbFactory.ConstructDatabase();
                    using ( db )
                    {
                        con = db.GetContest(rp.ContestID);
                        if (con.Future)
                        {
                            Hide("Нельзя просмотреть монитор будущего соревнования");
                            db.Close();
                        }
                        else
                        {
                            DateTime cur_time = TimeUtils.ZeroDateTime(DateTime.Now);
                            DateTime t_begin  = TimeUtils.ZeroDateTime(con.Beginning);
                            DateTime t_end    = TimeUtils.ZeroDateTime(con.Ending);

                            // Последнее обновление
                            TimeSpan dur       = TimeUtils.ZeroTimeSpan(t_end - t_begin);
                            TimeSpan elapsed   = TimeUtils.ZeroTimeSpan((cur_time - t_begin < dur) ? cur_time - t_begin : dur);
                            TimeSpan estimated = TimeUtils.ZeroTimeSpan(dur - elapsed);
                            if (elapsed >= dur)
                            {
                                st_label.InnerHtml +=
                                    "<span style='color:red;font-size:small;display:block;'>(Соревнование окончено)</span>";
                            }
                            refresh.Text = HtmlFunctions.BeautifyTimeSpan(elapsed, false);
                            // Продолжительность соревнования
                            period.Text = HtmlFunctions.BeautifyTimeSpan(dur, false);
                            left.Text   = HtmlFunctions.BeautifyTimeSpan(estimated, false);
                        }
                    }

                    /*DataTable mon_dt = new DataTable("Результаты"), stat_dt = new DataTable("Статистика");
                     * mon_dt.Columns.Add("ID");
                     * mon_dt.Columns.Add("Имя участника");
                     * //mon_dt.PrimaryKey = new DataColumn[]{mon_dt.Columns[0]};
                     *
                     * stat_dt.Columns.Add("Показатель");
                     * DataRow dr = stat_dt.NewRow();
                     * dr[0] = "Команд решили";
                     * stat_dt.Rows.Add(dr);
                     * dr = stat_dt.NewRow();
                     * dr[0] = "Команд решили/команд всего";
                     * stat_dt.Rows.Add(dr);
                     *
                     * int tid = rp.ContestID;
                     * selcon.TID = tid;
                     * BaseDb db = DbFactory.ConstructDatabase();
                     * //HyperLink1.NavigateUrl += tid;
                     * //Прочитали результаты
                     * Contest t;
                     *
                     * if ((t = db.GetContest(tid)).Future)
                     * {
                     *      Hide("Нельзя просмотреть монитор будущего сорвевнования");
                     *      db.Close();
                     * }
                     * else
                     * {
                     *      DateTime cur_time = ZeroDateTime(DateTime.Now);
                     *      DateTime t_begin = ZeroDateTime(t.Beginning);
                     *      DateTime t_end = ZeroDateTime(t.Ending);
                     *
                     *      // Последнее обновление
                     *      TimeSpan dur = ZeroTimeSpan(t_end - t_begin);
                     *      TimeSpan elapsed = ZeroTimeSpan( (cur_time - t_begin < dur) ? cur_time - t_begin : dur);
                     *      TimeSpan estimated = ZeroTimeSpan(dur - elapsed);
                     *      if ( elapsed >= dur )
                     *      {
                     *              st_label.InnerHtml +=
                     *                      "<span style='color:red;font-size:small;display:block;'>(Соревнование окончено)</span>";
                     *      }
                     *      refresh.Text = HtmlFunctions.BeautifyTimeSpan(elapsed, false);
                     *      // Продолжительность соревнования
                     *      period.Text = HtmlFunctions.BeautifyTimeSpan(dur, false);
                     *      left.Text = HtmlFunctions.BeautifyTimeSpan(estimated, false);
                     *
                     *      ArrayList ps = db.GetProblems(tid);
                     *      if (ps.Count == 0)
                     *      {
                     *              Hide("В этом соревновании нет задач");
                     *              return;
                     *      }
                     *      int i = 0;
                     *      for (i = 0; i < ps.Count; i++)
                     *      {
                     *              mon_dt.Columns.Add(((Problem) ps[i]).ShortName);
                     *              //mon_dt.Columns.Add(string.Format("<a style='grid_first' href='problem.aspx?pid={0}'>{1}</a>",((Problem)ps[i]).PID, ((Problem)ps[i]).ShortName));
                     *              stat_dt.Columns.Add(((Problem) ps[i]).ShortName);
                     *              //stat_dt.Columns.Add(string.Format("<a href='problem.aspx?pid={0}'>{1}</a>",((Problem)ps[i]).PID, ((Problem)ps[i]).ShortName));
                     *      }
                     *      mon_dt.Columns.Add("Всего решено");
                     *      mon_dt.Columns.Add("Время");
                     *      mon_dt.Columns.Add("Место");
                     *      //Колонки созданы
                     *      TimeSpan the_latest = new TimeSpan(0, 0, 0, 0, 0);
                     *      bool has_ac = false;
                     *      ArrayList user_data = new ArrayList();
                     *
                     #region обработка очереди
                     *
                     *      foreach (Submission s in db.GetSubmissions(tid, 0))
                     *      {
                     *              // Юзер, пославший текущий сабмишн
                     *              UserData u = null;
                     *              foreach (UserData ud in user_data)
                     *              {
                     *                      if (ud.UID == s.UID)
                     *                      {
                     *                              u = ud;
                     *                              break;
                     *                      }
                     *              }
                     *              // Новая строка с юзером
                     *              if (u == null)
                     *              {
                     *                      u = new UserData();
                     *                      u.UID = (uint) s.UID;
                     *                      u.Solved = 0;
                     *                      u.Time = new TimeSpan(0, 0, 0, 0, 0);
                     *                      u.Problems = new ArrayList();
                     *                      foreach (Problem p in ps)
                     *                      {
                     *                              Attempts at = new Attempts();
                     *                              at.AcTime = new TimeSpan(0, 0, 0, 0, 0);
                     *                              at.Count = 0;
                     *                              at.PID = (uint) p.PID;
                     *                              u.Problems.Add(at);
                     *                      }
                     *                      user_data.Add(u);
                     *              }
                     *              Attempts subm_att = null;
                     *              foreach (Attempts sat in u.Problems)
                     *              {
                     *                      if (sat.PID == s.PID)
                     *                      {
                     *                              subm_att = sat;
                     *                              break;
                     *                      }
                     *              }
                     *              if (subm_att == null)
                     *              {
                     *                      throw new ApplicationException("Невозможно найти задачу в описании участника");
                     *              }
                     *              if (s.Result.Code == Result.AC)
                     *              {
                     *                      if (subm_att.Count <= 0)
                     *                      {
                     *                              // вычисление попыток
                     *                              subm_att.Count = -subm_att.Count + 1;
                     *                              subm_att.AcTime = s.Time - t_begin;
                     *                              subm_att.AcTime = ZeroTimeSpan(subm_att.AcTime);
                     *                              has_ac = true;
                     *                              if (the_latest < subm_att.AcTime)
                     *                              {
                     *                                      the_latest = subm_att.AcTime;
                     *                              }
                     *                              // начисление времени с учетом штрафа
                     *                              u.Time += subm_att.AcTime +
                     *                                      new TimeSpan(0, 0, (subm_att.Count - 1)*20, 0, 0);
                     *                      }
                     *              }
                     *              else if (s.Result.Code != Result.WAIT && s.Result.Code != Result.RU)
                     *              {
                     *                      if (subm_att.Count <= 0)
                     *                      {
                     *                              subm_att.Count--;
                     *                      }
                     *              }
                     *      }
                     *
                     #endregion
                     *
                     *      foreach (UserData ud in user_data)
                     *      {
                     *              foreach (Attempts atte in ud.Problems)
                     *              {
                     *                      if (atte.Count > 0)
                     *                      {
                     *                              ud.Solved++;
                     *                      }
                     *              }
                     *      }
                     *
                     *      if (has_ac)
                     *      {
                     *              lastac.Text = HtmlFunctions.BeautifyTimeSpan(the_latest, false);
                     *      }
                     *      else
                     *      {
                     *              lastac.Text = "Еще не было";
                     *      }
                     *      user_data.Sort(new UserCompare());
                     *      if (user_data.Count == 0)
                     *      {
                     *              st_label.InnerHtml += "<span style='color:#CFC411;font-size:small;display:block;'>(Не было послано ни одного решения)</span>";
                     *      }
                     *      int[] ac_counts = new int[ps.Count];
                     *      int[] total_counts = new int[ps.Count];
                     *      foreach (UserData ud in user_data)
                     *      {
                     *              DataRow mon_dtr = mon_dt.NewRow();
                     *              mon_dtr[0] = ud.UID;
                     *              User us = db.GetUser((int) ud.UID);
                     *              mon_dtr[1] = us.Fullname;
                     *              mon_dt.Rows.Add(mon_dtr);
                     *              for (int j = 0; j < ud.Problems.Count; j++)
                     *              {
                     *                      int count = ((Attempts) ud.Problems[j]).Count;
                     *                      if (count > 0)
                     *                      {
                     *                              // Write a result to the problem's column
                     *                              mon_dtr[2 + j] = "<span style='color:blue;'>+";
                     *                              if (count != 1)
                     *                              {
                     *                                      mon_dtr[2 + j] += (count - 1).ToString();
                     *                              }
                     *                              mon_dtr[2 + j] += "</span><span style='font-size:smaller;display:block;'>(";
                     *                              mon_dtr[2 + j] += HtmlFunctions.BeautifyTimeSpan(((Attempts) ud.Problems[j]).AcTime, true);
                     *                              mon_dtr[2 + j] += ")</span>";
                     *                              // Update AC received users count
                     *                              ac_counts[j]++;
                     *                              total_counts[j]++;
                     *                      }
                     *                      else if (count < 0)
                     *                      {
                     *                              mon_dtr[2 + j] = "<span style='color:red;'>";
                     *                              mon_dtr[2 + j] += count.ToString();
                     *                              mon_dtr[2 + j] += "</span>";
                     *                              total_counts[j]++;
                     *                      }
                     *                      else
                     *                      {
                     *                              mon_dtr[2 + j] = "";
                     *                      }
                     *              }
                     *              mon_dtr[mon_dt.Columns.Count - 2] = (int) ud.Time.TotalMinutes;
                     *              mon_dtr[mon_dt.Columns.Count - 3] = ud.Solved;
                     *      }
                     *      db.Close();
                     *      for (int l = 0; l < mon_dt.Rows.Count; l++)
                     *      {
                     *              mon_dt.Rows[l][mon_dt.Columns.Count - 1] = l + 1;
                     *      }
                     *
                     *
                     *      monitorDG.DataSource = mon_dt;
                     *      monitorDG.DataBind();
                     *
                     #region статистика
                     *
                     *      for (int k = 0; k < ps.Count; k++)
                     *      {
                     *              stat_dt.Rows[0][k + 1] = ac_counts[k];
                     *              double ac_percent = (total_counts[k] == 0)
                     *                      ? 0 : (double)ac_counts[k] / (double)total_counts[k] * 100.0;
                     *              stat_dt.Rows[1][k + 1] = String.Format("{0:F2}%", ac_percent);
                     *      }
                     *      statDG.DataSource = stat_dt;
                     *      statDG.DataBind();
                     *
                     #endregion
                     *
                     *      Draw(mon_dt.Columns.Count - 3);
                     * }*/
                    Monitor m = MonitorManager.GetMonitor(rp.ContestID, Context);
                    m.Reload();
                    if (m.HasAccepted)
                    {
                        lastac.Text = String.Format("{0}<br><strong>Задача {1}</strong>",
                                                    HtmlFunctions.BeautifyTimeSpan(
                                                        TimeUtils.ZeroTimeSpan(m.LastAccepted.Time - con.Beginning), false),
                                                    m.LastAccepted.ProblemShortName);
                    }
                    else
                    {
                        lastac.Text = "Еще не было";
                    }
                    DataTable mon = m.FormatMonitor();
                    monitorDG.DataSource = mon;
                    monitorDG.DataBind();
                    Draw(mon.Columns.Count - 3);
                    statDG.DataSource = m.FormatStats();
                    statDG.DataBind();
                }
                else
                {
                    Hide("");
                }
            }
        }