Exemplo n.º 1
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()
        public override void update()
        {
            CswNbtMetaDataObjectClass ReportClass = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass);
            CswNbtObjClassReport      DoomedNode  = null;

            CswNbtMetaDataNodeType SiReportNt = ReportClass.getNodeTypes().FirstOrDefault(NodeType => NodeType.NodeTypeName == "SI Report");

            if (null != SiReportNt)
            {
                foreach (CswNbtObjClassReport Report in ReportClass.getNodes(true, false, false, false))
                {
                    if (Report.NodeType != SiReportNt && Report.ReportName.Text == "Deficient Inspections (Demo)")
                    {
                        DoomedNode = Report;
                    }
                }

                if (null != DoomedNode)
                {
                    CswNbtObjClassReport NewNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(SiReportNt.NodeTypeId);
                    foreach (CswNbtNodePropWrapper NodePropWrapper in DoomedNode.Node.Properties)
                    {
                        if (Int32.MinValue != NodePropWrapper.ObjectClassPropId)
                        {
                            JObject OldVals = new JObject();
                            NodePropWrapper.ToJSON(OldVals);
                            NewNode.Node.Properties[NodePropWrapper.ObjectClassPropName].ReadJSON(OldVals, null, null);
                        }
                    }
                    NewNode.postChanges(ForceUpdate: false);
                    DoomedNode.Node.delete(DeleteAllRequiredRelatedNodes: true, OverridePermissions: true);
                }
            }
        }
        public override void update()
        {
            #region Report SQL Text
            string reportSqlText = @"select des.P4625 as InspectionDate, 
                                    des.P4615 as InspectionName,
                                    des.P4621 as Location,
                                    CASE nvl(q.correctiveaction,'NULL')
                                      WHEN 'NULL' then 'NO'
                                      ELSE 'yes'
                                    END as Resolved,
                                    q.questionno,
                                    q.question,
                                    q.answer,
                                    q.correctiveaction,
                                    q.comments
                                    from ntlabsafetychecklistdemo des
                                    join ntlabsafetydemo targ on targ.nodeid=des.P4614_labsafetydemo_ntfk
                                    join vwquestiondetail q on q.nodeid = des.nodeid
                                      where (q.iscompliant = '0' or q.correctiveaction is not null)
                                        and des.P4621 like '%> Lab 1'
                                    order by des.P4621, des.P4625, q.questionno";
            #endregion

            CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.ReportClass );
            foreach( CswNbtNode ReportNode in ReportOC.getNodes( true, false ) )
            {
                CswNbtObjClassReport NodeAsReport = ReportNode;
                if( NodeAsReport.ReportName.Text == "Lab 1 Deficiencies" )
                {
                    NodeAsReport.SQL.Text = reportSqlText;
                    NodeAsReport.postChanges( false );
                }
            }

        }//Update()
 private void _createNewDeficientInspectionsReport()
 {
     CswNbtMetaDataNodeType ReportNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Report" );
     CswNbtNode ReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportNodeType.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
     CswNbtObjClassReport NodeAsReport = ReportNode;
     NodeAsReport.ReportName.Text = "Deficient Inspections";
     NodeAsReport.Category.Text = "Lab Safety";
     NodeAsReport.SQL.Text = _getDeficientInspectionsReportSQLText();
     NodeAsReport.postChanges( false );
 }
Exemplo n.º 5
0
        public override void update()
        {
            CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MailReportClass );
            CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.ReportClass );

            // Fix the relationship view not to be "IMCS Reports" by reseting it to the default view of the target, "All ReportClass"
            foreach( CswNbtMetaDataNodeType MailReportNT in MailReportOC.getLatestVersionNodeTypes() )
            {
                CswNbtMetaDataNodeTypeProp MRReportNTP = MailReportNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMailReport.ReportPropertyName );
                _setDefaultView( MRReportNTP, MRReportNTP.FKType, MRReportNTP.FKValue, false );
            }

            // Fix the two demo mail reports
            foreach( CswNbtObjClassMailReport MRNode in MailReportOC.getNodes( false, true ) )
            {
                if( null != MRNode && MRNode.IsDemo )
                {
                    if( MRNode.Node.NodeName == "Equipment Mail Report" )
                    {
                        // Equipment Mail Report - If no report or view is assigned, remove it
                        if( ( null == MRNode.Report.RelatedNodeId || Int32.MinValue == MRNode.Report.RelatedNodeId.PrimaryKey ) &&
                            ( MRNode.ReportView.SelectedViewIds.IsEmpty || "196" == MRNode.ReportView.SelectedViewIds.ToString() ) )
                        {
                            MRNode.Node.delete();
                        }
                    }
                    else
                    {
                        // Mail Report 25751 - assign "Lab 1 Deficiencies" to mail report
                        CswNbtObjClassReport Lab1Report = null;
                        foreach( CswNbtObjClassReport ReportNode in ReportOC.getNodes( false, true ) )
                        {
                            if( "Lab 1 Deficiencies" == ReportNode.ReportName.Text )
                            {
                                Lab1Report = ReportNode;
                            }
                        }
                        if( null != Lab1Report )
                        {
                            CswNbtMetaDataNodeTypeProp NameNTP = MRNode.NodeType.getNodeTypeProp("Name");
                            if(null != NameNTP)
                            {
                                MRNode.Node.Properties[NameNTP].AsText.Text = "Lab 1 Deficiencies Mail Report";
                            }
                            MRNode.Report.RelatedNodeId = Lab1Report.NodeId;
                            MRNode.postChanges( false );
                        }
                        else
                        {
                            MRNode.Node.delete();
                        }
                    }
                }
            }
        }//Update()
        private void _uploadBlobData( CswNbtObjClassReport ReportNode, string Filename )
        {
            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 );

        }
Exemplo n.º 7
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()
Exemplo n.º 8
0
        public void setReportParams()
        {
            string                 Sql        = "select u.* from ocuserclass u where u.nodeid = {userid}";
            CswPrimaryKey          UserId     = new CswPrimaryKey("nodes", 2);
            CswNbtObjClassUser     UserNode   = TestData.CswNbtResources.Nodes.GetNode(UserId);
            CswNbtMetaDataNodeType ReportNT   = TestData.CswNbtResources.MetaData.getNodeType("Report");
            CswNbtObjClassReport   ReportNode = TestData.CswNbtResources.Nodes.makeNodeFromNodeTypeId(ReportNT.NodeTypeId, IsTemp: true);

            ReportNode.SQL.Text = Sql;
            string ReportSql = CswNbtObjClassReport.ReplaceReportParams(Sql, ReportNode.ExtractReportParams(UserNode));

            Assert.AreEqual("select u.* from ocuserclass u where u.nodeid = 2", ReportSql);
        }
Exemplo n.º 9
0
        public override void update()
        {
            #region part 1 - move the global Locations view to the System category
            List<CswNbtView> views = _CswNbtSchemaModTrnsctn.ViewSelect.restoreViews( "Locations" );
            foreach( CswNbtView view in views )
            {
                if( string.IsNullOrEmpty( view.Category ) && view.Visibility.Equals( NbtViewVisibility.Global ) && view.ViewMode.Equals( NbtViewRenderingMode.Tree ) )
                {
                    view.Category = "System";
                    view.save();
                }
            }
            #endregion

            #region part 2 - Move Deficient Inspections and Lab 1 Deficiencies Report nodes into Lab Safety (demo) category

            CswTableSelect nodesTS = _CswNbtSchemaModTrnsctn.makeCswTableSelect( "fixReportNodes_28117", "nodes" );
            DataTable nodesDT = nodesTS.getTable( "where nodename = 'Deficient Inspections' or nodename = 'Lab 1 Deficiencies'" );

            foreach( DataRow row in nodesDT.Rows )
            {
                int pkAsInt = CswConvert.ToInt32( row["nodeid"] );
                CswPrimaryKey pk = new CswPrimaryKey( "nodes", pkAsInt );
                CswNbtObjClassReport reportNode = _CswNbtSchemaModTrnsctn.Nodes.GetNode( pk );
                if( null != reportNode )
                {
                    reportNode.Category.Text = "Lab Safety (demo)";
                    reportNode.postChanges( false );
                }
            }

            #endregion

            #region part 3 - moving more views around

            //views that belong in the Containers category (Expiring Containers, Missing Containers, Above Maximum Inventory, Below Minimum Inventory)
            CswTableSelect containersTS = _CswNbtSchemaModTrnsctn.makeCswTableSelect( "conainerViews_28117", "node_views" );
            DataTable containersDT = containersTS.getTable( "where viewname = 'Expiring Containers' or viewname = 'Missing Containers' or viewname = 'Above Maximum Inventory' or viewname = 'Below Minimum Inventory' or viewname = 'Containers'" );

            foreach( DataRow row in containersDT.Rows )
            {
                CswNbtViewId viewId = new CswNbtViewId( CswConvert.ToInt32( row["nodeviewid"] ) );
                CswNbtView containerView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( viewId );
                containerView.Category = "Containers";
                containerView.save();
            }

            #endregion
        }
Exemplo n.º 10
0
 public override void update()
 {
     CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass );
     CswNbtSearch FindReport = _CswNbtSchemaModTrnsctn.CswNbtSearch;
     FindReport.addFilter( ReportOC, false );
     FindReport.SearchType = CswEnumSqlLikeMode.Exact;
     FindReport.SearchTerm = "Kiosk Mode";
     ICswNbtTree SearchResults = FindReport.Results();
     for( Int32 r = 0; r < SearchResults.getChildNodeCount(); r++ )
     {
         SearchResults.goToNthChild( r );
         CswNbtObjClassReport ReportNode = SearchResults.getNodeForCurrentPosition();
         ReportNode.ReportName.Text = "Kiosk Mode Barcodes";
         ReportNode.postChanges( false );
         SearchResults.goToParentNode();
     }
 } // update()
 public override void update()
 {
     CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass );
     CswNbtSearch FindReport = _CswNbtSchemaModTrnsctn.CswNbtSearch;
     FindReport.addFilter( ReportOC, false );
     FindReport.SearchType = CswEnumSqlLikeMode.Begins;
     FindReport.SearchTerm = "HMIS";
     ICswNbtTree SearchResults = FindReport.Results();
     for( Int32 r = 0; r < SearchResults.getChildNodeCount(); r++ )
     {
         SearchResults.goToNthChild( r );
         CswNbtObjClassReport ReportNode = SearchResults.getNodeForCurrentPosition();
         ReportNode.WebService.Text = ReportNode.WebService.Text.Replace( "{Name}", "{Control_Zone}" );
         ReportNode.postChanges( false );
         SearchResults.goToParentNode();
     }
 } // update()
Exemplo n.º 12
0
        public override void update()
        {
            string reportSqlText = _getLab1DeficienciesReportSQLText();

            if( false == String.IsNullOrEmpty( reportSqlText ) )
            {
                CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.ReportClass );
                foreach( CswNbtNode ReportNode in ReportOC.getNodes( true, false ) )
                {
                    CswNbtObjClassReport NodeAsReport = ReportNode;
                    if( NodeAsReport.ReportName.Text == "Lab 1 Deficiencies" )
                    {
                        NodeAsReport.SQL.Text = reportSqlText;
                        NodeAsReport.postChanges( false );
                    }
                }
            }
        }//Update()
Exemplo n.º 13
0
        public static void getKioskModeBarcodeReport(ICswResources CswResources, KioskModeDataReturn Return, object KioskModeData)
        {
            CswNbtResources           NbtResources = (CswNbtResources)CswResources;
            CswNbtMetaDataObjectClass ReportOC     = NbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass);
            CswNbtSearch FindReport = new CswNbtSearch(NbtResources);

            FindReport.addFilter(ReportOC, false);
            FindReport.SearchType = CswEnumSqlLikeMode.Exact;
            FindReport.SearchTerm = "Kiosk Mode Barcodes";
            ICswNbtTree SearchResults = FindReport.Results();

            if (SearchResults.getChildNodeCount() > 0)
            {
                SearchResults.goToNthChild(0);
                CswNbtObjClassReport ReportNode = SearchResults.getNodeForCurrentPosition();
                Return.Data.ReportNode = ReportNode.NodeId.ToString();
                SearchResults.goToParentNode();
            }
        }
        public override void update()
        {
            const string ReportName = "Containers in Invalid Locations";
            string RealReportName = _getUniqueName( ReportName );

            CswNbtMetaDataNodeType ReportNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Report" );

            _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportNT.NodeTypeId, delegate( CswNbtNode NewNode )
                {
                    CswNbtObjClassReport AsReport = NewNode;

                    #region Set SQL Text

                    AsReport.SQL.Text = @"select c.Barcode,
 c.Material,
 c.Owner,
 c.Location
from container c
       join nodes n on c.Material_id = n.nodeid
       join nodes n2 on c.Location_id = n2.nodeid
 
       join jct_nodes_props jnp on jnp.nodeid = n.nodeid 
         and jnp.nodetypepropid = (select nodetypepropid from nodetype_props where propname = 'Storage Compatibility'
             and nodetypeid = 1014)
       join jct_nodes_props jnp2 on jnp2.nodeid = n2.nodeid
         and jnp2.nodetypepropid in (select nodetypepropid from nodetype_props where propname = 'Storage Compatibility'
             and nodetypeid in (select nodetypeid from nodetypes where objectclassid in (select objectclassid from object_class where objectclass = 'LocationClass')))
 
where (jnp2.clobdata is not null and dbms_lob.instr(jnp2.clobdata, jnp.clobdata) = 0)
      or (jnp.clobdata is null or dbms_lob.instr(jnp.clobdata, '0w') > 0)
      or( jnp2.clobdata is null or dbms_lob.instr(jnp2.clobdata, '0w') > 0)";

                    #endregion

                    AsReport.ReportName.Text = RealReportName;
                    AsReport.Category.Text = "Containers";
                    AsReport.ReportGroup.RelatedNodeId = _getCISProReportGroupNodeId();

                } );


        } // update()
Exemplo n.º 15
0
        public TierIIData getDuplicateMaterialsReport()
        {
            TierIIData Data = new TierIIData();
            CswNbtMetaDataObjectClass ReportOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass);
            CswNbtSearch FindReport            = new CswNbtSearch(_CswNbtResources);

            FindReport.addFilter(ReportOC, false);
            FindReport.SearchType = CswEnumSqlLikeMode.Exact;
            FindReport.SearchTerm = "Duplicate Chemicals";
            ICswNbtTree SearchResults = FindReport.Results();

            if (SearchResults.getChildNodeCount() > 0)
            {
                SearchResults.goToNthChild(0);
                CswNbtObjClassReport ReportNode = SearchResults.getNodeForCurrentPosition();
                Data.DuplicateMaterialsReportId = ReportNode.NodeId.ToString();
                SearchResults.goToParentNode();
            }
            return(Data);
        }
        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);
            }
        }
        // See CIS-52705 and schema script CswUpdateMetaData02K_Case31853
        public override void update()
        {
            // Change Control Zone "Name" property to "Control Zone Name"
            CswNbtMetaDataObjectClass ControlZoneOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ControlZoneClass );
            CswNbtMetaDataObjectClassProp CzNameOCP = ControlZoneOC.getObjectClassProp( "Name" );
            _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( CzNameOCP, CswEnumNbtObjectClassPropAttributes.propname, "Control Zone Name" );


            // Update parameter name in HMIS reports to "Control Zone Name"
            CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass );
            CswNbtSearch FindReport = _CswNbtSchemaModTrnsctn.CswNbtSearch;
            FindReport.addFilter( ReportOC, false );
            FindReport.SearchType = CswEnumSqlLikeMode.Begins;
            FindReport.SearchTerm = "HMIS";
            ICswNbtTree SearchResults = FindReport.Results();
            for( Int32 r = 0; r < SearchResults.getChildNodeCount(); r++ )
            {
                SearchResults.goToNthChild( r );
                CswNbtObjClassReport ReportNode = SearchResults.getNodeForCurrentPosition();
                ReportNode.WebService.Text = ReportNode.WebService.Text.Replace( "{Control_Zone}", "{Control Zone Name}" );
                ReportNode.postChanges( false );
                SearchResults.goToParentNode();
            }
        } // update()
Exemplo n.º 18
0
        public static ViewSelect.Response getViewSelect(CswNbtResources CswNbtResources, ViewSelect.Request Request)
        {
            ViewSelect.Response ret = new ViewSelect.Response();

            // Favorites and Recent
            ICswNbtUser User = CswNbtResources.CurrentNbtUser;

            if (User != null)
            {
                CswNbtObjClassUser UserOc = CswNbtResources.Nodes[User.UserId];

                // Recent
                if (Request.IncludeRecent)
                {
                    ViewSelect.Response.Category RecentCategory = _getCategory(ref ret, "Recent");
                    CswNbtResources.SessionDataMgr.getQuickLaunchJson(ref RecentCategory);
                }


                ViewSelect.Response.Category FavoritesCategory = _getCategory(ref ret, "Favorites");
                //Add the user's stored views to Favorites
                foreach (CswNbtView View in UserOc.FavoriteViews.SelectedViews.Values.Where(View => View.IsFullyEnabled()))
                {
                    ViewSelect.Response.Item ViewItem = _addViewSelectObj(FavoritesCategory,
                                                                          View.ViewName,
                                                                          CswEnumNbtViewItemType.View,
                                                                          View.IconFileName,
                                                                          View.ViewId.ToString());
                    ViewItem.mode = View.ViewMode.ToString();
                }

                if (Request.IncludeActions)
                {
                    //Add the user's stored actions to Favorites
                    DataTable ActionsTable = UserOc.FavoriteActions.GetDataAsTable(ActionName, ActionPk);
                    foreach (CswNbtAction Action in (from DataRow ActionRow in ActionsTable.Rows
                                                     where CswConvert.ToBoolean(ActionRow[ActionSelected])
                                                     select CswNbtAction.ActionNameStringToEnum(CswConvert.ToString(ActionRow[ActionPk]))
                                                     into NbtActionName
                                                     select CswNbtResources.Actions[NbtActionName]
                                                     into ThisAction
                                                     where null != ThisAction
                                                     select ThisAction))
                    {
                        if (Action.ShowInList)  //case 26555 - filter out actions like 'Multi Edit' or 'Edit View'
                        {
                            ViewSelect.Response.Item ActionItem = _addViewSelectObj(FavoritesCategory,
                                                                                    Action.DisplayName,
                                                                                    CswEnumNbtViewItemType.Action,
                                                                                    CswNbtMetaDataObjectClass.IconPrefix16 + Action.IconFileName,
                                                                                    Action.ActionId.ToString());
                            ActionItem.url = Action.Url;
                        }
                    } // foreach
                }     // if( Request.IncludeActions )
            }         // if( User != null )

            // Views
            Dictionary <CswNbtViewId, CswNbtView> Views = CswNbtResources.ViewSelect.getVisibleViews("lower(NVL(v.category, v.viewname)), lower(v.viewname)", CswNbtResources.CurrentNbtUser, false, false, Request.IsSearchable, CswEnumNbtViewRenderingMode.Any);

            foreach (CswNbtView View in Views.Values)
            {
                ViewSelect.Response.Item ViewItem = _addViewSelectObj(ref ret,
                                                                      View.Category,
                                                                      View.ViewName,
                                                                      CswEnumNbtViewItemType.View,
                                                                      View.IconFileName,
                                                                      View.ViewId.ToString());
                ViewItem.mode = View.ViewMode.ToString();
            }

            if (false == Request.IsSearchable)
            {
                // Actions
                if (Request.IncludeActions)
                {
                    foreach (CswNbtAction Action in CswNbtResources.Actions)
                    {
                        if (Action.ShowInList &&
                            //Case 23687: "View By Location" Action is toast. Bye-bye "loc_use_images" config var check.
                            CswNbtResources.Permit.can(Action.Name))
                        {
                            ViewSelect.Response.Item ActionItem = _addViewSelectObj(ref ret,
                                                                                    Action.Category,
                                                                                    Action.DisplayName,
                                                                                    CswEnumNbtViewItemType.Action,
                                                                                    CswNbtMetaDataObjectClass.IconPrefix16 + Action.IconFileName,
                                                                                    Action.ActionId.ToString());
                            ActionItem.url = Action.Url;
                        }
                    }
                }

                // Reports
                if (Request.IncludeReports)
                {
                    CswNbtMetaDataObjectClass ReportMetaDataObjectClass = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass);
                    CswNbtView ReportView = ReportMetaDataObjectClass.CreateDefaultView();
                    ReportView.ViewName = "CswViewTree.DataBinding.ReportView";
                    ICswNbtTree ReportTree = CswNbtResources.Trees.getTreeFromView(CswNbtResources.CurrentNbtUser, ReportView, true, false, false);
                    for (int i = 0; i < ReportTree.getChildNodeCount(); i++)
                    {
                        ReportTree.goToNthChild(i);

                        CswNbtObjClassReport ReportNode = ReportTree.getNodeForCurrentPosition();
                        _addViewSelectObj(ref ret,
                                          ReportNode.Category.Text,
                                          ReportNode.ReportName.Text,
                                          CswEnumNbtViewItemType.Report,
                                          CswNbtMetaDataObjectClass.IconPrefix16 + "doc.png",
                                          ReportNode.NodeId.ToString());

                        ReportTree.goToParentNode();
                    }
                }

                // Searches
                if (Request.IncludeSearches)
                {
                    Collection <CswNbtSearch> Searches = CswNbtResources.SearchManager.getSearches();
                    foreach (CswNbtSearch Search in Searches)
                    {
                        _addViewSelectObj(ref ret,
                                          Search.Category,
                                          Search.Name,
                                          CswEnumNbtViewItemType.Search,
                                          CswNbtMetaDataObjectClass.IconPrefix16 + "magglass.png",
                                          Search.SearchId.ToString());
                    }
                }
            } // if( false == Request.IsSearchable )

            return(ret);
        } // getViewSelect()
Exemplo n.º 19
0
        protected void CswViewTree_DataBinding(object sender, EventArgs e)
        {
            try
            {
                CswTimer DataBindTimer = new CswTimer();
                _CswNbtResources.logTimerResult("CswViewListTree.DataBind() started", DataBindTimer.ElapsedDurationInSecondsAsString);
                EnsureChildControls();

                // don't bother databinding on postback -- this prevents losing the currently selected node
                if (TreeView.SelectedNode == null)
                {
                    // BZ 8686
                    if (Page.Session[SessionCachedXmlName] != null && Page.Session[SessionCachedXmlName].ToString() != string.Empty)
                    {
                        TreeView.LoadXml(Page.Session[SessionCachedXmlName].ToString());
                    }
                    else
                    {
                        XmlDocument XmlDoc  = new XmlDocument();
                        XmlNode     DocRoot = XmlDoc.CreateElement("Tree");
                        XmlDoc.AppendChild(DocRoot);

                        // Views

                        Dictionary <CswNbtViewId, CswNbtView> Views = _CswNbtResources.ViewSelect.getVisibleViews("lower(NVL(v.category, v.viewname)), lower(v.viewname)", false);

                        foreach (CswNbtView View in Views.Values)
                        {
                            // BZ 10121
                            // This is a performance hit, but since this view list is cached, it's ok
                            CswNbtView CurrentView = new CswNbtView(_CswNbtResources);
                            CurrentView.LoadXml(View.ToXml());
                            CurrentView.ViewId = View.ViewId;

                            // if( CurrentView.IsFullyEnabled() ) -- Case 20452: getVisibleViews() does this already
                            XmlNode CategoryNode   = _getCategoryNode(DocRoot, View.Category);
                            bool    ThisSearchable = View.ToXml().ToString().Contains("<Filter");
                            CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, CurrentView.ViewId.ToString(), ViewType.View, CurrentView.ViewName, CurrentView.IconFileName, true, ThisSearchable));
                        }


                        // Actions

                        foreach (CswNbtAction Action in _CswNbtResources.Actions)
                        {
                            if (Action.ShowInList &&
                                (_CswNbtResources.ConfigVbls.getConfigVariableValue("loc_use_images") != "0") &&
                                _CswNbtResources.Permit.can(Action.Name))
                            {
                                XmlNode CategoryNode = _getCategoryNode(DocRoot, Action.Category);
                                CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, Action.ActionId.ToString(), ViewType.Action, Action.Name.ToString().Replace('_', ' '),
                                                                              CswNbtMetaDataObjectClass.IconPrefix16 + "wizard.png", true, false));
                            }
                        }


                        // Reports

                        CswNbtView ReportView = new CswNbtView(_CswNbtResources);
                        ReportView.ViewName = "CswViewTree.DataBinding.ReportView";
                        CswNbtMetaDataObjectClass ReportMetaDataObjectClass = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass);
                        CswNbtViewRelationship    ReportRelationship        = ReportView.AddViewRelationship(ReportMetaDataObjectClass, true);

                        ICswNbtTree ReportTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, ReportView, true, false, false);

                        for (int i = 0; i < ReportTree.getChildNodeCount(); i++)
                        {
                            ReportTree.goToNthChild(i);

                            CswNbtObjClassReport ReportNode = (CswNbtObjClassReport)ReportTree.getNodeForCurrentPosition();
                            XmlNode CategoryNode            = _getCategoryNode(DocRoot, ReportNode.Category.Text);
                            CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, ReportNode.NodeId.PrimaryKey.ToString(), ViewType.Report, ReportNode.ReportName.Text, "Images/view/report.gif", true, false));

                            ReportTree.goToParentNode();
                        }

                        TreeView.LoadXml(XmlDoc.InnerXml);
                        Page.Session.Add(SessionCachedXmlName, XmlDoc.InnerXml);
                    } // if-else( Page.Session[SessionCachedXmlName] != null && Page.Session[SessionCachedXmlName].ToString() != string.Empty )
                }     // if(TreeView.SelectedNode == null)

                _CswNbtResources.logTimerResult("CswViewListTree.DataBind() finished", DataBindTimer.ElapsedDurationInSecondsAsString);
            }
            catch (Exception ex)
            {
                HandleError(ex);
            }
        }
Exemplo n.º 20
0
        public int saveFile(string PropIdAttr, byte[] BlobData, string ContentType, string FileName, out string Href, int BlobDataId = Int32.MinValue, bool PostChanges = true, CswNbtNode Node = null)
        {
            CswPropIdAttr PropId = new CswPropIdAttr(PropIdAttr);

            CswNbtMetaDataNodeTypeProp MetaDataProp = _CswNbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);

            if (null == Node)
            {
                Node = _CswNbtResources.Nodes[PropId.NodeId];
            }
            CswNbtNodePropWrapper FileProp = Node.Properties[MetaDataProp];

            if (_CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, MetaDataProp.getNodeType(), _CswNbtResources.CurrentNbtUser) &&
                _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, MetaDataProp, null, FileProp))
            {
                if (Int32.MinValue == FileProp.JctNodePropId)
                {
                    FileProp.makePropRow(); //if we don't have a jct_node_prop row for this prop, we do now
                    if (PostChanges)
                    {
                        Node.postChanges(true);
                    }
                }

                if (FileProp.getFieldType().FieldType == CswEnumNbtFieldType.Image)
                {
                    //case 29692: support EXIF image rotation metadata to properly orient photos
                    bool         img_ok = false;
                    MemoryStream ms     = new MemoryStream(BlobData, 0, BlobData.Length);
                    ms.Write(BlobData, 0, BlobData.Length);
                    System.Drawing.Image img = null;

                    try
                    {
                        img    = Image.FromStream(ms, true);
                        img_ok = true;
                    }
                    catch
                    {
                    }

                    if (img_ok == true)
                    {
                        FixOrientation(ref img);
                        ImageConverter converter = new ImageConverter();
                        BlobData = (byte[])converter.ConvertTo(img, typeof(byte[]));
                    }
                }



                //Save the file to blob_data
                CswTableUpdate BlobUpdate  = _CswNbtResources.makeCswTableUpdate("saveBlob", "blob_data");
                string         whereClause = "where jctnodepropid = " + FileProp.JctNodePropId;
                if (Int32.MinValue != BlobDataId)
                {
                    whereClause += " and blobdataid = " + BlobDataId;
                }
                DataTable BlobTbl = BlobUpdate.getTable(whereClause);
                if (BlobTbl.Rows.Count > 0 &&
                    (Int32.MinValue != BlobDataId ||
                     FileProp.getFieldTypeValue() == CswEnumNbtFieldType.File ||
                     FileProp.getFieldTypeValue() == CswEnumNbtFieldType.MOL))
                {
                    BlobTbl.Rows[0]["blobdata"]    = BlobData;
                    BlobTbl.Rows[0]["contenttype"] = ContentType;
                    BlobTbl.Rows[0]["filename"]    = FileName;
                    BlobTbl.Rows[0]["auditlevel"]  = MetaDataProp.AuditLevel;
                    BlobDataId = CswConvert.ToInt32(BlobTbl.Rows[0]["blobdataid"]);
                }
                else
                {
                    DataRow NewRow = BlobTbl.NewRow();
                    NewRow["jctnodepropid"] = FileProp.JctNodePropId;
                    NewRow["blobdata"]      = BlobData;
                    NewRow["contenttype"]   = ContentType;
                    NewRow["filename"]      = FileName;
                    NewRow["auditlevel"]    = MetaDataProp.AuditLevel;
                    BlobDataId = CswConvert.ToInt32(NewRow["blobdataid"]);
                    BlobTbl.Rows.Add(NewRow);
                }
                BlobUpdate.update(BlobTbl);

                if (Node.getObjectClass().ObjectClass == CswEnumNbtObjectClass.ReportClass)
                {
                    CswNbtObjClassReport Report        = Node;
                    CswFilePath          FilePathTools = new CswFilePath(_CswNbtResources);
                    string ReportPath = FilePathTools.getFullReportFilePath(Report.RPTFile.JctNodePropId.ToString());
                    _createReportFile(ReportPath, Report.RPTFile.JctNodePropId, BlobData);
                }

                if (CswEnumNbtFieldType.File == FileProp.getFieldTypeValue())
                {
                    SetLastModified(FileProp);
                }

                FileProp.SyncGestalt();
                if (PostChanges)
                {
                    Node.postChanges(false);
                }

                Href = CswNbtNodePropBlob.getLink(FileProp.JctNodePropId, PropId.NodeId, BlobDataId);
            } //canNodeType() && isPropWritable()
            else
            {
                Href = string.Empty; //To satifsy the "ref string Href"
                throw new CswDniException(CswEnumErrorType.Error, "You do not have sufficient priveledges to save files", "User " + _CswNbtResources.CurrentNbtUser.UserId + " attemped to save blobdata on JctNodeProp " + FileProp.JctNodePropId);
            }
            return(BlobDataId);
        }
        private void processMailReport(CswNbtResources _CswNbtResources, CswNbtObjClassMailReport CurrentMailReport)
        {
            string EmailReportStatusMessage = string.Empty;

            if (false == CurrentMailReport.Recipients.Empty)
            {
                Collection <Int32> RecipientIds = CurrentMailReport.Recipients.SelectedUserIds.ToIntCollection();
                for (Int32 u = 0; u < RecipientIds.Count; u++)
                {
                    Int32 UserId = CswConvert.ToInt32(RecipientIds[u].ToString());

                    if (Int32.MinValue != UserId)
                    {
                        CswNbtNode         UserNode            = _CswNbtResources.Nodes[new CswPrimaryKey("nodes", UserId)];
                        CswNbtObjClassUser UserNodeAsUser      = (CswNbtObjClassUser)UserNode;
                        string             CurrentEmailAddress = UserNodeAsUser.Email.Trim();
                        if (CurrentEmailAddress != string.Empty)
                        {
                            DataTable            ReportTable    = null;
                            CswNbtObjClassReport ReportObjClass = null;

                            string EmailMessageSubject = CurrentMailReport.NodeName;
                            string EmailMessageBody    = string.Empty;
                            bool   SendMail            = false;

                            if ("View" == CurrentMailReport.Type.Value)
                            {
                                CswNbtViewId ViewId = CurrentMailReport.ReportView.ViewId;
                                if (ViewId.isSet())
                                {
                                    CswNbtView  ReportView = _CswNbtResources.ViewSelect.restoreView(ViewId);
                                    ICswNbtTree ReportTree = _CswNbtResources.Trees.getTreeFromView(
                                        RunAsUser: UserNodeAsUser as ICswNbtUser,
                                        View: ReportView,
                                        RequireViewPermissions: true,
                                        IncludeSystemNodes: false,
                                        IncludeHiddenNodes: false);
                                    //ICswNbtTree ReportTree = _CswNbtResources.Trees.getTreeFromView( UserNodeAsUser as ICswNbtUser, ReportView, true, true, false, false );

                                    if (ReportTree.getChildNodeCount() > 0)
                                    {
                                        if (CswEnumNbtMailReportEventOption.Exists.ToString() != CurrentMailReport.Event.Value)
                                        {
                                            // case 27720 - check mail report events to find nodes that match the view results
                                            Dictionary <CswPrimaryKey, string> NodesToMail = new Dictionary <CswPrimaryKey, string>();
                                            foreach (Int32 NodeId in CurrentMailReport.GetNodesToReport().ToIntCollection())
                                            {
                                                CswPrimaryKey ThisNodeId = new CswPrimaryKey("nodes", NodeId);
                                                ReportTree.makeNodeCurrent(ThisNodeId);
                                                if (ReportTree.isCurrentNodeDefined())
                                                {
                                                    NodesToMail.Add(ThisNodeId, ReportTree.getNodeNameForCurrentPosition());
                                                }
                                            }
                                            if (NodesToMail.Count > 0)
                                            {
                                                EmailMessageBody = _makeEmailBody(_CswNbtResources, CurrentMailReport, string.Empty, NodesToMail);
                                                SendMail         = true;
                                            }
                                        }
                                        else
                                        {
                                            EmailMessageBody = _makeEmailBody(_CswNbtResources, CurrentMailReport, _makeViewLink(_CswNbtResources, ViewId, ReportView.ViewName));
                                            SendMail         = true;
                                        }
                                    } // if( ReportTree.getChildNodeCount() > 0 )
                                }     // if( ViewId.isSet() )
                                else
                                {
                                    EmailReportStatusMessage += "Unable to process email report " + CurrentMailReport.Node.NodeName + ": the associated view's ViewId is not set\r\n";
                                }
                            } // if( "View" == CurrentMailReport.Type.Value )

                            else if ("Report" == CurrentMailReport.Type.Value)
                            {
                                ReportObjClass = (CswNbtObjClassReport)_CswNbtResources.Nodes[CurrentMailReport.Report.RelatedNodeId];
                                if (null != ReportObjClass)
                                {
                                    string ReportSql = CswNbtObjClassReport.ReplaceReportParams(ReportObjClass.SQL.Text, ReportObjClass.ExtractReportParams(UserNode));

                                    CswArbitrarySelect ReportSelect = _CswNbtResources.makeCswArbitrarySelect("MailReport_" + ReportObjClass.NodeId.ToString() + "_Select", ReportSql);
                                    ReportTable = ReportSelect.getTable();

                                    if (ReportTable.Rows.Count > 0)
                                    {
                                        string ReportLink = string.Empty;
                                        CswEnumNbtMailReportFormatOptions MailRptFormat = CurrentMailReport.OutputFormat.Value;
                                        if (CswEnumNbtMailReportFormatOptions.Link == MailRptFormat)
                                        {
                                            ReportLink  = _makeReportLink(_CswNbtResources, ReportObjClass);
                                            ReportTable = null; //so we don't end up attaching the CSV
                                        }

                                        EmailMessageBody = _makeEmailBody(_CswNbtResources, CurrentMailReport, ReportLink);
                                        SendMail         = true;
                                    }
                                }
                                else
                                {
                                    EmailReportStatusMessage += "Unable to process email report " + CurrentMailReport.Node.NodeName + ": the associated report's NodeId is not set\r\n";
                                } //if-else report's node id is present
                            }     // else if( "Report" == CurrentMailReport.Type.Value )

                            else
                            {
                                EmailReportStatusMessage += "Unable to process email report " + CurrentMailReport.Node.NodeName + ": the report type " + CurrentMailReport.Type.Value + " is unknown\r\n";
                            }//if-else-if on report type


                            if (SendMail)
                            {
                                EmailReportStatusMessage += _sendMailMessage(_CswNbtResources, CurrentMailReport, EmailMessageBody, UserNodeAsUser.LastName, UserNodeAsUser.FirstName, UserNodeAsUser.Node.NodeName, EmailMessageSubject, CurrentEmailAddress, ReportTable) + "\r\n";
                            }
                        } //if( Email Address != string.Empty )
                    }     //if( Int32.MinValue != UserId )
                }         //for( Int32 u = 0; u < BatchData.RecipientIds.Count() && u < NodeLimit; u++ )

                // case 27720, 28006, 31205, 30959
                CurrentMailReport.ClearNodesToReport();
                CurrentMailReport.LastProcessed.DateTimeValue = DateTime.Now;

                CurrentMailReport.RunStatus.AddComment(EmailReportStatusMessage);
                CurrentMailReport.postChanges(false);
            } //if( !CurrentMailReport.Recipients.Empty )
        }     //processMailReport()
Exemplo n.º 22
0
        public override void update()
        {
            #region OC Props

            CswNbtMetaDataObjectClass InventoryLevelOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.InventoryLevelClass );
            CswNbtMetaDataObjectClassProp MaterialProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Material );
            CswNbtMetaDataObjectClassProp LocationProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Location );
            CswNbtMetaDataObjectClassProp TypeProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Type );
            CswNbtMetaDataObjectClassProp LevelProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Level );
            CswNbtMetaDataObjectClassProp CurrentQuantityProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.CurrentQuantity );
            CswNbtMetaDataObjectClassProp StatusProp = InventoryLevelOC.getObjectClassProp( CswNbtObjClassInventoryLevel.PropertyName.Status );

            CswNbtMetaDataObjectClass LocationOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.LocationClass );
            CswNbtMetaDataObjectClassProp LocInventoryGroupProp = LocationOC.getObjectClassProp( CswNbtObjClassLocation.PropertyName.InventoryGroup );

            CswNbtMetaDataObjectClass InventoryGroupPermissionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.InventoryGroupPermissionClass );
            CswNbtMetaDataObjectClassProp IGPInventoryGroupProp = InventoryGroupPermissionOC.getObjectClassProp( CswNbtObjClassInventoryGroupPermission.PropertyName.InventoryGroup );
            CswNbtMetaDataObjectClassProp IGPWorkUnitProp = InventoryGroupPermissionOC.getObjectClassProp( CswNbtObjClassInventoryGroupPermission.PropertyName.WorkUnit );
            CswNbtMetaDataObjectClassProp IGPRoleProp = InventoryGroupPermissionOC.getObjectClassProp( CswNbtObjClassInventoryGroupPermission.PropertyName.Role );

            CswNbtMetaDataObjectClass UserOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.UserClass );
            CswNbtMetaDataObjectClassProp WorkUnitProp = UserOC.getObjectClassProp( CswNbtObjClassUser.PropertyName.WorkUnit );
            CswNbtMetaDataObjectClassProp RoleProp = UserOC.getObjectClassProp( CswNbtObjClassUser.PropertyName.Role );

            #endregion OC Props

            #region SQL Query Template

            String SqlText = @"
              select 
                il.op_{0} as Material, 
                il.op_{1} as LOCATION, 
                il.op_{2} as TYPE, 
                il.op_{3} as inventorylevel, 
                il.op_{4} as CurrentQuantity, 
                il.op_{5} as Status
              from ocinventorylevelclass il
                inner join oclocationclass l on l.nodeid = il.op_{1}_fk
                inner join ocinventorygroupclass ig on ig.nodeid = l.op_{6}_fk
                inner join (select * from ocinventorygrouppermissioncl) igp on igp.op_{7}_fk = ig.nodeid
                inner join ocworkunitclass wu on wu.nodeid = igp.op_{8}_fk
                inner join (select * from ocuserclass) u on u.op_{9}_fk = wu.nodeid
              where il.op_{5} != 'Ok'
                and u.op_{11}_fk = igp.op_{10}_fk
                and u.nodeid = {12}";

            #endregion SQL Query Template

            String SelectText = String.Format( SqlText,
                MaterialProp.PropId,
                LocationProp.PropId,
                TypeProp.PropId,
                LevelProp.PropId,
                CurrentQuantityProp.PropId,
                StatusProp.PropId,
                LocInventoryGroupProp.PropId,
                IGPInventoryGroupProp.PropId,
                IGPWorkUnitProp.PropId,
                WorkUnitProp.PropId,
                IGPRoleProp.PropId,
                RoleProp.PropId,
                "{userid}"
            );

            CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.ReportClass );
            CswNbtMetaDataNodeType ReportNT = ReportOC.FirstNodeType;
            if( null != ReportNT )
            {
                CswNbtObjClassReport ReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                ReportNode.ReportName.Text = "Deficient Inventory Levels";
                ReportNode.Category.Text = "Containers";
                ReportNode.SQL.Text = SelectText;
                ReportNode.postChanges( false );

                CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MailReportClass );
                CswNbtMetaDataNodeType MailReportNT = MailReportOC.FirstNodeType;
                if( null != MailReportNT )
                {
                    CswNbtMetaDataNodeTypeProp MailReportNameNTP = MailReportNT.getNodeTypeProp( "Name" );
                    CswNbtObjClassMailReport MailReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                    if( null != MailReportNameNTP )
                    {
                        MailReportNode.Node.Properties[MailReportNameNTP].AsText.Text = "Deficient Inventory Levels";
                    }
                    MailReportNode.OutputFormat.Value = "link";
                    MailReportNode.Type.Value = CswNbtObjClassMailReport.TypeOptionReport;
                    MailReportNode.Report.RelatedNodeId = ReportNode.NodeId;
                    MailReportNode.Message.Text = "The following levels are above maximum inventory or below minimum inventory:";
                    MailReportNode.Enabled.Checked = Tristate.True;

                    CswRateInterval DailyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                    DailyRate.setHourly( 24, DateTime.Today );
                    MailReportNode.DueDateInterval.RateInterval = DailyRate;

                    MailReportNode.postChanges( true );
                }
            }            
        }//Update()
 private string _makeReportLink(CswNbtResources _CswNbtResources, CswNbtObjClassReport ReportObjClass)
 {
     return(_makeLink(_CswNbtResources, "Main.html?reportid=" + ReportObjClass.NodeId.ToString(), ReportObjClass.ReportName.Text));
 }
Exemplo n.º 24
0
        private static DataTable _getReportTable( ICswResources CswResources, CswNbtWebServiceReport.ReportData reportParams )
        {
            CswNbtResources NbtResources = (CswNbtResources) CswResources;
            DataTable rptDataTbl = null;
            reportParams.ReportNode = NbtResources.Nodes[reportParams.NodeId];
            if( null != reportParams.ReportNode )
            {
                if( false == string.IsNullOrEmpty( reportParams.ReportNode.WebService.Text ) )
                {

                    // See cases: 28562, 31102, 31147, 31190
                    // All of my efforts to get this report to execute using self-referencing webservices have failed.
                    // If I use 'localhost', I get SSL errors with https://.
                    // If I use a real URL, like 'https://nbtdaily.chemswlive.com/CiTest/', then I simply get empty strings back.
                    // So I'm going to use reflection to find and execute the method instead.


                    ////// case 31102
                    ////// Determine the webservice URL from the request URL
                    ////// Use 'localhost' however, since daily/prod may not be able to see its own DNS
                    //////string thisUrl = reportParams.Context.Request.Url.AbsoluteUri;
                    ////string thisUrl = reportParams.Context.Request.Url.Scheme + "://localhost" + reportParams.Context.Request.Url.LocalPath;
                    ////string thisUrlBase = thisUrl.Substring( 0, thisUrl.IndexOf( "/Services/" ) + "/Services/".Length );
                    ////string WebServiceUrl = thisUrlBase + CswNbtObjClassReport.ReplaceReportParams( reportParams.ReportNode.WebService.Text, reportParams.ReportParamDictionary );
                    //string WebServiceUrl = NbtResources.SetupVbls[CswEnumSetupVariableNames.MailReportUrlStem] + "Services/" + CswNbtObjClassReport.ReplaceReportParams( reportParams.ReportNode.WebService.Text, reportParams.ReportParamDictionary );

                    //HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create( WebServiceUrl );
                    //request.Method = "GET";
                    //request.CookieContainer = new CookieContainer();
                    //foreach( string c in reportParams.Context.Request.Cookies.Keys )
                    //{
                    //    HttpCookie cookie = reportParams.Context.Request.Cookies[c];
                    //    if( cookie.Name == "CswSessionId" )
                    //    {
                    //        request.CookieContainer.Add( new Cookie()
                    //            {
                    //                Name = cookie.Name,
                    //                Value = cookie.Value,
                    //                Domain = "localhost",
                    //                Path = cookie.Path
                    //            } );
                    //    }
                    //}
                    //HttpWebResponse response = (HttpWebResponse) request.GetResponse();
                    //rptDataTbl = new DataTable();

                    //StreamReader sr = new StreamReader( response.GetResponseStream() );
                    //string result = sr.ReadToEnd();
                    //result = result.Replace( @"\", "" );
                    //if( result.StartsWith( "\"" ) )
                    //{
                    //    result = result.Substring( 1, result.Length - 2 );
                    //}
                    ////result = @"<?xml version=""1.0"" encoding=""utf-8""?>" + result;
                    ////rptDataTbl.ReadXml( response.GetResponseStream() );
                    //if( false == string.IsNullOrEmpty( result ) )
                    //{
                    //    rptDataTbl.ReadXml( new StringReader( result ) );
                    //}


                    // reportParams.ReportNode.WebService.Text is something like "RegulatoryReporting/getHMISDataTable?ControlZone={Name}"
                    string[] WebServiceStr = reportParams.ReportNode.WebService.Text.Split( '/' );
                    string wsClassName = "NbtWebApp." + WebServiceStr[0];
                    string[] rawParams = WebServiceStr[WebServiceStr.Length - 1].Split( new char[] { '?', '&' } );
                    string wsMethodName = rawParams[0];
                    object[] wsParams = new object[rawParams.Length - 1];
                    for( Int32 w = 1; w < rawParams.Length; w++ )
                    {
                        string[] thisParam = rawParams[w].Split( '=' );
                        string paramValue = CswNbtObjClassReport.ReplaceReportParams( thisParam[1], reportParams.ReportParamDictionary );
                        wsParams[w - 1] = paramValue;
                    }

                    Type classInfo = Type.GetType( wsClassName );
                    if( null != classInfo )
                    {
                        var classInstance = classInfo.GetConstructor( System.Type.EmptyTypes ).Invoke( null );
                        MethodInfo methodInfo = classInfo.GetMethod( wsMethodName );
                        if( null != methodInfo )
                        {
                            rptDataTbl = (DataTable) methodInfo.Invoke( classInstance, wsParams );
                        }
                    }
                }
                else if( false == string.IsNullOrEmpty( reportParams.ReportNode.SQL.Text ) )
                {
                    string ReportSql = "";
                    //Case 30293: We are not trying to solve all of the (usability) issues with SQL Reporting today;
                    //rather, we just want to return friendlier errors when SQL faults occur
                    try
                    {
                        ReportSql = CswNbtObjClassReport.ReplaceReportParams( reportParams.ReportNode.SQL.Text, reportParams.ReportParamDictionary );
                        CswArbitrarySelect cswRptSql = NbtResources.makeCswArbitrarySelect( "report_sql", ReportSql );

                        reportParams.RowLimit = CswConvert.ToInt32( NbtResources.ConfigVbls.getConfigVariableValue( CswEnumNbtConfigurationVariables.sql_report_resultlimit.ToString() ) );
                        if( 0 >= reportParams.RowCount )
                        {
                            reportParams.RowCount = 500;
                        }

                        //Getting 1 more than RowLimit in order to determine if truncation occurred
                        rptDataTbl = cswRptSql.getTable( PageLowerBoundExclusive: 0, PageUpperBoundInclusive: reportParams.RowLimit + 1, RequireOneRow: false );
                        if( string.IsNullOrEmpty( rptDataTbl.TableName ) && null != reportParams.ReportNode )
                        {
                            rptDataTbl.TableName = reportParams.ReportNode.ReportName.Text;
                        }
                    }
                    catch( CswSqlException CswException )
                    {
                        CswDniException NewException = new CswDniException( CswEnumErrorType.Warning, "SQL Execution failed with error: " + CswException.OracleError, "Could not execute SQL: {" + CswException.Sql + "}", CswException );
                        //CswException.Add( NewException );
                        throw NewException;
                    }
                    catch( Exception Ex )
                    {
                        throw new CswDniException( CswEnumErrorType.Warning, "Invalid SQL.", "Could not execute SQL: {" + ReportSql + "}", Ex );
                    }
                    finally
                    {
                        if( null != rptDataTbl )
                        {
                            reportParams.RowCount = rptDataTbl.Rows.Count;
                            reportParams.Truncated = reportParams.RowCount > reportParams.RowLimit;
                            if( reportParams.Truncated )
                            {
                                rptDataTbl.Rows.RemoveAt( reportParams.RowCount - 1 );
                                reportParams.RowCount -= 1;
                            }
                        }
                    }
                }
                else
                {
                    throw ( new CswDniException( "Report has no SQL to run!" ) );
                }
            }
            return rptDataTbl;
        }