} // 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);
        }
Exemple #2
0
        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()
Exemple #3
0
        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()
Exemple #4
0
        } // 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()
Exemple #8
0
        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()