private static void _addScheduledRulesGrid(CswNbtResources NbtResources, Collection <CswScheduleLogicDetail> LogicDetails, CswNbtScheduledRulesReturn Ret) { if (null != LogicDetails && LogicDetails.Count > 0 && null != Ret && null != Ret.Data) { DataTable GridTable = new DataTable("scheduledrulestable"); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.RuleName, typeof(string)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.Recurrance, typeof(string)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.Interval, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.ReprobateThreshold, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.MaxRunTimeMs, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.Reprobate, typeof(bool)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.RunStartTime, typeof(DateTime)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.RunEndTime, typeof(DateTime)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.TotalRogueCount, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.FailedCount, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.ThreadId, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.StatusMessage, typeof(string)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.Disabled, typeof(bool)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.HasChanged, typeof(bool)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.Priority, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.LoadCount, typeof(Int32)); GridTable.Columns.Add(CswEnumScheduleLogicDetailColumnNames.LastLoadCheck, typeof(DateTime)); foreach (CswScheduleLogicDetail LogicDetail in LogicDetails) { if (null != LogicDetail) { DataRow Row = GridTable.NewRow(); Row[CswEnumScheduleLogicDetailColumnNames.RuleName] = LogicDetail.RuleName; Row[CswEnumScheduleLogicDetailColumnNames.Recurrance] = LogicDetail.Recurrence; Row[CswEnumScheduleLogicDetailColumnNames.Interval] = LogicDetail.Interval; Row[CswEnumScheduleLogicDetailColumnNames.ReprobateThreshold] = LogicDetail.ReprobateThreshold; Row[CswEnumScheduleLogicDetailColumnNames.MaxRunTimeMs] = LogicDetail.MaxRunTimeMs; Row[CswEnumScheduleLogicDetailColumnNames.Reprobate] = LogicDetail.Reprobate; Row[CswEnumScheduleLogicDetailColumnNames.RunStartTime] = LogicDetail.RunStartTime; Row[CswEnumScheduleLogicDetailColumnNames.RunEndTime] = LogicDetail.RunEndTime; Row[CswEnumScheduleLogicDetailColumnNames.TotalRogueCount] = LogicDetail.TotalRogueCount; Row[CswEnumScheduleLogicDetailColumnNames.FailedCount] = LogicDetail.FailedCount; Row[CswEnumScheduleLogicDetailColumnNames.ThreadId] = LogicDetail.ThreadId; Row[CswEnumScheduleLogicDetailColumnNames.StatusMessage] = LogicDetail.StatusMessage; Row[CswEnumScheduleLogicDetailColumnNames.Priority] = LogicDetail.Priority; Row[CswEnumScheduleLogicDetailColumnNames.LoadCount] = LogicDetail.LoadCount; Row[CswEnumScheduleLogicDetailColumnNames.LastLoadCheck] = LogicDetail.LastLoadCheck; Row[CswEnumScheduleLogicDetailColumnNames.Disabled] = LogicDetail.Disabled; Row[CswEnumScheduleLogicDetailColumnNames.HasChanged] = false; GridTable.Rows.Add(Row); } } CswNbtGrid gd = new CswNbtGrid(NbtResources); Ret.Data.Grid = gd.DataTableToGrid(GridTable); } }
public static void runReport( ICswResources CswResources, CswNbtWebServiceReport.ReportReturn Return, CswNbtWebServiceReport.ReportData reportParams ) { JObject ret = new JObject(); CswNbtResources NbtResources = (CswNbtResources) CswResources; DataTable rptDataTbl = _getReportTable( CswResources, reportParams ); CswNbtGrid cg = new CswNbtGrid( NbtResources ); ret = cg.DataTableToJSON( rptDataTbl ); reportParams.gridJSON = ret.ToString(); Return.Data = reportParams; }
public JObject getAuditHistoryGrid(CswNbtNode Node, bool JustDateColumn) { JObject ret = new JObject(); if (Node != null) { string SQL = @"select ja.recordcreated as ChangeDate "; if (!JustDateColumn) { SQL += @", x.transactionusername as Username, x.auditeventname as Context, np.propname as Propname, ja.gestaltsearch as Value, x.audittransactionid as AuditId, ft.fieldtype as FieldType "; } SQL += @" from jct_nodes_props_audit ja join audit_transactions x on ja.audittransactionid = x.audittransactionid join TABLE(" + CswNbtAuditTableAbbreviation.getAuditLookupFunctionNameForRealTable("nodetype_props") + @"(ja.recordcreated)) np on (np.nodetypepropid = ja.nodetypepropid) join field_types ft on ft.fieldtypeid = np.fieldtypeid where ja.nodeid = :nodeid and x.transactionusername not in (:sysusernames) order by AuditId desc"; CswCommaDelimitedString sysUserNames = new CswCommaDelimitedString(0, "'"); foreach (CswEnumSystemUserNames sysUserName in CswEnumSystemUserNames.getValues()) { sysUserNames.Add(sysUserName.ToString()); } CswArbitrarySelect HistorySelect = _CswNbtResources.makeCswArbitrarySelect("CswNbtWebServiceAuditing_getAuditHistory_select", SQL); HistorySelect.addParameter("nodeid", Node.NodeId.PrimaryKey.ToString()); HistorySelect.addParameter("sysusernames", sysUserNames.ToString()); DataTable HistoryTable = HistorySelect.getTable(); //for the audit grid we want to group by audittransactionid, but show the changedate //also, we mask the password value column and not show the encrypted password string mutatingRowsAuditId = ""; string changeToDate = ""; foreach (DataRow row in HistoryTable.Rows) { string currentAuditId = row["AuditId"].ToString(); if (currentAuditId != mutatingRowsAuditId) //we're onto a new group { mutatingRowsAuditId = currentAuditId; changeToDate = row["ChangeDate"].ToString(); } row["ChangeDate"] = changeToDate; if (row["FieldType"].ToString().Equals("Password")) { row["Value"] = "[password changed]"; } } HistoryTable.Columns.Remove("FieldType"); HistoryTable.Columns.Remove("AuditId"); CswNbtGrid g = new CswNbtGrid(_CswNbtResources); ret = g.DataTableToJSON(HistoryTable, GroupByCol: "ChangeDate", GroupByColType: CswEnumExtJsXType.datecolumn); } return(ret); } // _getAuditHistoryGrid()
public static void getDemoDataGrid(ICswResources CswResources, CswNbtDemoDataReturn Return, object Request) { CswNbtResources CswNbtResources = (CswNbtResources)CswResources; //Build table infrastructure DataTable GridTable = new DataTable("demodatatable"); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.NodeId, typeof(Int32)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.Name, typeof(string)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.Type, typeof(string)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.IsUsedBy, typeof(int)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.IsRequiredBy, typeof(int)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.ConvertToNonDemo, typeof(Boolean)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.Delete, typeof(Boolean)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.MenuOptions, typeof(string)); _ColumnTypeOverrides.Clear(); _ColumnTypeOverrides.Add(CswNbtDemoDataReturn.ColumnNames.IsUsedBy.ToString(), typeof(sbyte)); _ColumnTypeOverrides.Add(CswNbtDemoDataReturn.ColumnNames.IsRequiredBy.ToString(), typeof(sbyte)); //***************************** //Populate views string ViewQuery = @"select v.viewname, v.nodeviewid from node_views v where isdemo = '1' and visibility <> 'Property' and visibility <> 'Hidden' order by lower(viewname)"; CswArbitrarySelect ArbitraryViewsSelect = CswNbtResources.makeCswArbitrarySelect("select_demo_nodes", ViewQuery); DataTable DemoViewsTable = ArbitraryViewsSelect.getTable(); foreach (DataRow CurrentDemoViewRow in DemoViewsTable.Rows) { DataRow NewGridRowOfDemoViews = GridTable.NewRow(); GridTable.Rows.Add(NewGridRowOfDemoViews); NewGridRowOfDemoViews[CswNbtDemoDataReturn.ColumnNames.NodeId] = CurrentDemoViewRow["nodeviewid"].ToString(); NewGridRowOfDemoViews[CswNbtDemoDataReturn.ColumnNames.Name] = CurrentDemoViewRow["viewname"].ToString(); NewGridRowOfDemoViews[CswNbtDemoDataReturn.ColumnNames.Type] = "View"; NewGridRowOfDemoViews[CswNbtDemoDataReturn.ColumnNames.IsUsedBy] = 0; NewGridRowOfDemoViews[CswNbtDemoDataReturn.ColumnNames.IsRequiredBy] = 0; } //iterate demo views rows //***************************** //Populate views string NodesQuery = @"select n." + CswNbtDemoDataReturn.ColumnNames.NodeId + @",n.nodename,t.nodetypename, t.enabled from nodes n join nodetypes t on (n.nodetypeid=t.nodetypeid ) where n.isdemo = '1' order by lower( n.nodename ), lower( t.nodetypename )"; CswArbitrarySelect ArbitraryNodesSelect = CswNbtResources.makeCswArbitrarySelect("select_demo_nodes", NodesQuery); DataTable DemoNodesTable = ArbitraryNodesSelect.getTable(); foreach (DataRow CurrentDemoNodeRow in DemoNodesTable.Rows) { bool NodeEnabled = CswConvert.ToBoolean(CurrentDemoNodeRow["enabled"].ToString()); String DisabledLabel = NodeEnabled ? "" : "(Disabled) "; DataRow NewGridRowOfNodes = GridTable.NewRow(); GridTable.Rows.Add(NewGridRowOfNodes); NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.NodeId] = CurrentDemoNodeRow["nodeid"].ToString(); NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.Name] = CurrentDemoNodeRow["nodename"].ToString(); NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.Type] = DisabledLabel + CurrentDemoNodeRow["nodetypename"].ToString(); CswDelimitedString UsedByNodeIds = new CswDelimitedString(','); Int32 UsedByCount = 0; CswDelimitedString RequiredByNodeIds = new CswDelimitedString(','); Int32 RequiredByCount = 0; string nodeid = CurrentDemoNodeRow["nodeid"].ToString(); string node_used_by_query = @"select n." + CswNbtDemoDataReturn.ColumnNames.NodeId + @", n.nodename,t.nodetypename,n.isdemo, p.isrequired from jct_nodes_props j join nodetype_props p on (j.nodetypepropid=p.nodetypepropid) join field_types f on ( p.fieldtypeid = f.fieldtypeid ) join nodes n on (j.nodeid=n.nodeid) join nodetypes t on (n.nodetypeid=t.nodetypeid) where ( f.fieldtype='Relationship' or f.fieldtype='Location' ) and j.field1_fk='" + nodeid + "'"; CswArbitrarySelect ArbitraryUsedBySelect = CswNbtResources.makeCswArbitrarySelect("select_nodesusedby_nodeid_" + nodeid, node_used_by_query); DataTable NodesUsedByTable = ArbitraryUsedBySelect.getTable(); foreach (DataRow CurrentUsedByRow in NodesUsedByTable.Rows) { string CurrentNodeId = CurrentUsedByRow["nodeid"].ToString(); if (true == CswConvert.ToBoolean(CurrentUsedByRow["isrequired"].ToString())) { RequiredByNodeIds.Add(CurrentNodeId); RequiredByCount++; } else { UsedByNodeIds.Add(CurrentNodeId); UsedByCount++; } //if-else it's required } //iterate nodes used by rows NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.MenuOptions] = "{ \"requiredby\" : [" + RequiredByNodeIds.ToString() + "],\"usedby\" :[" + UsedByNodeIds.ToString() + "], \"nodename\": \" " + CurrentDemoNodeRow["nodename"].ToString() + "\" }"; NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.IsUsedBy] = UsedByCount; NewGridRowOfNodes[CswNbtDemoDataReturn.ColumnNames.IsRequiredBy] = RequiredByCount; } //iterate node rows CswNbtGrid Grid = new CswNbtGrid(CswNbtResources); Return.Data.Grid = Grid.DataTableToGrid(GridTable, IncludeEditFields: false, ColumnTypeOverrides: _ColumnTypeOverrides); } //getDemoDataGrid()
} //getDemoDataGrid() public static void getDemoDataNodesAsGrid(ICswResources CswResources, CswNbtDemoDataReturn Return, CswNbtDemoDataRequests.CswDemoNodesGridRequest Request) { CswNbtResources CswNbtResources = (CswNbtResources)CswResources; //Build table infrastructure DataTable GridTable = new DataTable("depdendentnodestable"); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.NodeId, typeof(Int32)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.Name, typeof(string)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.Type, typeof(string)); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.IsDemo, typeof(string)); // GridTable.Columns.Add( CswNbtDemoDataReturn.ColumnNames.Action, typeof( sbyte ) ); GridTable.Columns.Add(CswNbtDemoDataReturn.ColumnNames.MenuOptions, typeof(string)); string DependentNodesQuery = "select n.nodeid, t.nodetypeid, n.nodename as \"name\" ,n.isdemo \"Is Demo\", t.nodetypename as \"type\" "; DependentNodesQuery += "from nodes n "; DependentNodesQuery += "join nodetypes t on (n.nodetypeid=t.nodetypeid) "; //We have to cope with oracle's limit of 1000 on lists //as per case 29811 DependentNodesQuery += " where "; List <string> AllNodeIds = Request.NodeIds; int NumberoFInClauses = (AllNodeIds.Count / 1000) + 1; //we _only_ want the whole-number result here for (int idx = 0; idx < NumberoFInClauses; idx++) { if (idx > 0) { DependentNodesQuery += " or "; } List <string> CurrentList = null; if (AllNodeIds.Count > 1000) { CurrentList = AllNodeIds.GetRange(0, 1000); AllNodeIds.RemoveRange(0, 1000); } else { CurrentList = AllNodeIds; } CswDelimitedString DepdendentNodeIds = new CswDelimitedString(','); DepdendentNodeIds.FromArray(CurrentList.ToArray()); DependentNodesQuery += " n.nodeid in (" + DepdendentNodeIds.ToString() + ") "; } DependentNodesQuery += "order by lower(n.nodename), lower(t.nodetypename)"; CswArbitrarySelect DependentNodesSelect = CswNbtResources.makeCswArbitrarySelect("select_depdendent_nodes", DependentNodesQuery); DataTable DepdendentNodesTableTable = DependentNodesSelect.getTable(); foreach (DataRow CurrentDependentNodeRow in DepdendentNodesTableTable.Rows) { DataRow NewGridRowOfDependentNodes = GridTable.NewRow(); GridTable.Rows.Add(NewGridRowOfDependentNodes); NewGridRowOfDependentNodes[CswNbtDemoDataReturn.ColumnNames.NodeId] = CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.NodeId]; NewGridRowOfDependentNodes[CswNbtDemoDataReturn.ColumnNames.Name] = CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.Name]; NewGridRowOfDependentNodes[CswNbtDemoDataReturn.ColumnNames.Type] = CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.Type]; NewGridRowOfDependentNodes[CswNbtDemoDataReturn.ColumnNames.IsDemo] = ("1" == CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.IsDemo].ToString()) ? "yes" : "no"; CswPrimaryKey cswPrimaryKey = new CswPrimaryKey(); cswPrimaryKey.FromString("nodes_" + CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.NodeId].ToString()); CswNbtNodeKey CswNbtNodeKey = new CswNbtNodeKey(); CswNbtNodeKey.NodeId = cswPrimaryKey; CswNbtNodeKey.NodeTypeId = CswConvert.ToInt32(CurrentDependentNodeRow["nodetypeid"]); string menu_options = "{ "; menu_options += "\"nodeid\" : \"nodes_" + CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.NodeId].ToString() + "\","; menu_options += "\"nodename\" : \" " + CurrentDependentNodeRow[CswNbtDemoDataReturn.ColumnNames.Name].ToString() + "\","; menu_options += "\"nodekey\" : \" " + CswNbtNodeKey.ToString() + "\""; menu_options += " }"; NewGridRowOfDependentNodes[CswNbtDemoDataReturn.ColumnNames.MenuOptions] = menu_options; }//iterate result rows CswNbtGrid Grid = new CswNbtGrid(CswNbtResources); Return.Data.Grid = Grid.DataTableToGrid(GridTable, IncludeEditFields: false); }//getDemoDataNodesAsGrid()
public CswNbtWebServiceGrid(CswNbtResources CswNbtResources, CswNbtView View, bool ForReport, CswNbtNodeKey ParentNodeKey = null) { _CswNbtResources = CswNbtResources; _View = View; _ForReport = ForReport; if (_View.ViewMode != CswEnumNbtViewRenderingMode.Grid) { throw new CswDniException(CswEnumErrorType.Error, "Cannot create a grid using a view type of " + _View.ViewMode, "Cannot create a grid view if the view is not a grid."); } _ParentNodeKey = ParentNodeKey; Collection <CswNbtViewRelationship> FirstLevelRelationships = new Collection <CswNbtViewRelationship>(); if (null != _ParentNodeKey && _View.Visibility == CswEnumNbtViewVisibility.Property) { foreach (CswNbtViewRelationship Relationship in _View.Root.ChildRelationships.SelectMany(NodeRelationship => NodeRelationship.ChildRelationships)) { FirstLevelRelationships.Add(Relationship); } } else { FirstLevelRelationships = _View.Root.ChildRelationships; } // Case 21778 // Maybe do this in Permit someday; however, the meaning of Edit and Delete is very specific in this context: // only evaluating visibility of the option to edit or delete root nodetypes of a view foreach (CswNbtViewRelationship Relationship in FirstLevelRelationships) { Collection <CswNbtMetaDataNodeType> FirstLevelNodeTypes = new Collection <CswNbtMetaDataNodeType>(); if (Relationship.SecondId != Int32.MinValue) { if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.PropertySetId) { foreach (CswNbtMetaDataObjectClass SecondOc in _CswNbtResources.MetaData.getObjectClassesByPropertySetId(Relationship.SecondId)) { if (null != SecondOc) { foreach (CswNbtMetaDataNodeType NT in SecondOc.getNodeTypes()) { FirstLevelNodeTypes.Add(NT); } } } } else if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId) { CswNbtMetaDataObjectClass SecondOc = _CswNbtResources.MetaData.getObjectClass(Relationship.SecondId); if (null != SecondOc) { foreach (CswNbtMetaDataNodeType NT in SecondOc.getNodeTypes()) { FirstLevelNodeTypes.Add(NT); } } } else if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId) { CswNbtMetaDataNodeType SecondNt = _CswNbtResources.MetaData.getNodeType(Relationship.SecondId); if (null != SecondNt) { FirstLevelNodeTypes.Add(SecondNt); } } } // if( Relationship.SecondId != Int32.MinValue ) foreach (CswNbtMetaDataNodeType NodeType in FirstLevelNodeTypes) { _NodeTypePermission Permission = new _NodeTypePermission(NodeType, _CswNbtResources); _ActionEnabled = false == _ForReport && (_ActionEnabled || Permission.CanView || Permission.CanDelete || Permission.CanDelete); if (false == _Permissions.ContainsKey(NodeType.FirstVersionNodeTypeId)) { _Permissions.Add(NodeType.FirstVersionNodeTypeId, Permission); } } } _CswNbtGrid = new CswNbtGrid(_CswNbtResources); _PropsInGrid = new Collection <CswViewBuilderProp>(); _getGridProperties(_View.Root.ChildRelationships, _PropsInGrid); } //ctor