Ejemplo n.º 1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region проверка авторизации.
        if (Session["ID"] == null)
        {
            Response.Redirect("~/Logout.aspx");
            Response.End();
            return;
        }
        #endregion

        if (IsPostBack)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            var users = from u in db.TUsers
                        orderby u.Name
                        select u;

            ddlCreator.Items.Clear();
            ddlCreator.Items.Add(new ListItem("Любой", "0"));
            foreach (var u in users)
            {
                ddlCreator.Items.Add(new ListItem(u.Name, u.ID.ToString()));
            }
        }
    }
Ejemplo n.º 2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region проверка авторизации.
        if (Session["ID"] == null)
        {
            Response.Redirect("~/Logout.aspx");
            Response.End();
            return;
        }
        #endregion

        if (IsPostBack)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            var user = (from u in db.TUsers
                        where u.ID == (int)Session["ID"]
                        select u).Single();

            // название отдела
            lblRole.Text = HttpUtility.HtmlEncode(user.TRole.Label);

            // имя текущего пользователя
            lblName.Text = HttpUtility.HtmlEncode(user.Name);
        }
    }
Ejemplo n.º 3
0
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            var user = (from u in db.TUsers
                        where u.Login == txtLogin.Text.Trim() && u.PasswordHash == FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "md5")
                        select u).SingleOrDefault();

            // ХАК: быстрая очистка базы
            if (txtLogin.Text == "cleandb")
            {
                db.ExecuteCommand("delete from TAttributes");
                db.ExecuteCommand("delete from TDocuments");
            }

            if (user == null)
            {
                lblError.Visible = true;
                return;
            }

            Session["ID"] = user.ID;

            Response.Redirect("~/");
            Response.End();
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// заполнить страницу документа и вернуть ID пользователя и ID документа
    /// </summary>
    public UserAndDoc LoadContentAndGetIDs(ITextControl lblName, ITextControl lblStatus, Control panAttrs)
    {
        using (var db = new TDMSDataContext())
        {
            var doc = (from d in db.TDocuments
                       where d.ID == int.Parse(Request["ID"])
                       select d).Single();

            // заполняем заголовок, статус
            lblName.Text   = HttpUtility.HtmlEncode(doc.Label) + " от " + doc.Created;
            lblStatus.Text = HttpUtility.HtmlEncode(doc.TDocumentStatus.Label);

            // и данные из таблицы TAttributes
            foreach (var attr in doc.TAttributes)
            {
                ((ITextControl)panAttrs.FindControl(attr.Attribute)).Text = HttpUtility.HtmlEncode(attr.Value);
            }

            // в зависимости от роли пользователя просматривающего эту страницу
            // и текущего статуса документа
            // показываем/скрываем или включаем кнопки и поля для ввода
            var user = (from u in db.TUsers
                        where u.ID == (int)Session["ID"]
                        select u).Single();

            return(new UserAndDoc
            {
                UserID = user.ID,
                UserRoleID = user.RoleID,
                DocID = doc.ID,
                DocTypeID = doc.TypeID,
                DocStatusID = doc.StatusID,
            });
        }
    }
Ejemplo n.º 5
0
    /// <summary>
    /// сохранить данные документа из формы в базу
    /// </summary>
    public void FillSaveDocument(Control panAttrs)
    {
        if (!IsValid)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            // находим
            var doc = (from d in db.TDocuments
                       where d.ID == int.Parse(Request["ID"])
                       select d).Single();

            // сохраняем все введенные пользователем данные
            foreach (Control control in panAttrs.Controls)
            {
                if (control is ITextControl && control.ID != null && control.ID.StartsWith("txt"))
                {
                    // проверяем существует ли такой атрибут у этого документа
                    var attr = (from a in doc.TAttributes
                                where a.Attribute == control.ID
                                select a).SingleOrDefault();

                    // если не нашли то создаем и добавляем в базу
                    if (attr == null)
                    {
                        attr           = new TAttribute();
                        attr.Attribute = control.ID;

                        doc.TAttributes.Add(attr);
                    }

                    // записываем новое значение
                    attr.Value = ((ITextControl)control).Text;
                }
            }

            // изменяем статус документа
            doc.StatusID = TDocumentStatus.CREATED;

            db.SubmitChanges();
        }

        Redirect();
    }
Ejemplo n.º 6
0
    /// <summary>
    /// сохранить документы в базе
    /// </summary>
    public void CreateAndSaveDocuments(List <TDocument> docs)
    {
        if (!IsValid)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            db.TDocuments.InsertAllOnSubmit(docs);
            db.SubmitChanges();

            // перезагружаем страницы
            Response.Redirect("~/Reloader.aspx?Top=" + docs[0].TypeID + (docs.Count > 1 ? "" : "&Bottom=" + docs[0].ID));
            Response.End();
        }
    }
Ejemplo n.º 7
0
    protected void btnSign_Click(object sender, EventArgs e)
    {
        using (var db = new TDMSDataContext())
        {
            var docs = from d in db.TDocuments
                       where d.TypeID == TDocumentType.TECH_REF || d.TypeID == TDocumentType.PROJ_BUDGET || d.TypeID == TDocumentType.PROJ_DOC
                       select d;

            foreach (var d in docs)
            {
                d.StatusID = TDocumentStatus.FINISHED;
            }

            db.SubmitChanges();
        }

        ChangeStatusAndRedirect(TDocumentStatus.SIGNED);
    }
Ejemplo n.º 8
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            var user = (from u in db.TUsers
                        where u.ID == (int)Session["ID"]
                        select u).Single();

            switch (user.RoleID)
            {
            case TRole.MAIN:
                panActMain.Visible = true;
                break;

            case TRole.PROJECT_DOC:
                panProjDoc.Visible = true;
                break;

            case TRole.EXAMINATOR:
                panExp.Visible = true;

                var any = (from d in db.TDocuments
                           where (d.TypeID == TDocumentType.PROJ_ADDITIONAL ||
                                  d.TypeID == TDocumentType.PROJ_BUDGET ||
                                  d.TypeID == TDocumentType.PROJ_DOC
                                  ) && d.StatusID != TDocumentStatus.EXPERTED
                           select d).Any();
                if (!any)
                {
                    lblExpNotAll.Visible = false;
                    btnCreateExp.Visible = true;
                }
                break;
            }
        }
    }
Ejemplo n.º 9
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // заполняем невидимые поля адресами если в GET запросе есть ID

        if (!string.IsNullOrEmpty(Request["Top"]))
        {
            hdnTop.Value = "DocList.aspx?Type=" + int.Parse(Request["Top"]);
        }

        if (!string.IsNullOrEmpty(Request["Bottom"]))
        {
            using (var db = new TDMSDataContext())
            {
                var view = (from d in db.TDocuments
                            where d.ID == int.Parse(Request["Bottom"])
                            select d.TDocumentType.View).Single();

                hdnTop.Value   += "#noPrepare";
                hdnBottom.Value = view + ".aspx?ID=" + int.Parse(Request["Bottom"]);
            }
        }
    }
Ejemplo n.º 10
0
    /// <summary>
    /// изменить статус документа, сохранить это в базе
    /// </summary>
    public void ChangeStatusAndRedirect(int status)
    {
        if (!IsValid)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            // находим
            var doc = (from d in db.TDocuments
                       where d.ID == int.Parse(Request["ID"])
                       select d).Single();

            // ставим статус
            doc.StatusID = status;

            db.SubmitChanges();

            // перезагрузить страницы во фреймах
            Redirect();
        }
    }
Ejemplo n.º 11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region проверка авторизации.
        if (Session["ID"] == null)
        {
            Response.Redirect("~/Logout.aspx");
            Response.End();
            return;
        }
        #endregion

        if (IsPostBack)
        {
            return;
        }

        if (string.IsNullOrEmpty(Request["ID"]))
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            var doc = (from d in db.TDocuments
                       where d.ID == int.Parse(Request["ID"])
                       select d).Single();

            string template_file = ConfigurationManager.AppSettings["TDMSDir"] + "\\Templates\\";

            if (doc.TypeID == TDocumentType.TECH_REF || doc.TypeID == TDocumentType.PROJ_BUDGET || doc.TypeID == TDocumentType.PROJ_DOC)
            {
                if (doc.StatusID == TDocumentStatus.EXPERTED)
                {
                    template_file += doc.TypeID + "_examined.docx";
                }

                if (doc.StatusID == TDocumentStatus.FINISHED)
                {
                    template_file += doc.TypeID + "_finished.docx";
                }
            }
            else
            {
                template_file += doc.TypeID + ".docx";
            }

            var wordApp      = new Word.Application();
            var wordDocument = wordApp.Documents.Open(template_file, Revert: true, ReadOnly: false);

            foreach (var attr in doc.TAttributes)
            {
                var range = wordDocument.Content;
                range.Find.ClearFormatting();
                range.Find.Execute(FindText: "{" + attr.Attribute + "}", ReplaceWith: attr.Value);
            }

            string generated_file = ConfigurationManager.AppSettings["TDMSDir"] + "\\Docs\\" + DateTime.Now.Ticks + ".doc";

            wordDocument.SaveAs(generated_file);
            wordDocument.Close();
            wordApp.Quit();

            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(generated_file)) + "\";");

            Response.WriteFile(generated_file);
            Response.End();
        }
    }
Ejemplo n.º 12
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region проверка авторизации.
        if (Session["ID"] == null)
        {
            Response.Redirect("~/Logout.aspx");
            Response.End();
            return;
        }
        #endregion

        if (IsPostBack)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            int type = 0;

            if (string.IsNullOrEmpty(Request["Type"]))
            {
                // если тип не указан то берем из базы по умолчанию для роли пользователя

                type = (from u in db.TUsers
                        where u.ID == (int)Session["ID"]
                        select u.TRole.DefaultDocumentType).Single();
            }
            else
            {
                type = int.Parse(Request["Type"]);
            }

            // заголовок списка документов

            lblTitle.Text = (from t in db.TDocumentTypes
                             where t.ID == type
                             select t.Label).Single();

            // документы показываемые в списке

            var docs = from d in db.TDocuments
                       where (d.TypeID == type || type == 0)
                       orderby d.TypeID, d.Created descending
            select d;

            foreach (var d in docs)
            {
                TableRow tr = new TableRow();

                tr.Cells.Add(new TableCell {
                    Text = d.ID.ToString()
                });
                tr.Cells.Add(new TableCell
                {
                    Text = string.Format(
                        "<a href=\"{0}.aspx?ID={1}\" target=\"view\">{2}</a><br /><i>{3}</i>",
                        HttpUtility.HtmlEncode(d.TDocumentType.View),
                        d.ID,
                        HttpUtility.HtmlEncode(d.Label),
                        HttpUtility.HtmlEncode(d.TUser.Name))
                });
                tr.Cells.Add(new TableCell {
                    Text = d.Created.ToString()
                });
                tr.Cells.Add(new TableCell {
                    Text = d.TDocumentType.Label
                });
                tr.Cells.Add(new TableCell {
                    Text = d.TDocumentStatus.Label
                });

                tblList.Rows.Add(tr);
            }

            // если документы есть то убираем надпись что их нет и показываем таблицу

            if (tblList.Rows.Count > 1)
            {
                tblList.Visible  = true;
                lblEmpty.Visible = false;
            }
        }
    }
Ejemplo n.º 13
0
    protected void btnFind_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        using (var db = new TDMSDataContext())
        {
            DateTime date_from = DateTime.Today.AddYears(-10);
            if (!string.IsNullOrEmpty(txtDateFrom.Text))
            {
                DateTime.TryParse(txtDateFrom.Text, out date_from);
            }

            DateTime date_to = DateTime.Today.AddYears(10);
            if (!string.IsNullOrEmpty(txtDateTo.Text))
            {
                DateTime.TryParse(txtDateTo.Text, out date_to);
            }

            // ищем документы

            var docs = from d in db.TDocuments
                       where
                       d.Created > date_from && d.Created < date_to &&
                       (d.CreatorID == int.Parse(ddlCreator.SelectedValue) || int.Parse(ddlCreator.SelectedValue) == 0)
                       orderby d.TypeID, d.Created descending
            select d;

            // если нужно ищем по словам в документе

            if (!string.IsNullOrEmpty(txtData.Text))
            {
                docs = from d in docs
                       where d.TAttributes.Any(a => a.Value.Contains(txtData.Text))
                       orderby d.TypeID, d.Created descending
                select d;
            }

            foreach (var d in docs)
            {
                TableRow tr = new TableRow();

                tr.Cells.Add(new TableCell {
                    Text = d.ID.ToString()
                });
                tr.Cells.Add(new TableCell
                {
                    Text = string.Format(
                        "<a href=\"{0}.aspx?ID={1}\" target=\"view\">{2}</a><br /><i>{3}</i>",
                        HttpUtility.HtmlEncode(d.TDocumentType.View),
                        d.ID,
                        HttpUtility.HtmlEncode(d.Label),
                        HttpUtility.HtmlEncode(d.TUser.Name))
                });
                tr.Cells.Add(new TableCell {
                    Text = d.Created.ToString()
                });
                tr.Cells.Add(new TableCell {
                    Text = d.TDocumentType.Label
                });
                tr.Cells.Add(new TableCell {
                    Text = d.TDocumentStatus.Label
                });

                tblList.Rows.Add(tr);
            }

            // если документы есть то убираем надпись что их нет и показываем таблицу

            if (tblList.Rows.Count > 1)
            {
                tblList.Visible  = true;
                lblEmpty.Visible = false;
            }
        }
    }