} // update() private CswNbtObjClassReportGroup _createReportGroup(string Name) { CswNbtObjClassReportGroup SystemReportGroup = null; CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportGroupClass); if (null != ReportGroupOC) { CswNbtMetaDataNodeType ReportGroupNT = ReportGroupOC.FirstNodeType; if (null != ReportGroupNT) { SystemReportGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(ReportGroupNT.NodeTypeId, OnAfterMakeNode: (CswNbtNode) => { CswNbtObjClassReportGroup NewNode = CswNbtNode; NewNode.Name.Text = Name; }); } } return(SystemReportGroup); }
public override void update() { CswNbtMetaDataNodeType ReportNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType("Report"); if (null != ReportNT) { CswNbtObjClassReport ReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(ReportNT.NodeTypeId, OnAfterMakeNode : delegate(CswNbtNode newNode) { CswNbtObjClassReport report = newNode; report.ReportName.Text = "Custom Text Barcode"; report.Category.Text = "System Reports"; report.SQL.Text = "select UPPER('{text}') as text from dual"; CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportGroupClass); CswNbtObjClassReportGroup SystemReportGroup = ReportGroupOC.getNodes(forceReInit: false, includeSystemNodes: true) .FirstOrDefault(ReportGroup => ((CswNbtObjClassReportGroup)ReportGroup).Name.Text == "System Reports"); if (null != SystemReportGroup) { report.ReportGroup.RelatedNodeId = SystemReportGroup.NodeId; } }); // upload .RPT string Filename = "customtextbarcode.rpt"; CswPropIdAttr PropId = new CswPropIdAttr(ReportNode.Node, ReportNode.RPTFile.NodeTypeProp); string Filepath = CswFilePath.getConfigurationFilePath(CswEnumSetupMode.NbtExe) + "\\" + Filename; byte[] ReportFile = File.ReadAllBytes(Filepath); const string ContentType = "application/octet-stream"; string Href; CswNbtSdBlobData SdBlobData = _CswNbtSchemaModTrnsctn.CswNbtSdBlobData; SdBlobData.saveFile(PropId.ToString(), ReportFile, ContentType, Filename, out Href); } // if( null != ReportNT ) } // update()
public override void update() { string ReportSQL = @"with chemicals as ( select * from( select ch.nodeid, ch.casno, ch.tradename, ch.istierii from chemical ch union all select co.nodeid, co.casno, co.tradename, co.istierii from constituent co) where casno is not null ), counts as ( select count(nodeid) counts, casno from chemicals group by casno ), chemical_dupes as ( select c.nodeid as materialid, c.casno, c.tradename, decode(c.istierii, null, 'N', c.istierii) istierii from chemicals c join counts ct on ct.casno = c.casno where counts > 1 ), tier_ii_casnos as ( select distinct casno, istierii from chemical_dupes where istierii = 'Y' ) select * from chemical_dupes where casno in (select casno from tier_ii_casnos) order by casno, tradename"; CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass ); CswNbtObjClassReportGroup CISProReportGroup = _getReportGroup(); CswNbtMetaDataNodeType GenericReportNT = ReportOC.FirstNodeType; foreach( CswNbtMetaDataNodeType ReportNT in ReportOC.getNodeTypes() ) { if( ReportNT.NodeTypeName == "Report" ) { GenericReportNT = ReportNT; break; } } foreach( CswNbtObjClassReport DupChemsReport in ReportOC.getNodes( false, false, false ) ) { if( DupChemsReport.ReportName.Text == "Duplicate Chemicals" ) { DupChemsReport.Node.delete( false, true ); } } _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( GenericReportNT.NodeTypeId, delegate( CswNbtNode NewNode ) { CswNbtObjClassReport ReportNode = NewNode; if( null != CISProReportGroup ) { ReportNode.ReportGroup.RelatedNodeId = CISProReportGroup.NodeId; } ReportNode.SQL.Text = ReportSQL; ReportNode.ReportName.Text = "Duplicate Chemicals"; ReportNode.Category.Text = "Materials"; } ); } // update()
} // update() private CswNbtObjClassReportGroup _getReportGroup() { CswNbtObjClassReportGroup RG = null; CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupClass ); foreach( CswNbtObjClassReportGroup ReportGroup in ReportGroupOC.getNodes( false, false ) ) { if( ReportGroup.Name.Text == "CISPro Report Group" ) { RG = ReportGroup; } } return RG; }
public override void update() { CswNbtObjClassReportGroup SystemReportGroup = _createReportGroup("System Reports"); if (null != SystemReportGroup) { string SqlQuery = @" select * from ( select barcode ucode,username,firstname,lastname,firstname || ' ' || lastname as fullname from user1 ) x where lower(fullname) like lower('%{FullNameContains}%') order by lower(fullname) "; _createReport("User Codes", "System Reports", SystemReportGroup, SqlQuery, "users.rpt"); SqlQuery = @" select lscode,location,name,Location || ' > ' || name pathname, type from ( select barcode lscode,name,location,'building' type from building union select barcode lscode,name,location,'room' type from room union select barcode lscode,name,location,'cabinet' type from cabinet ) x where name is not null and location is not null -- and lower(location) like lower('{LocationBegins}%') order by lower(location),lower(name) "; _createReport("Location Codes", "System Reports", SystemReportGroup, SqlQuery, "locations.rpt"); SqlQuery = @" select * from ( select 'DISPOSE' as val from dual union select 'MOVE' as val from dual union select 'TRANSFER' from dual union select 'OWNER' from dual union select 'DISPENSE' from dual ) x order by val "; _createReport("Kiosk Mode", "System Reports", SystemReportGroup, SqlQuery, "kiosk.rpt"); } } // update()
private void _createReport(string ReportName, string Category, CswNbtObjClassReportGroup Group, string Query, string Filename) { CswNbtMetaDataNodeType ReportNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType("Report"); if (null != ReportNT) { CswNbtObjClassReport ReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportNT.NodeTypeId, OnAfterMakeNode: (CswNbtNode) => { CswNbtObjClassReport NewNode = CswNbtNode; NewNode.ReportName.Text = ReportName; NewNode.Category.Text = Category; NewNode.ReportGroup.RelatedNodeId = Group.NodeId; NewNode.SQL.Text = Query; } ); _uploadBlobData(ReportNode, Filename); } }
public override void update() { // Create CISPro Report Group CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupClass ); if( null != ReportGroupOC.FirstNodeType ) { CswNbtObjClassReportGroup CISProGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportGroupOC.FirstNodeType.NodeTypeId, delegate( CswNbtNode NewNode ) { CswNbtObjClassReportGroup NewReportGroup = NewNode; NewReportGroup.Name.Text = "CISPro Report Group"; } ); CswNbtMetaDataNodeType ReportNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Report" ); if( null != ReportNT ) { // Add HMIS reports _createReport( "HMIS Totals", "Materials", CISProGroup, "", "RegulatoryReporting/getHMISDataTable?ControlZone={Name}&Class=", "HMISTotals.rpt" ); _createReport( "HMIS Materials", "Materials", CISProGroup, "", "RegulatoryReporting/getHMISDataTable?ControlZone={Name}&Class={Class}", "HMISMaterials.rpt" ); } } } // update()
public override void update() { #region NodeTypes CswNbtMetaDataNodeType ReportGroupPermNT = _createPermissionNT( CswEnumNbtObjectClass.ReportGroupPermissionClass, "Report Group Permission" ); CswNbtMetaDataNodeType MailReportGroupPermNT = _createPermissionNT( CswEnumNbtObjectClass.MailReportGroupPermissionClass, "Mail Report Group Permission" ); CswNbtMetaDataNodeType ReportGroupNT = _createGroupNT( CswEnumNbtObjectClass.ReportGroupClass, "Report Group", CswNbtObjClassReportGroup.PropertyName.Reports ); CswNbtMetaDataNodeType MailReportGroupNT = _createGroupNT( CswEnumNbtObjectClass.MailReportGroupClass, "Mail Report Group", CswNbtObjClassMailReportGroup.PropertyName.MailReports ); CswNbtMetaDataObjectClass InvGrpPermOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.InventoryGroupPermissionClass ); _CswNbtSchemaModTrnsctn.MetaData.makeMissingNodeTypeProps();//For some reason this is needed here or else the following code will throw an ORNI on a full master reset foreach( CswNbtMetaDataNodeType InvGrpPermNT in InvGrpPermOC.getNodeTypes() ) { _setPermissionPropFilters( InvGrpPermNT ); } #endregion NodeTypes #region Permission Group Nodes CswNbtObjClassReportGroup DefaultReportGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.MakeTemp ); DefaultReportGroup.Name.Text = "Default Report Group"; DefaultReportGroup.IsTemp = false; DefaultReportGroup.postChanges( false ); CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass ); foreach( CswNbtObjClassReport ReportNode in ReportOC.getNodes( false, false ) ) { ReportNode.ReportGroup.RelatedNodeId = DefaultReportGroup.NodeId; ReportNode.postChanges( false ); } CswNbtObjClassMailReportGroup DefaultMailReportGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.MakeTemp ); DefaultMailReportGroup.Name.Text = "Default Mail Report Group"; DefaultMailReportGroup.IsTemp = false; DefaultMailReportGroup.postChanges( false ); CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MailReportClass ); foreach( CswNbtObjClassMailReport MailReportNode in MailReportOC.getNodes( false, false ) ) { MailReportNode.MailReportGroup.RelatedNodeId = DefaultMailReportGroup.NodeId; MailReportNode.postChanges( false ); } #endregion Permission Group Nodes #region Inventory Group Permission Nodes CswNbtMetaDataNodeType InventoryGroupNT = InvGrpPermOC.FirstNodeType; if( null != InventoryGroupNT ) { CswNbtMetaDataNodeTypeProp PermissionGroupNTP = InventoryGroupNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetPermission.PropertyName.PermissionGroup ); if( null != PermissionGroupNTP ) { PermissionGroupNTP.PropName = CswNbtPropertySetPermission.PropertyName.PermissionGroup; } } foreach( CswNbtObjClassInventoryGroupPermission InvGrpPermNode in InvGrpPermOC.getNodes( false, false ) ) { InvGrpPermNode.ApplyToAllWorkUnits.Checked = CswEnumTristate.False; InvGrpPermNode.ApplyToAllRoles.Checked = CswEnumTristate.False; InvGrpPermNode.PermissionGroup.RefreshNodeName(); InvGrpPermNode.postChanges( false ); } CswNbtMetaDataObjectClass InvGrpOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.InventoryGroupClass ); foreach( CswNbtObjClassInventoryGroup InvGrpNode in InvGrpOC.getNodes( false, false ) ) { if( InvGrpNode.Name.Text == "Default Inventory Group" && null != InventoryGroupNT ) { CswNbtObjClassInventoryGroupPermission WildCardInventoryGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( InventoryGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardInventoryGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.PermissionGroup.RelatedNodeId = InvGrpNode.NodeId; WildCardInventoryGroupPermission.View.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.Dispense.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Dispose.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Request.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Undispose.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.WorkUnit.RelatedNodeId = null; WildCardInventoryGroupPermission.WorkUnit.RefreshNodeName(); WildCardInventoryGroupPermission.WorkUnit.SyncGestalt(); WildCardInventoryGroupPermission.postChanges( false ); } } //This is now being handled as part of creating the Default Group nodes /*CswNbtObjClassReportGroupPermission WildCardReportGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportGroupPermNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardReportGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardReportGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardReportGroupPermission.PermissionGroup.RelatedNodeId = DefaultReportGroup.NodeId; WildCardReportGroupPermission.View.Checked = CswEnumTristate.True; WildCardReportGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardReportGroupPermission.postChanges( false ); CswNbtObjClassMailReportGroupPermission WildCardMailReportGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportGroupPermNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardMailReportGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.PermissionGroup.RelatedNodeId = DefaultMailReportGroup.NodeId; WildCardMailReportGroupPermission.View.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.postChanges( false );*/ #endregion Inventory Group Permission Nodes } // update()
public override void update() { // CISPro Report Group (created in CswUpdateSchema_02H_28562C) should only be accessible to CISPro roles CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupClass ); CswNbtMetaDataObjectClass PermissionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupPermissionClass ); CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RoleClass ); CswNbtMetaDataObjectClassProp GroupNameOCP = ReportGroupOC.getObjectClassProp( CswNbtObjClassReportGroup.PropertyName.Name ); CswNbtMetaDataObjectClassProp PermissionGroupOCP = PermissionOC.getObjectClassProp( CswNbtObjClassReportGroupPermission.PropertyName.PermissionGroup ); CswNbtMetaDataObjectClassProp RoleNameOCP = RoleOC.getObjectClassProp( CswNbtObjClassRole.PropertyName.Name ); // Delete existing (default) permissions CswNbtView View = _CswNbtSchemaModTrnsctn.makeView(); CswNbtViewRelationship Rel1 = View.AddViewRelationship( ReportGroupOC, false ); View.AddViewPropertyAndFilter( Rel1, GroupNameOCP, Value: "CISPro Report Group", FilterMode: CswEnumNbtFilterMode.Equals ); CswNbtViewRelationship Rel2 = View.AddViewRelationship( Rel1, CswEnumNbtViewPropOwnerType.Second, PermissionGroupOCP, false ); ICswNbtTree results = _CswNbtSchemaModTrnsctn.getTreeFromView( View, true ); CswNbtObjClassReportGroup CISProGroup = null; for( Int32 g = 0; g < results.getChildNodeCount(); g++ ) { results.goToNthChild( g ); CISProGroup = results.getNodeForCurrentPosition(); for( Int32 p = 0; p < results.getChildNodeCount(); p++ ) { results.goToNthChild( p ); CswNbtNode PermNode = results.getNodeForCurrentPosition(); PermNode.delete( false, true ); results.goToParentNode(); } results.goToParentNode(); } // for( Int32 g = 0; g < results.getChildNodeCount(); g++ ) if( null != CISProGroup ) { // Get all cispro roles CswNbtView rolesView = _CswNbtSchemaModTrnsctn.makeView(); CswNbtViewRelationship parent = rolesView.AddViewRelationship( RoleOC, false ); rolesView.AddViewPropertyAndFilter( parent, MetaDataProp: RoleNameOCP, SubFieldName: CswEnumNbtSubFieldName.Text, FilterMode: CswEnumNbtFilterMode.Contains, Value: "cispro" ); rolesView.AddViewPropertyAndFilter( parent, Conjunction: CswEnumNbtFilterConjunction.Or, MetaDataProp: RoleNameOCP, SubFieldName: CswEnumNbtSubFieldName.Text, FilterMode: CswEnumNbtFilterMode.Equals, Value: "Administrator" ); rolesView.AddViewPropertyAndFilter( parent, Conjunction: CswEnumNbtFilterConjunction.Or, MetaDataProp: RoleNameOCP, SubFieldName: CswEnumNbtSubFieldName.Text, FilterMode: CswEnumNbtFilterMode.Equals, Value: CswNbtObjClassRole.ChemSWAdminRoleName ); ICswNbtTree rolesTree = _CswNbtSchemaModTrnsctn.getTreeFromView( rolesView, true ); Collection<CswPrimaryKey> CISProRoleIds = new Collection<CswPrimaryKey>(); for( int i = 0; i < rolesTree.getChildNodeCount(); i++ ) { rolesTree.goToNthChild( i ); CISProRoleIds.Add( rolesTree.getNodeIdForCurrentPosition() ); rolesTree.goToParentNode(); } // Grant permission to all cispro roles CswNbtMetaDataNodeType PermissionNT = PermissionOC.FirstNodeType; if( null != PermissionNT ) { foreach( CswPrimaryKey RoleId in CISProRoleIds ) { _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( PermissionNT.NodeTypeId, delegate( CswNbtNode NewNode ) { CswNbtPropertySetPermission NewPermission = NewNode; NewPermission.ApplyToAllRoles.Checked = CswEnumTristate.False; NewPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; NewPermission.PermissionGroup.RelatedNodeId = CISProGroup.NodeId; NewPermission.View.Checked = CswEnumTristate.True; NewPermission.Edit.Checked = CswEnumTristate.True; NewPermission.Role.RelatedNodeId = RoleId; } ); } } } // if( null != CISProGroup ) } // update()