Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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");
        }
Exemple #6
0
        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;
        }
Exemple #7
0
 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;
 }
Exemple #8
0
        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;
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
                }
            }
        }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
        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;
            }
        }
Exemple #13
0
        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);
            }
        }
Exemple #14
0
 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;
 }
Exemple #15
0
        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 += "&nbsp;&nbsp; " + 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
        }
Exemple #16
0
        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;
        }
Exemple #17
0
 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 + "&nbsp;=&nbsp;";
             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>,&nbsp;";
                     }
                 }
             }
             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 += "&nbsp;=<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                 break;
                             case "1":
                                 retval += "&nbsp;&gt;<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                 break;
                             case "2":
                                 retval += "&nbsp;&lt;<font color='red'>&nbsp;" + fi.Values[1] + "</font><br>";
                                 break;
                             case "3":
                                 retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + fi.Values[1] + "&nbsp;-&nbsp;" + 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 += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tToday") + "</font><br>";
                                 break;
                             case "2":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tYesterday") + "</font><br>";
                                 break;
                             case "3":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisWeek") + "</font><br>";
                                 break;
                             case "4":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastWeek") + "</font><br>";
                                 break;
                             case "5":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisMonth") + "</font><br>";
                                 break;
                             case "6":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastMonth") + "</font><br>";
                                 break;
                             case "7":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tThisYear") + "</font><br>";
                                 break;
                             case "8":
                                 retval += "&nbsp;=&nbsp;<font color='red'>" + LocRM.GetString("tLastYear") + "</font><br>";
                                 break;
                             case "9":
                                 if (DateTime.Parse(fi.Values[1]) == DateTime.MinValue)
                                 {
                                     retval += "&nbsp;<font color='red'>" + LocRM.GetString("tLess") + "&nbsp;" + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>";
                                 }
                                 else if (DateTime.Parse(fi.Values[2]) >= DateTime.MaxValue.Date)
                                 {
                                     retval += "&nbsp;<font color='red'>" + LocRM.GetString("tGreater") + "&nbsp;" + DateTime.Parse(fi.Values[1]).ToShortDateString() + "</font><br>";
                                 }
                                 else
                                     retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + DateTime.Parse(fi.Values[1]).ToShortDateString() + "&nbsp;-&nbsp;" + DateTime.Parse(fi.Values[2]).ToShortDateString() + "</font><br>";
                                 break;
                         }
                     }
                     else
                         retval += "<br>";
                     break;
                 case DbType.String:
                     if (fi.Values.Count > 0)
                     {
                         retval += qTemp.FriendlyName + "&nbsp;=&nbsp;<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 += "&nbsp;=<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                 break;
                             case "1":
                                 retval += "&nbsp;&gt;<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                 break;
                             case "2":
                                 retval += "&nbsp;&lt;<font color='red'>&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "</font><br>";
                                 break;
                             case "3":
                                 retval += "&nbsp;<font color='red'>" + LocRM.GetString("tBetween") + "&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[1])) + "&nbsp;-&nbsp;" + CommonHelper.GetHours(int.Parse(fi.Values[2])) + "</font><br>";
                                 break;
                         }
                     }
                     else
                         retval += "<br>";
                     break;
             }
         }
     }
     return retval;
 }
Exemple #18
0
        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;
        }
Exemple #19
0
        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>");
        }
Exemple #20
0
 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);
     }
 }