public static void AddFilterInformation(XmlDocument xmlDoc, IBNReportTemplate template) { XmlDocument xmlTemplateDoc = template.CreateXMLTemplate(); XmlNode xmlFilters = xmlTemplateDoc.SelectSingleNode("IBNReportTemplate/Filters"); XmlNode xmlFiltersR = xmlDoc.ImportNode(xmlFilters, true); xmlDoc.SelectSingleNode("Report").AppendChild(xmlFiltersR); }
public static void AddSortInformation(XmlDocument xmlDoc, IBNReportTemplate template) { XmlDocument xmlTemplateDoc = template.CreateXMLTemplate(); XmlNode xmlSorting = xmlTemplateDoc.SelectSingleNode("IBNReportTemplate/Sorting"); XmlNode xmlSortingR = xmlDoc.ImportNode(xmlSorting, true); xmlDoc.SelectSingleNode("Report").AppendChild(xmlSortingR); }
protected void Page_Load(object sender, System.EventArgs e) { UtilHelper.RegisterCssStyleSheet(Page, "~/Styles/IbnFramework/windows.css"); UtilHelper.RegisterCssStyleSheet(Page, "~/Styles/IbnFramework/Theme.css"); UtilHelper.RegisterCssStyleSheet(Page, "~/Styles/IbnFramework/ibn.css"); UtilHelper.RegisterScript(Page, "~/Scripts/browser.js"); UtilHelper.RegisterScript(Page, "~/Scripts/buttons.js"); if (Request["Refresh"] != null && Request["Refresh"] == "1") Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), string.Format("try {{window.moveTo(0,0);window.resizeTo(screen.availWidth,screen.availHeight);window.opener.top.frames['right'].location.href='{0}';}}", this.ResolveUrl("~/Apps/ReportManagement/Pages/UserReport.aspx")) + "catch (e){}", true); if (!Page.IsPostBack) { if (Request["Mode"] != null && bool.Parse(Request["Mode"].ToString())) { int iTemplateId = -1; using (IDataReader reader = Report.GetReport(ReportId)) { if (reader.Read()) { iTemplateId = (int)reader["TemplateId"]; } } if (iTemplateId > 0) using (IDataReader rdr = Report.GetReportTemplate(iTemplateId)) { if (rdr.Read()) { txtTemplateTitle.Text = rdr["Name"].ToString(); } } // btnSaveVis.Visible = true; --[2006/01/17] btnSaveVis.Visible = false; } else btnSaveVis.Visible = false; } if (ReportId == -1) { return; } if (!Page.IsPostBack && (Request["Export"] == null || Request["Export"] != "2")) { byte[] bit_data = null; using (IDataReader reader_BLOB = Report.GetReportBinaryData(ReportId)) { if (reader_BLOB.Read()) { bit_data = (byte[])reader_BLOB["ReportData"]; } } XmlDocument doc = new XmlDocument(); doc.InnerXml = System.Text.Encoding.UTF8.GetString(bit_data); IBNReportTemplate repTemplate = null; using (IDataReader reader = Report.GetReport(ReportId)) { if (reader.Read()) { _header.ReportCreated = (DateTime)reader["ReportCreated"]; _header.ReportCreator = CommonHelper.GetUserStatusPureName((int)reader["ReportCreator"]); XmlDocument temp = new XmlDocument(); temp.InnerXml = "<IBNReportTemplate>" + doc.SelectSingleNode("Report/IBNReportTemplate").InnerXml + "</IBNReportTemplate>"; repTemplate = new IBNReportTemplate(temp); _header.Title = HttpUtility.HtmlDecode(repTemplate.Name); } } #region Filters QObject qItem = null; switch (repTemplate.ObjectName) { case "Incident": //Incident qItem = new QIncident(); break; case "Project": //Project qItem = new QProject(); break; case "ToDo": //ToDo`s qItem = new QToDo(); break; case "Event": //Calendar Entries qItem = new QCalendarEntries(); break; case "Document": //Documents qItem = new QDocument(); break; case "Directory": //Users qItem = new QDirectory(); break; case "Task": //Tasks qItem = new QTask(); break; case "Portfolio": //Portfolios qItem = new QPortfolio(); break; default: break; } _header.Filter = MakeFilterText(repTemplate, qItem); #endregion _header.BtnPrintVisible = false; bool ShowEmpty = repTemplate.ShowEmptyGroup; int GroupCount = repTemplate.Groups.Count; string ViewType = repTemplate.ViewType; string sPath = ""; if (GroupCount == 0) sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupWithout.xslt"; else if (GroupCount == 1 && ShowEmpty) { if (ViewType == "0") { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupOne.xslt"; } else { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupOneCollapse.xslt"; } } else if (GroupCount == 1 && !ShowEmpty) { if (ViewType == "0") { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupOneNoEmpty.xslt"; } else { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupOneNoEmptyCollapse.xslt"; } } else if (GroupCount == 2 && ShowEmpty) { if (ViewType == "0") { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupTwo.xslt"; } else { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupTwoCollapse.xslt"; } } else if (GroupCount == 2 && !ShowEmpty) { if (ViewType == "0") { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupTwoNoEmpty.xslt"; } else { sPath = HttpRuntime.AppDomainAppPath + @"Reports\GroupTwoNoEmptyCollapse.xslt"; } } XslCompiledTransform _transform = new XslCompiledTransform(); XsltSettings set = new XsltSettings(true, true); _transform.Load(sPath, set, null); StringWriter sw = new StringWriter(); XmlTextWriter w = new XmlTextWriter(sw); _transform.Transform(doc, w); w.Close(); lblXML.Text = HttpUtility.HtmlDecode(sw.ToString()); } if (Request["Export"] != null && Request["Export"] == "2") { ExportXML(); } if (Request["Export"] != null && Request["Export"] == "1") { ExportExcel(); } btnSave.Text = LocRM.GetString("tSave"); btnSaveVis.Value = LocRM.GetString("tSaveAsTemplate"); btnExcel.Text = LocRM.GetString("Export"); btnXML.Text = LocRM.GetString("XMLExport"); lgdSaveTemplate.InnerText = LocRM.GetString("tSaveTemplate"); cbSaveResult.Text = LocRM.GetString("tSaveResult"); cbOnlyForMe.Text = LocRM.GetString("tOnlyForMe"); }
private void BindFilter(string command) { DataTable dtFilters = (DataTable)ViewState["FiltersTable"]; IBNReportTemplate repTemp = null; if (ResultXML.Value != "") { repTemp = IBNReportTemplate.Load(ResultXML.Value); } if (repTemp == null) repTemp = new IBNReportTemplate(); if (_qItem == null) BindQObject(); #region PastStep if (pastCommand.Value != "") { QField qPast = _qItem.Fields[pastCommand.Value]; QDictionary qDicPast = _qItem.GetDictionary(qPast); bool isCheck = false; DataRow[] dr = dtFilters.Select("FieldName = '" + qPast.Name + "'"); if (dr.Length > 0) isCheck = (bool)dr[0]["IsChecked"]; FilterInfo fi = new FilterInfo(); fi.FieldName = qPast.Name; fi.DataType = qPast.DataType.ToString(); object curValue = null; if (qDicPast != null) { curValue = dictFltr.Value; if (curValue != null) { foreach (string sValue in (string[])curValue) fi.Values.Add(sValue); } } else { switch (qPast.DataType) { case DbType.Decimal: case DbType.Int32: curValue = intFltr.Value; if (curValue != null) { fi.Values.Add(((IntFilterValue)curValue).TypeValue); fi.Values.Add(((IntFilterValue)curValue).FirstValue); fi.Values.Add(((IntFilterValue)curValue).SecondValue); } break; case DbType.DateTime: case DbType.Date: curValue = dtFltr.Value; if (curValue != null) { fi.Values.Add(((DateFilterValue)curValue).TypeValue); fi.Values.Add(((DateFilterValue)curValue).FirstValue); fi.Values.Add(((DateFilterValue)curValue).SecondValue); } break; case DbType.String: curValue = strFltr.Value; if (curValue != null) fi.Values.Add(curValue.ToString()); break; case DbType.Time: curValue = timeFltr.Value; if (curValue != null) { fi.Values.Add(((TimeFilterValue)curValue).TypeValue); fi.Values.Add(((TimeFilterValue)curValue).FirstValue); fi.Values.Add(((TimeFilterValue)curValue).SecondValue); } break; } } if (isCheck) { int index = repTemp.Filters.IndexOf(repTemp.Filters[fi.FieldName]); if (index >= 0) { repTemp.Filters.RemoveAt(index); repTemp.Filters.Insert(index, fi); } else repTemp.Filters.Add(fi); } else { int index = repTemp.Filters.IndexOf(repTemp.Filters[fi.FieldName]); if (index >= 0) { repTemp.Filters.RemoveAt(index); } else if (fi.Values.Count > 0) { dr[0]["IsChecked"] = true; repTemp.Filters.Add(fi); } } } #endregion #region CurrentStep if (command != "") { DataRow[] dr = dtFilters.Select("FieldName = '" + command + "'"); bool isCheckCur = false; if (dr.Length > 0) isCheckCur = (bool)dr[0]["IsChecked"]; QField qField = _qItem.Fields[command]; QDictionary qDict = _qItem.GetDictionary(qField); dictFltr.Visible = false; intFltr.Visible = false; dtFltr.Visible = false; strFltr.Visible = false; timeFltr.Visible = false; IFilterControl control = null; IDataReader reader = null; if (qDict != null) { control = dictFltr; string sqlCommand = qDict.GetSQLQuery(Security.CurrentUser.LanguageId); reader = Report.GetQDictionary(sqlCommand); } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: control = intFltr; break; case DbType.DateTime: case DbType.Date: control = dtFltr; break; case DbType.String: control = strFltr; break; case DbType.Time: control = timeFltr; break; } } if (control != null) { ((System.Web.UI.UserControl)control).Visible = true; control.InitControl(reader); control.FilterTitle = qField.FriendlyName; FilterInfo flt = repTemp.Filters[command]; if (flt != null && isCheckCur) { switch (control.FilterType) { case "Dictionary": ArrayList alValue = new ArrayList(); foreach (string sValue in flt.Values) alValue.Add(sValue); dictFltr.Value = alValue.ToArray(typeof(string)); break; case "Int": if (flt.Values.Count > 0) { IntFilterValue ifValue = new IntFilterValue(); ifValue.TypeValue = flt.Values[0]; ifValue.FirstValue = flt.Values[1]; ifValue.SecondValue = flt.Values[2]; intFltr.Value = ifValue; } break; case "DateTime": if (flt.Values.Count > 0) { DateFilterValue dtValues = new DateFilterValue(); dtValues.TypeValue = flt.Values[0]; dtValues.FirstValue = flt.Values[1]; dtValues.SecondValue = flt.Values[2]; dtFltr.Value = dtValues; } break; case "String": if (flt.Values.Count > 0) strFltr.Value = flt.Values[0]; break; case "Time": if (flt.Values.Count > 0) { TimeFilterValue tfValue = new TimeFilterValue(); tfValue.TypeValue = flt.Values[0]; tfValue.FirstValue = flt.Values[1]; tfValue.SecondValue = flt.Values[2]; timeFltr.Value = tfValue; } break; } } else if (flt == null && isCheckCur) { control.Value = null; FilterInfo fi = new FilterInfo(); fi.FieldName = qField.Name; fi.DataType = qField.DataType.ToString(); repTemp.Filters.Add(fi); } else if (flt != null && !isCheckCur) { control.Value = null; int index = repTemp.Filters.IndexOf(flt); repTemp.Filters.RemoveAt(index); } } } #endregion ResultXML.Value = repTemp.CreateXMLTemplate().InnerXml; ViewState["FiltersTable"] = dtFilters; DataView dvFilters = dtFilters.DefaultView; dvFilters.Sort = "FriendlyName"; dlFilterFields.DataSource = dvFilters; dlFilterFields.DataBind(); dlFilterFields.SelectedIndex = -1; foreach (DataListItem liItem in dlFilterFields.Items) { dlFilterFields.SelectedIndex++; LinkButton lb = (LinkButton)liItem.FindControl("lbField"); if (lb != null && lb.CommandName == command) break; } lblCurrentFilter.Text = MakeFilterText(repTemp); pastCommand.Value = command; }
private QObject GetQObject(IBNReportTemplate repTemp) { QObject qItem = null; switch (repTemp.ObjectName) { case "Incident": //Incident qItem = new QIncident(); break; case "Project": //Project qItem = new QProject(); break; case "ToDo": //ToDo`s qItem = new QToDo(); break; case "Event": //Calendar Entries qItem = new QCalendarEntries(); break; case "Document": //Documents qItem = new QDocument(); break; case "Directory": //Users qItem = new QDirectory(); break; case "Task": //Tasks qItem = new QTask(); break; case "Portfolio": //Portfolios qItem = new QPortfolio(); break; default: break; } return qItem; }
public static XmlDocument GetUsersXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QDirectory objD = new QDirectory(); QMaker qMaker = new QMaker(objD); qMaker.Language = _lang; qMaker.TimeOffset = _timeoffset; #region Fields foreach (FieldInfo fi in repTemp.Fields) { qMaker.Fields.Add(objD.Fields[fi.Name]); } #endregion #region GroupFields foreach (FieldInfo fi1 in repTemp.Groups) { qMaker.Groups.Add(objD.Fields[fi1.Name]); } #endregion #region Filters foreach (FilterInfo fti in repTemp.Filters) { QField qField = objD.Fields[fti.FieldName]; QDictionary qDic = objD.GetDictionary(qField); if (qDic != null) { if (fti.Values.Count > 0) { string[] _str = new string[fti.Values.Count]; int i = 0; foreach (string s in fti.Values) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[qDic.FieldId.Name], _str, SimpleFilterType.Equal)); } } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: case DbType.Time: if (fti.Values.Count > 0) { switch (fti.Values[0]) { case "0": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Equal)); break; case "1": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Great)); break; case "2": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Less)); break; case "3": qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), fti.Values[2].ToString())); break; } } break; case DbType.DateTime: case DbType.Date: if (fti.Values.Count > 0) { DateTime _Start = DateTime.MinValue; DateTime _Finish = DateTime.MaxValue; string sVal = fti.Values[0]; SetDates(sVal, out _Start, out _Finish); if (sVal != "9") { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + _Start.ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + _Finish.ToString("yyyy-MM-dd") + "',120)")); } else if (DateTime.Parse(fti.Values[1]) == DateTime.MinValue) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.LessOrEqual)); } else if (DateTime.Parse(fti.Values[2]) >= DateTime.MaxValue.Date) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.GreatOrEqual)); } else { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)")); } } break; case DbType.String: if (fti.Values.Count > 0) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], GetApString(fti.Values[0]), SimpleFilterType.Like)); } break; } } } #endregion string sql = qMaker.Create(); XmlDocument doc = DBReport.GetXMLReport(sql); QMetaLoader.AddHeaderInformation(doc, qMaker); //QMetaLoader.AddSortInformation(doc, repTemp); //QMetaLoader.AddFilterInformation(doc, repTemp); AddTemplateInfo(doc, repTemp); ProcessResourceValues(doc); return doc; }
private static void AddTemplateInfo(XmlDocument doc, IBNReportTemplate repTemp) { XmlDocument xmlTemplateDoc = repTemp.CreateXMLTemplate(); XmlNode xmlRoot = xmlTemplateDoc.SelectSingleNode("IBNReportTemplate"); XmlNode xmlNode_Root = doc.ImportNode(xmlRoot, true); doc.SelectSingleNode("Report").AppendChild(xmlNode_Root); }
private void BindFields() { XmlDocument temp = new XmlDocument(); using (IDataReader reader = Report.GetReportTemplate(TemplateId)) { if (reader.Read()) { // O.R. [2009-06-05]: If report name contains "&" then we got the exception //temp.InnerXml = HttpUtility.HtmlDecode(reader["TemplateXML"].ToString()); temp.InnerXml = reader["TemplateXML"].ToString(); } } IBNReportTemplate repTemplate = new IBNReportTemplate(temp); QObject qItem = GetQObject(repTemplate); lbFields.Items.Clear(); foreach (FieldInfo fi in repTemplate.Fields) { QField _Field = qItem.Fields[fi.Name]; if ((_Field.UsingType & QFieldUsingType.Sort) == QFieldUsingType.Sort) lbFields.Items.Add(new ListItem(_Field.FriendlyName, _Field.Name)); } DataTable dt = (DataTable)ViewState["SortFields"]; foreach (SortInfo si in repTemplate.Sorting) { string temp_s = si.FieldName; DataRow[] dr = dt.Select("Field = '" + temp_s + "'"); if (dr.Length != 0) { ListItem lItm = lbFields.Items.FindByValue(temp_s); if (lItm != null) lbFields.Items.Remove(lItm); } } }
private void BindGenerateFilters(IBNReportTemplate repTemplate, QObject qItem) { tblName.Visible = false; foreach (FilterInfo fi in repTemplate.Filters) { HtmlTableRow row = new HtmlTableRow(); HtmlTableCell cellValue = new HtmlTableCell(); cellValue.Attributes.Add("width", "100%"); QField qField = qItem.Fields[fi.FieldName]; if (qField == null) continue; QDictionary qDict = qItem.GetDictionary(qField); System.Web.UI.UserControl control = null; IDataReader reader = null; if (qDict != null) { control = (System.Web.UI.UserControl)Page.LoadControl("~/Reports/Modules/FilterControls/DictionaryFilter.ascx"); string sqlCommand = qDict.GetSQLQuery(Security.CurrentUser.LanguageId); reader = Report.GetQDictionary(sqlCommand); ((Mediachase.UI.Web.Reports.Modules.DictionaryFilter)control).tdTitle.Attributes.Add("width", "150px"); } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: control = (System.Web.UI.UserControl)Page.LoadControl("~/Reports/Modules/FilterControls/IntFilter.ascx"); ((Mediachase.UI.Web.Reports.Modules.IntFilter)control).tdTitle.Attributes.Add("width", "150px"); break; case DbType.DateTime: case DbType.Date: control = (System.Web.UI.UserControl)Page.LoadControl("~/Reports/Modules/FilterControls/DateFilter.ascx"); ((Mediachase.UI.Web.Reports.Modules.DateFilter)control).tdTitle.Attributes.Add("width", "150px"); break; case DbType.String: control = (System.Web.UI.UserControl)Page.LoadControl("~/Reports/Modules/FilterControls/StringFilter.ascx"); ((Mediachase.UI.Web.Reports.Modules.StringFilter)control).tdTitle.Attributes.Add("width", "150px"); break; case DbType.Time: control = (System.Web.UI.UserControl)Page.LoadControl("~/Reports/Modules/FilterControls/TimeFilter.ascx"); ((Mediachase.UI.Web.Reports.Modules.TimeFilter)control).tdTitle.Attributes.Add("width", "150px"); break; } } if (control != null) { cellValue.Controls.Add(control); } row.Cells.Add(cellValue); tblFiltersValues.Rows.Add(row); if (control != null) { ((IFilterControl)control).InitControl(reader); ((IFilterControl)control).FilterField = qField.Name; ((IFilterControl)control).FilterTitle = qField.FriendlyName; if (fi.Values != null) { switch (((IFilterControl)control).FilterType) { case "Dictionary": ArrayList alValue = new ArrayList(); foreach (string _s in fi.Values) alValue.Add(_s); ((IFilterControl)control).Value = alValue.ToArray(typeof(string)); break; case "Int": if (fi.Values.Count > 0) { IntFilterValue ifValue = new IntFilterValue(); ifValue.TypeValue = fi.Values[0]; ifValue.FirstValue = fi.Values[1]; ifValue.SecondValue = fi.Values[2]; ((IFilterControl)control).Value = ifValue; } break; case "DateTime": if (fi.Values.Count > 0) { DateFilterValue dtValues = new DateFilterValue(); dtValues.TypeValue = fi.Values[0]; dtValues.FirstValue = fi.Values[1]; dtValues.SecondValue = fi.Values[2]; ((IFilterControl)control).Value = dtValues; } break; case "String": if (fi.Values.Count > 0) ((IFilterControl)control).Value = fi.Values[0]; break; case "Time": if (fi.Values.Count > 0) { TimeFilterValue tfValue = new TimeFilterValue(); tfValue.TypeValue = fi.Values[0]; tfValue.FirstValue = fi.Values[1]; tfValue.SecondValue = fi.Values[2]; ((IFilterControl)control).Value = tfValue; } break; } } else if (fi.Values == null) ((IFilterControl)control).Value = null; } } if (repTemplate.Filters.Count == 0) { XmlDocument doc = GetReportDoc(repTemplate); int iReportId = Report.CreateReportByTemplate(TemplateId, doc.InnerXml); Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "OpenWindow('../Reports/XMLReportOutput.aspx?ReportId=" + iReportId.ToString() + "',screen.width,screen.height,true);window.location.href='../Reports/ReportHistory.aspx?TemplateId=" + TemplateId.ToString() + "';", true); } }
private void BindCurrentTab() { ViewState["SortFields"] = null; iFields.Value = ""; ViewState["FiltersTable"] = null; ResultXML.Value = ""; pastCommand.Value = ""; changedCheck.Value = ""; XmlDocument temp = new XmlDocument(); using (IDataReader reader = Report.GetReportTemplate(TemplateId)) { if (reader.Read()) { // O.R. [2009-06-05]: If report name contains "&" then we got the exception //temp.InnerXml = HttpUtility.HtmlDecode(reader["TemplateXML"].ToString()); temp.InnerXml = reader["TemplateXML"].ToString(); repName.Text = reader["Name"].ToString(); } } IBNReportTemplate repTemplate = new IBNReportTemplate(temp); QObject qItem = GetQObject(repTemplate); switch (Tab) { case "Fields": lbAvailableFields.Items.Clear(); foreach (QField _Field in qItem.Fields) { if ((_Field.UsingType & QFieldUsingType.Field) == QFieldUsingType.Field) lbAvailableFields.Items.Add(new ListItem(_Field.FriendlyName, _Field.Name)); } lbSelectedFields.Items.Clear(); foreach (FieldInfo fi in repTemplate.Fields) { ListItem lItm = lbAvailableFields.Items.FindByValue(fi.Name); if (lItm != null) { lbAvailableFields.Items.Remove(lItm); lbSelectedFields.Items.Add(lItm); } } break; case "Groups": ddGroup1.Items.Clear(); ddGroup2.Items.Clear(); ddGroup1.Items.Add(new ListItem(" " + LocRM.GetString("tNotSet"), "01")); ddGroup2.Items.Add(new ListItem(" " + LocRM.GetString("tNotSet"), "02")); foreach (QField _Field in qItem.Fields) if ((_Field.UsingType & QFieldUsingType.Grouping) == QFieldUsingType.Grouping) { ddGroup1.Items.Add(new ListItem(_Field.FriendlyName, _Field.Name)); ddGroup2.Items.Add(new ListItem(_Field.FriendlyName, _Field.Name)); } foreach (FieldInfo fi in repTemplate.Fields) { ListItem lItm1 = ddGroup1.Items.FindByValue(fi.Name); if (lItm1 != null) ddGroup1.Items.Remove(lItm1); ListItem lItm2 = ddGroup2.Items.FindByValue(fi.Name); if (lItm2 != null) ddGroup2.Items.Remove(lItm2); } foreach (FieldInfo gi in repTemplate.Groups) { if (ddGroup1.SelectedItem.Value == "01") { ListItem lItm1 = ddGroup1.Items.FindByValue(gi.Name); if (lItm1 != null) { ddGroup1.SelectedItem.Selected = false; lItm1.Selected = true; } continue; } else { ListItem lItm2 = ddGroup2.Items.FindByValue(gi.Name); if (lItm2 != null) { ddGroup2.SelectedItem.Selected = false; lItm2.Selected = true; } } } break; case "Filters": if (!generate) { DataTable dtFilters = new DataTable(); dtFilters.Columns.Add(new DataColumn("IsChecked", typeof(bool))); dtFilters.Columns.Add(new DataColumn("FieldName", typeof(string))); dtFilters.Columns.Add(new DataColumn("FriendlyName", typeof(string))); DataRow dr; foreach (QField fd in qItem.Fields) if ((fd.UsingType & QFieldUsingType.Filter) == QFieldUsingType.Filter) { dr = dtFilters.NewRow(); if (repTemplate.Filters[fd.Name] != null) dr["IsChecked"] = true; else dr["IsChecked"] = false; dr["FieldName"] = fd.Name; dr["FriendlyName"] = fd.FriendlyName; dtFilters.Rows.Add(dr); } ViewState["FiltersTable"] = dtFilters; ResultXML.Value = repTemplate.CreateXMLTemplate().InnerXml; dlFilterFields.DataSource = dtFilters.DefaultView; dlFilterFields.DataBind(); dlFilterFields.SelectedIndex = 0; LinkButton lb = (LinkButton)dlFilterFields.Items[0].FindControl("lbField"); if (lb != null) BindFilter(lb.CommandName); } else BindGenerateFilters(repTemplate, qItem); break; case "Sorts": DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Field", typeof(string))); dt.Columns.Add(new DataColumn("FieldText", typeof(string))); dt.Columns.Add(new DataColumn("SortDirect", typeof(int))); //1 - asc, 0 - desc foreach (SortInfo si in repTemplate.Sorting) { DataRow s_dr = dt.NewRow(); s_dr["Field"] = si.FieldName; s_dr["FieldText"] = qItem.Fields[si.FieldName].FriendlyName; if (si.SortDirection == Mediachase.IBN.Business.Reports.SortDirection.ASC) s_dr["SortDirect"] = "1"; else s_dr["SortDirect"] = "0"; dt.Rows.Add(s_dr); } ViewState["SortFields"] = dt; BindFields(); BindDGFields(); break; default: break; } }
protected void Page_Load(object sender, System.EventArgs e) { UtilHelper.RegisterScript(Page, "~/Scripts/List2List.js"); tblFields.Visible = false; tblGroupFields.Visible = false; tblFilters.Visible = false; tblFiltersGenerate.Visible = false; tblSorts.Visible = false; if (Request["Tab"] != null) tab = Request["Tab"].ToString(); BindTabs(); BindToolbars(); if (!Page.IsPostBack) { ViewState["CurrentTab"] = pc["Temp_CurrentTab"]; ApplyLocalization(); BindCurrentTab(); } else if (generate) { XmlDocument temp = new XmlDocument(); using (IDataReader reader = Report.GetReportTemplate(TemplateId)) { if (reader.Read()) { // O.R. [2009-06-05]: If report name contains "&" then we got the exception //temp.InnerXml = HttpUtility.HtmlDecode(reader["TemplateXML"].ToString()); temp.InnerXml = reader["TemplateXML"].ToString(); } } IBNReportTemplate repTemplate = new IBNReportTemplate(temp); QObject qItem = GetQObject(repTemplate); BindGenerateFilters(repTemplate, qItem); } }
private XmlDocument GetReportDoc(IBNReportTemplate repTemplate) { XmlDocument doc = new XmlDocument(); switch (repTemplate.ObjectName) { case "Incident": doc = Report.GetIncidentXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Project": doc = Report.GetProjectXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "ToDo": doc = Report.GetToDoXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Event": doc = Report.GetCalendarEntryXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Document": doc = Report.GetDocumentXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Directory": doc = Report.GetUsersXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Task": doc = Report.GetTaskXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "Portfolio": doc = Report.GetPortfolioXMLReport(repTemplate, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; default: break; } return doc; }
private void ShowStep(int step) { for (int i = 0; i <= _stepCount; i++) ((Panel)_steps[i]).Visible = false; ((Panel)_steps[step - 1]).Visible = true; if (step == 1 && Elem.Value == "NULL") { pastStep.Value = "1"; ResultXML.Value = ""; ViewState["FiltersTable"] = null; ViewState["SortFields"] = null; if (_pc["Cust_Rep_valMode"].ToString() == "Both") { ddTemplates.DataSource = Report.GetReportTemplate(); ddTemplates.DataValueField = "TemplateId"; ddTemplates.DataTextField = "Name"; ddTemplates.DataBind(); if (ddTemplates.Items.Count == 0) fsChoice.Visible = false; } } #region Step 2 - Fields if ((step == 2 && Elem.Value == "NULL") || (step == 1 && Elem.Value != "NULL")) { if (valMode.Value == "Both1" && ddTemplates.SelectedItem != null) { int reportTemplateId = int.Parse(ddTemplates.SelectedValue); Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language='javascript'>" + "try {window.opener.top.frames['right'].location.href='../Reports/TemplateEdit.aspx?Generate=1&TemplateId=" + reportTemplateId.ToString() + "';}" + "catch (e){}window.close();</script>"); } lbAvailableFields.Items.Clear(); BindItemCollections(lbAvailableFields.Items, rbReportItem.SelectedItem.Value, 0); lbSelectedFields.Items.Clear(); string sFields = iFields.Value; ArrayList alFields = new ArrayList(); while (sFields.Length > 0) { alFields.Add(sFields.Substring(0, sFields.IndexOf(","))); sFields = sFields.Remove(0, sFields.IndexOf(",") + 1); } foreach (string i in alFields) { ListItem lItm = lbAvailableFields.Items.FindByValue(i); if (lItm != null) { lbAvailableFields.Items.Remove(lItm); lbSelectedFields.Items.Add(lItm); } } pastStep.Value = "2"; } #endregion #region Step 3 - Grouping if ((step == 3 && Elem.Value == "NULL") || (step == 2 && Elem.Value != "NULL")) { if (pastStep.Value == "2") { ddGroup1.Items.Clear(); ddGroup2.Items.Clear(); ddGroup1.Items.Add(new ListItem(" " + LocRM.GetString("tNotSet"), "01")); ddGroup2.Items.Add(new ListItem(" " + LocRM.GetString("tNotSet"), "02")); BindItemCollections(ddGroup1.Items, rbReportItem.SelectedItem.Value, 1); BindItemCollections(ddGroup2.Items, rbReportItem.SelectedItem.Value, 1); string sFields = iFields.Value; ArrayList alFields = new ArrayList(); while (sFields.Length > 0) { alFields.Add(sFields.Substring(0, sFields.IndexOf(","))); sFields = sFields.Remove(0, sFields.IndexOf(",") + 1); } foreach (string i in alFields) { ListItem lItm1 = ddGroup1.Items.FindByValue(i); if (lItm1 != null) ddGroup1.Items.Remove(lItm1); ListItem lItm2 = ddGroup2.Items.FindByValue(i); if (lItm2 != null) ddGroup2.Items.Remove(lItm2); } string sGroups = iGroups.Value; ArrayList alGroups = new ArrayList(); while (sGroups.Length > 0) { alGroups.Add(sGroups.Substring(0, sGroups.IndexOf(","))); sGroups = sGroups.Remove(0, sGroups.IndexOf(",") + 1); } foreach (string i in alGroups) { if (ddGroup1.SelectedItem.Value == "01") { ListItem lItm1 = ddGroup1.Items.FindByValue(i); if (lItm1 != null) { ddGroup1.SelectedItem.Selected = false; lItm1.Selected = true; } continue; } else { ListItem lItm2 = ddGroup2.Items.FindByValue(i); if (lItm2 != null) { ddGroup2.SelectedItem.Selected = false; lItm2.Selected = true; } } } } pastStep.Value = "3"; pastCommand.Value = ""; } #endregion #region Step 4 - Filtering if ((step == 4 && Elem.Value == "NULL") || (step == 3 && Elem.Value != "NULL")) { iGroups.Value = ""; if (ddGroup1.SelectedItem.Value != "01") iGroups.Value += ddGroup1.SelectedItem.Value + ","; if (ddGroup2.SelectedItem.Value != "02") iGroups.Value += ddGroup2.SelectedItem.Value + ","; DataTable dtFilters = new DataTable(); if (ViewState["FiltersTable"] == null || !(ViewState["FiltersTable"] is DataTable)) { dtFilters.Columns.Add(new DataColumn("IsChecked", typeof(bool))); dtFilters.Columns.Add(new DataColumn("FieldName", typeof(string))); dtFilters.Columns.Add(new DataColumn("FriendlyName", typeof(string))); DataRow dr; if (_qItem != null) { foreach (QField fd in _qItem.Fields) if ((fd.UsingType & QFieldUsingType.Filter) == QFieldUsingType.Filter) { dr = dtFilters.NewRow(); dr["IsChecked"] = false; dr["FieldName"] = fd.Name; dr["FriendlyName"] = fd.FriendlyName; dtFilters.Rows.Add(dr); } ViewState["FiltersTable"] = dtFilters; } } else dtFilters = (DataTable)ViewState["FiltersTable"]; DataView dvFilters = dtFilters.DefaultView; dvFilters.Sort = "FriendlyName"; dlFilterFields.DataSource = dvFilters; dlFilterFields.DataBind(); dlFilterFields.SelectedIndex = 0; LinkButton lb = (LinkButton)dlFilterFields.Items[0].FindControl("lbField"); if (lb != null) BindFilter(lb.CommandName); pastStep.Value = "4"; } #endregion #region Step 5 - SortStep if ((step == 5 && Elem.Value == "NULL") || (step == 4 && Elem.Value != "NULL")) { BindFilter(""); btnAdd.Text = LocRM.GetString("tAdd"); if (ViewState["SortFields"] == null || !(ViewState["SortFields"] is DataTable)) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Field", typeof(string))); dt.Columns.Add(new DataColumn("FieldText", typeof(string))); dt.Columns.Add(new DataColumn("SortDirect", typeof(int))); //1 - asc, 0 - desc ViewState["SortFields"] = dt; } BindFields(); BindDGFields(); pastStep.Value = "5"; } #endregion #region Step 6 - Settings if ((step == 6 && Elem.Value == "NULL") || (step == 5 && Elem.Value != "NULL")) { switch (rbReportItem.SelectedItem.Value) { case "0": //Incident lblReportName.Text = LocRM.GetString("tIncRep"); break; case "1": //Project lblReportName.Text = LocRM.GetString("tPrjRep"); break; case "2": //ToDo`s lblReportName.Text = LocRM.GetString("tTdRep"); break; case "3": //Calendar Entries lblReportName.Text = LocRM.GetString("tCalEntrRep"); break; case "4": //Documents lblReportName.Text = LocRM.GetString("tAstRep"); break; case "5": //Users lblReportName.Text = LocRM.GetString("tUsrRep"); break; case "6": //Tasks lblReportName.Text = LocRM.GetString("tTkRep"); break; case "7": //Portfolios lblReportName.Text = LocRM.GetString("tPrjGrpRep"); break; default: break; } lblReportName.Text += " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm"); if (iGroups.Value.Length > 1) trRadioGroup.Visible = true; else trRadioGroup.Visible = false; if (rblGrouptype.SelectedIndex == 1) imgType.ImageUrl = "~/layouts/images/pp1.gif"; else imgType.ImageUrl = "~/layouts/images/pp2.gif"; if (_pc["Cust_Rep_valMode"].ToString() != "Temp") { trTemplateSetsRow.Visible = false; } IBNReportTemplate repTemp = null; if (ResultXML.Value != "") { repTemp = IBNReportTemplate.Load(ResultXML.Value); } if (repTemp == null) repTemp = new IBNReportTemplate(); #region Report Fields string sFields = iFields.Value; repTemp.Fields.Clear(); while (sFields.Length > 0) { string sF = sFields.Substring(0, sFields.IndexOf(",")); sFields = sFields.Remove(0, sFields.IndexOf(",") + 1); repTemp.Fields.Add(new FieldInfo(sF, _qItem.Fields[sF].DataType.ToString())); } #endregion #region Report Group Fields string sGroups = iGroups.Value; repTemp.Groups.Clear(); while (sGroups.Length > 0) { string sG = sGroups.Substring(0, sGroups.IndexOf(",")); sGroups = sGroups.Remove(0, sGroups.IndexOf(",") + 1); repTemp.Groups.Add(new FieldInfo(sG, _qItem.Fields[sG].DataType.ToString())); } #endregion #region SortFields DataTable dt = (DataTable)ViewState["SortFields"]; repTemp.Sorting.Clear(); if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { SortInfo si = new SortInfo(); string sS = dr["Field"].ToString(); si.FieldName = sS; si.DataType = _qItem.Fields[sS].DataType.ToString(); if (dr["SortDirect"].ToString() == "0") si.SortDirection = Mediachase.IBN.Business.Reports.SortDirection.DESC; else si.SortDirection = Mediachase.IBN.Business.Reports.SortDirection.ASC; repTemp.Sorting.Add(si); } } #endregion ResultXML.Value = repTemp.CreateXMLTemplate().InnerXml; pastStep.Value = "6"; } #endregion #region Step 7 - Preview if ((step == 7 && Elem.Value == "NULL") || (step == 6 && Elem.Value != "NULL")) { IBNReportTemplate repTemp = null; if (ResultXML.Value != "") { repTemp = IBNReportTemplate.Load(ResultXML.Value); } if (repTemp == null) repTemp = new IBNReportTemplate(); string sFilter = MakeFilterText(repTemp); #region Report Fields lblFields.Text = ""; foreach (FieldInfo fi in repTemp.Fields) lblFields.Text += _qItem.Fields[fi.Name].FriendlyName + "<br>"; #endregion #region Report Group Fields lblGroupFields.Text = ""; foreach (FieldInfo fi in repTemp.Groups) lblGroupFields.Text += _qItem.Fields[fi.Name].FriendlyName + "<br>"; #endregion #region SortFields DataTable dt = (DataTable)ViewState["SortFields"]; lblSortFields.Text = ""; if (dt.Rows.Count > 0) foreach (DataRow dr in dt.Rows) lblSortFields.Text += dr["FieldText"].ToString() + " - " + GetSortDirect((int)dr["SortDirect"]) + "<br>"; #endregion txtReportTitle.Text = lblReportName.Text; //ResultXML.Value = repTemp.CreateXMLTemplate().InnerXml; if (!cbShowEmptyItems.Checked) sFilter += " " + LocRM.GetString("tDontShowEmptyGroupItem"); lblFilter.Text = sFilter; pastStep.Value = "7"; } #endregion #region Step 8 - Save & Redirect if ((step == 8 && Elem.Value == "NULL") || (step == 7 && Elem.Value != "NULL")) { IBNReportTemplate reportTemp = null; if (ResultXML.Value != "") { reportTemp = IBNReportTemplate.Load(ResultXML.Value); } if (reportTemp == null) reportTemp = new IBNReportTemplate(); reportTemp.Version = IbnConst.VersionMajorDotMinor; reportTemp.Author = Security.CurrentUser.DisplayName; reportTemp.Created = UserDateTime.UserNow; reportTemp.Name = lblReportName.Text; if (reportTemp.Groups.Count > 0 && !cbShowEmptyItems.Checked) reportTemp.ShowEmptyGroup = false; else reportTemp.ShowEmptyGroup = true; if (rblGrouptype.SelectedIndex == 0) reportTemp.ViewType = "0"; //Old else reportTemp.ViewType = "1"; //New XmlDocument doc = new XmlDocument(); switch (rbReportItem.SelectedValue) { case "0": //Incident reportTemp.ObjectName = "Incident"; doc = Report.GetIncidentXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "1": //Project reportTemp.ObjectName = "Project"; doc = Report.GetProjectXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "2": //ToDo`s reportTemp.ObjectName = "ToDo"; doc = Report.GetToDoXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "3": //Calendar Entries reportTemp.ObjectName = "Event"; doc = Report.GetCalendarEntryXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "4": //Documents reportTemp.ObjectName = "Document"; doc = Report.GetDocumentXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "5": //Users reportTemp.ObjectName = "Directory"; doc = Report.GetUsersXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "6": // Tasks reportTemp.ObjectName = "Task"; doc = Report.GetTaskXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "7": // Portfolios reportTemp.ObjectName = "Portfolio"; doc = Report.GetPortfolioXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; } bool isTemporary = false; int iReportTemplateId = Report.CreateReportTemplate(txtReportTitle.Text, reportTemp.CreateXMLTemplate().InnerXml, !cbOnlyForMe.Checked, isTemporary); pastStep.Value = "7"; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language='javascript'>" + string.Format("try {{window.opener.top.frames['right'].location.href='{0}';}}", this.ResolveUrl("~/Apps/ReportManagement/Pages/UserReport.aspx")) + "catch (e){}window.close();</script>"); } #endregion }
public static XmlDocument GetDocumentXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QDocument objD = new QDocument(); QMaker qMaker = new QMaker(objD); qMaker.Language = _lang; qMaker.TimeOffset = _timeoffset; #region Fields foreach (FieldInfo fi in repTemp.Fields) { qMaker.Fields.Add(objD.Fields[fi.Name]); } #endregion #region GroupFields foreach (FieldInfo fi1 in repTemp.Groups) { qMaker.Groups.Add(objD.Fields[fi1.Name]); } #endregion #region Filters if (!Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager) && !Security.IsUserInGroup(InternalSecureGroups.ExecutiveManager)) { qMaker.PrevSqlQuery.Add(String.Format("DECLARE @DocumentIdTable TABLE(Id INT) " + "INSERT INTO @DocumentIdTable " + "SELECT DISTINCT TD.DocumentId As Id FROM DOCUMENTS AS TD " + "WHERE TD.DocumentId IN (SELECT DocumentId FROM DOCUMENT_SECURITY_ALL WHERE PrincipalId = {0} AND (IsManager = 1 OR IsResource = 1)) " + " OR (TD.ProjectId IN (SELECT ProjectId FROM PROJECT_SECURITY_ALL WHERE PrincipalId = {0} AND (IsTeamMember = 1 OR IsSponsor = 1 OR IsStakeHolder = 1 OR IsManager = 1 OR IsExecutiveManager = 1)))", Security.CurrentUser.UserID)); qMaker.Filters.Add(new SimpleFilterCondition(qMaker.OwnerObject.Fields["DocId"], "(SELECT Id FROM @DocumentIdTable)", SimpleFilterType.In)); } foreach (FilterInfo fti in repTemp.Filters) { QField qField = objD.Fields[fti.FieldName]; QDictionary qDic = objD.GetDictionary(qField); if (qDic != null) { if (fti.Values.Count > 0) { string[] _str = new string[fti.Values.Count]; int i = 0; foreach (string s in fti.Values) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[qDic.FieldId.Name], _str, SimpleFilterType.Equal)); } } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: case DbType.Time: if (fti.Values.Count > 0) { switch (fti.Values[0]) { case "0": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Equal)); break; case "1": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Great)); break; case "2": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Less)); break; case "3": qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), fti.Values[2].ToString())); break; } } break; case DbType.DateTime: case DbType.Date: if (fti.Values.Count > 0) { DateTime _Start = DateTime.MinValue; DateTime _Finish = DateTime.MaxValue; string sVal = fti.Values[0]; SetDates(sVal, out _Start, out _Finish); if (sVal != "9") { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + _Start.ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + _Finish.ToString("yyyy-MM-dd") + "',120)")); } else if (DateTime.Parse(fti.Values[1]) == DateTime.MinValue) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.LessOrEqual)); } else if (DateTime.Parse(fti.Values[2]) >= DateTime.MaxValue.Date) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.GreatOrEqual)); } else { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)")); } } break; case DbType.String: if (fti.Values.Count > 0) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], GetApString(fti.Values[0]), SimpleFilterType.Like)); } break; } } } #endregion string sql = qMaker.Create(); XmlDocument doc = DBReport.GetXMLReport(sql); QMetaLoader.AddHeaderInformation(doc, qMaker); //QMetaLoader.AddSortInformation(doc, repTemp); //QMetaLoader.AddFilterInformation(doc, repTemp); AddTemplateInfo(doc, repTemp); ProcessResourceValues(doc); return doc; }
protected string MakeFilterText(IBNReportTemplate repTemp) { string retval = ""; foreach (FilterInfo fi in repTemp.Filters) { QField qTemp = _qItem.Fields[fi.FieldName]; QDictionary qDTemp = _qItem.GetDictionary(qTemp); if (qDTemp != null) { retval += qTemp.FriendlyName + " = "; string sqlCommand = qDTemp.GetSQLQuery(Security.CurrentUser.LanguageId); using (IDataReader reader = Report.GetQDictionary(sqlCommand)) { ArrayList alDicVal = new ArrayList(); foreach (string sValue in fi.Values) { alDicVal.Add(sValue); } while (reader.Read()) { if (alDicVal.Contains(reader["Id"].ToString())) { retval += "<font color='red'>" + CommonHelper.GetResFileString(reader["Value"].ToString()) + "</font>, "; } } } retval = retval.Remove(retval.Length - 7, 7) + "<br>"; } else { switch (qTemp.DataType) { case DbType.Decimal: case DbType.Int32: retval += qTemp.FriendlyName; if (fi.Values.Count > 0) { switch (fi.Values[0]) { case "0": retval += " =<font color='red'> " + fi.Values[1] + "</font><br>"; break; case "1": retval += " ><font color='red'> " + fi.Values[1] + "</font><br>"; break; case "2": retval += " <<font color='red'> " + fi.Values[1] + "</font><br>"; break; case "3": retval += " <font color='red'>" + LocRM.GetString("tBetween") + " " + fi.Values[1] + " - " + fi.Values[2] + "</font><br>"; break; } } else retval += "<br>"; break; case DbType.DateTime: case DbType.Date: retval += qTemp.FriendlyName; if (fi.Values.Count > 0) { switch (fi.Values[0]) { case "1": retval += " = <font color='red'>" + LocRM.GetString("tToday") + "</font><br>"; break; case "2": retval += " = <font color='red'>" + LocRM.GetString("tYesterday") + "</font><br>"; break; case "3": retval += " = <font color='red'>" + LocRM.GetString("tThisWeek") + "</font><br>"; break; case "4": retval += " = <font color='red'>" + LocRM.GetString("tLastWeek") + "</font><br>"; break; case "5": retval += " = <font color='red'>" + LocRM.GetString("tThisMonth") + "</font><br>"; break; case "6": retval += " = <font color='red'>" + LocRM.GetString("tLastMonth") + "</font><br>"; break; case "7": retval += " = <font color='red'>" + LocRM.GetString("tThisYear") + "</font><br>"; break; case "8": retval += " = <font color='red'>" + LocRM.GetString("tLastYear") + "</font><br>"; break; case "9": if (DateTime.Parse(fi.Values[1]) == DateTime.MinValue) { retval += " <font color='red'>" + LocRM.GetString("tLess") + " " + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>"; } else if (DateTime.Parse(fi.Values[2]) >= DateTime.MaxValue.Date) { retval += " <font color='red'>" + LocRM.GetString("tGreater") + " " + DateTime.Parse(fi.Values[1]).ToShortDateString() + "</font><br>"; } else retval += " <font color='red'>" + LocRM.GetString("tBetween") + " " + DateTime.Parse(fi.Values[1]).ToShortDateString() + " - " + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>"; break; } } else retval += "<br>"; break; case DbType.String: if (fi.Values.Count > 0) { retval += qTemp.FriendlyName + " = <font color='red'>" + fi.Values[0] + "</font><br>"; } else retval += qTemp.FriendlyName + "<br>"; break; case DbType.Time: retval += qTemp.FriendlyName; if (fi.Values.Count > 0) { switch (fi.Values[0]) { case "0": retval += " =<font color='red'> " + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>"; break; case "1": retval += " ><font color='red'> " + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>"; break; case "2": retval += " <<font color='red'> " + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>"; break; case "3": retval += " <font color='red'>" + LocRM.GetString("tBetween") + " " + CommonHelper.GetHours(int.Parse(fi.Values[1])) + " - " + CommonHelper.GetHours(int.Parse(fi.Values[2])) + "</font><br>"; break; } } else retval += "<br>"; break; } } } return retval; }
public static XmlDocument GetIncidentXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QIncident objI = new QIncident(); QMaker qMaker = new QMaker(objI); qMaker.Language = _lang; qMaker.TimeOffset = _timeoffset; #region Fields foreach (FieldInfo fi in repTemp.Fields) { qMaker.Fields.Add(objI.Fields[fi.Name]); } #endregion #region GroupFields foreach (FieldInfo fi1 in repTemp.Groups) { qMaker.Groups.Add(objI.Fields[fi1.Name]); } #endregion #region Filters bool PrjFilterExist = false; foreach (FilterInfo fti in repTemp.Filters) { if (fti.FieldName == "IncProjectId") PrjFilterExist = true; QField qField = objI.Fields[fti.FieldName]; QDictionary qDic = objI.GetDictionary(qField); if (qDic != null) { if (fti.Values.Count > 0) { string[] _str = new string[fti.Values.Count]; int i = 0; foreach (string s in fti.Values) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[qDic.FieldId.Name], _str, SimpleFilterType.Equal)); } } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: case DbType.Time: if (fti.Values.Count > 0) { switch (fti.Values[0]) { case "0": qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Equal)); break; case "1": qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Great)); break; case "2": qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Less)); break; case "3": qMaker.Filters.Add(new IntervalFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), fti.Values[2].ToString())); break; } } break; case DbType.DateTime: case DbType.Date: if (fti.Values.Count > 0) { DateTime _Start = DateTime.MinValue; DateTime _Finish = DateTime.MaxValue; string sVal = fti.Values[0]; SetDates(sVal, out _Start, out _Finish); if (sVal != "9") { qMaker.Filters.Add(new IntervalFilterCondition(objI.Fields[fti.FieldName], "CONVERT(datetime,'" + _Start.ToString("yyyy-MM-dd") + "', 120)", "CONVERT(datetime,'" + _Finish.ToString("yyyy-MM-dd") + "', 120)")); } else if (DateTime.Parse(fti.Values[1]) == DateTime.MinValue) { qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "', 120)", SimpleFilterType.LessOrEqual)); } else if (DateTime.Parse(fti.Values[2]) >= DateTime.MaxValue.Date) { qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "', 120)", SimpleFilterType.GreatOrEqual)); } else { qMaker.Filters.Add(new IntervalFilterCondition(objI.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "', 120)", "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "', 120)")); } } break; case DbType.String: if (fti.Values.Count > 0) { qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], GetApString(fti.Values[0]), SimpleFilterType.Like)); } break; } } } if (!PrjFilterExist && !(Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager) || Security.IsUserInGroup(InternalSecureGroups.ExecutiveManager))) { ArrayList alPrj = new ArrayList(); using (IDataReader reader = Project.GetListProjects()) { while (reader.Read()) alPrj.Add(((int)reader["ProjectId"]).ToString()); } alPrj.Add("NULL"); string[] _str = new string[alPrj.Count]; int i = 0; foreach (string s in alPrj) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields["IncProjectId"], _str, SimpleFilterType.Equal)); } #endregion string sql = qMaker.Create(); XmlDocument doc = DBReport.GetXMLReport(sql); QMetaLoader.AddHeaderInformation(doc, qMaker); //QMetaLoader.AddSortInformation(doc, repTemp); //QMetaLoader.AddFilterInformation(doc, repTemp); AddTemplateInfo(doc, repTemp); ProcessResourceValues(doc); return doc; }
private void btnPreview_Click(object sender, EventArgs e) { IBNReportTemplate reportTemp = null; #region Create ReportTemp if (ResultXML.Value != "") { reportTemp = IBNReportTemplate.Load(ResultXML.Value); } if (reportTemp == null) reportTemp = new IBNReportTemplate(); reportTemp.Version = IbnConst.VersionMajorDotMinor; reportTemp.Author = Security.CurrentUser.DisplayName; reportTemp.Created = UserDateTime.UserNow; reportTemp.Name = lblReportName.Text; if (reportTemp.Groups.Count > 0 && !cbShowEmptyItems.Checked) reportTemp.ShowEmptyGroup = false; else reportTemp.ShowEmptyGroup = true; if (rblGrouptype.SelectedIndex == 0) reportTemp.ViewType = "0"; //Old else reportTemp.ViewType = "1"; //New XmlDocument doc = new XmlDocument(); switch (rbReportItem.SelectedValue) { case "0": //Incident reportTemp.ObjectName = "Incident"; doc = Report.GetIncidentXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "1": //Project reportTemp.ObjectName = "Project"; doc = Report.GetProjectXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "2": //ToDo`s reportTemp.ObjectName = "ToDo"; doc = Report.GetToDoXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "3": //Calendar Entries reportTemp.ObjectName = "Event"; doc = Report.GetCalendarEntryXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "4": //Documents reportTemp.ObjectName = "Document"; doc = Report.GetDocumentXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "5": //Users reportTemp.ObjectName = "Directory"; doc = Report.GetUsersXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "6": // Tasks reportTemp.ObjectName = "Task"; doc = Report.GetTaskXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; case "7": // Portfolios reportTemp.ObjectName = "Portfolio"; doc = Report.GetPortfolioXMLReport(reportTemp, Security.CurrentUser.LanguageId.ToString(), Security.CurrentUser.TimeZoneId.ToString()); break; } #endregion int iReportTemplateId = Report.CreateReportTemplate(lblReportName.Text, reportTemp.CreateXMLTemplate().InnerXml, !cbOnlyForMe.Checked, true); int iReportId = Report.CreateReportByTemplate(iReportTemplateId, doc.InnerXml); Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language='javascript'>OpenWindow('../Reports/XMLReportOutput.aspx?Mode=true&Refresh=-1&ReportId=" + iReportId.ToString() + "',screen.width,screen.height,true);</script>"); }
protected void btnSave_ServerClick(object sender, System.EventArgs e) { XmlDocument temp = new XmlDocument(); bool isGlobal = true; using (IDataReader reader = Report.GetReportTemplate(TemplateId)) { if (reader.Read()) { // O.R. [2009-06-05]: If report name contains "&" then we got the exception //temp.InnerXml = HttpUtility.HtmlDecode(reader["TemplateXML"].ToString()); temp.InnerXml = reader["TemplateXML"].ToString(); isGlobal = (bool)reader["IsGlobal"]; } } IBNReportTemplate repTemplate = new IBNReportTemplate(temp); QObject qItem = GetQObject(repTemplate); switch (Tab) { case "Fields": string sFields = iFields.Value; ArrayList alFields = new ArrayList(); while (sFields.Length > 0) { alFields.Add(sFields.Substring(0, sFields.IndexOf(","))); sFields = sFields.Remove(0, sFields.IndexOf(",") + 1); } repTemplate.Fields.Clear(); foreach (string s in alFields) { repTemplate.Fields.Add(new FieldInfo(s, qItem.Fields[s].DataType.ToString())); if (repTemplate.Groups[s] != null) repTemplate.Groups.RemoveAt(repTemplate.Groups.IndexOf(repTemplate.Groups[s])); } ArrayList alSort = new ArrayList(); foreach (SortInfo si in repTemplate.Sorting) alSort.Add(si.FieldName); foreach (string s in alSort) { if (repTemplate.Fields[s] == null) repTemplate.Sorting.RemoveAt(repTemplate.Sorting.IndexOf(repTemplate.Sorting[s])); } break; case "Groups": repTemplate.Groups.Clear(); if (ddGroup1.SelectedItem.Value != "01") repTemplate.Groups.Add(new FieldInfo(ddGroup1.SelectedItem.Value, qItem.Fields[ddGroup1.SelectedItem.Value].DataType.ToString())); if (ddGroup2.SelectedItem.Value != "02") repTemplate.Groups.Add(new FieldInfo(ddGroup2.SelectedItem.Value, qItem.Fields[ddGroup2.SelectedItem.Value].DataType.ToString())); break; case "Filters": if (!generate) { BindFilter(""); IBNReportTemplate repTemp = IBNReportTemplate.Load(ResultXML.Value); if (repTemp != null) { repTemplate.Filters.Clear(); foreach (FilterInfo fi in repTemp.Filters) repTemplate.Filters.Add(fi); } } else { foreach (HtmlTableRow row in tblFiltersValues.Rows) { HtmlTableCell cell = row.Cells[0]; IFilterControl ctrl = (IFilterControl)cell.Controls[0]; string FieldName = ctrl.FilterField; FilterInfo flt = new FilterInfo(); flt.FieldName = FieldName; flt.DataType = repTemplate.Filters[FieldName].DataType; repTemplate.Filters.RemoveAt(repTemplate.Filters.IndexOf(repTemplate.Filters[FieldName])); object curValue = null; switch (ctrl.FilterType) { case "Dictionary": curValue = ctrl.Value; if (curValue != null) { foreach (string _s in (string[])curValue) flt.Values.Add(_s); } break; case "DateTime": curValue = ctrl.Value; if (curValue != null) { flt.Values.Add(((DateFilterValue)curValue).TypeValue); flt.Values.Add(((DateFilterValue)curValue).FirstValue); flt.Values.Add(((DateFilterValue)curValue).SecondValue); } break; case "Int": curValue = ctrl.Value; if (curValue != null) { flt.Values.Add(((IntFilterValue)curValue).TypeValue); flt.Values.Add(((IntFilterValue)curValue).FirstValue); flt.Values.Add(((IntFilterValue)curValue).SecondValue); } break; case "String": curValue = ctrl.Value; if (curValue != null) flt.Values.Add(curValue.ToString()); break; case "Time": curValue = ctrl.Value; if (curValue != null) { flt.Values.Add(((TimeFilterValue)curValue).TypeValue); flt.Values.Add(((TimeFilterValue)curValue).FirstValue); flt.Values.Add(((TimeFilterValue)curValue).SecondValue); } break; default: break; } repTemplate.Filters.Add(flt); } } break; case "Sorts": DataTable dt = (DataTable)ViewState["SortFields"]; repTemplate.Sorting.Clear(); if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { SortInfo si = new SortInfo(); string sS = dr["Field"].ToString(); si.FieldName = sS; si.DataType = qItem.Fields[sS].DataType.ToString(); if (dr["SortDirect"].ToString() == "0") si.SortDirection = Mediachase.IBN.Business.Reports.SortDirection.DESC; else si.SortDirection = Mediachase.IBN.Business.Reports.SortDirection.ASC; repTemplate.Sorting.Add(si); } } break; default: break; } if (!generate) { Report.UpdateReportTemplate(TemplateId, repName.Text, repTemplate.CreateXMLTemplate().InnerXml, isGlobal, false); BindCurrentTab(); } else { XmlDocument doc = GetReportDoc(repTemplate); int iReportId = Report.CreateReportByTemplate(TemplateId, doc.InnerXml); Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "OpenWindow('../Reports/XMLReportOutput.aspx?ReportId=" + iReportId.ToString() + "',screen.width,screen.height,true);window.location.href='../Reports/ReportHistory.aspx?TemplateId=" + TemplateId.ToString() + "';", true); } }