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())); } } }
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); } }
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(); } }
/// <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, }); } }
/// <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(); }
/// <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(); } }
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); }
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; } } }
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"]); } } }
/// <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(); } }
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(); } }
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; } } }
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; } } }