Exemplo n.º 1
0
        } // Run()

        public JObject getView(string ViewId, ICswNbtUser CurrentUser)
        {
            JObject RetJson = new JObject();

            // Get the full XML for the entire view
            CswNbtViewId NbtViewId = new CswNbtViewId(ViewId);

            if (NbtViewId.isSet())
            {
                CswNbtView View = _CswNbtResources.ViewSelect.restoreView(NbtViewId);

                // case 20083
                if (_ForMobile)
                {
                    RetJson.Add(_getSearchNodes(View));
                }

                ICswNbtTree Tree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, View, true, false, false);

                if (Tree.getChildNodeCount() > 0)
                {
                    JObject NodesObj = new JObject();
                    RetJson["nodes"] = NodesObj;
                    _runTreeNodesRecursive(Tree, NodesObj);
                }
                else
                {
                    RetJson["nodes"] = new JObject();
                    RetJson["nodes"][NodeIdPrefix + Int32.MinValue] = "No Results";
                }
            }

            return(RetJson);
        } // Run()
 private static CswNbtView _getView( CswNbtResources NbtResources, CswNbtViewId ViewId )
 {
     CswNbtView Ret = null;
     if( ViewId.isSet() )
     {
         Ret = NbtResources.ViewSelect.restoreView( ViewId );
     }
     return Ret;
 }
        public override void update()
        {

            //get all views and find the dispense requests view
            DataTable Views = _CswNbtSchemaModTrnsctn.ViewSelect.getAllViews();
            CswNbtViewId dispenseRequestsViewId = new CswNbtViewId();
            foreach( DataRow row in Views.Rows )
            {
                if( row["viewname"].Equals( "Dispense Requests: Open" ) )
                {
                    dispenseRequestsViewId.set( CswConvert.ToInt32( row["nodeviewid"] ) );
                }
            }

            /*
             * The dispense requests view is broken. It has THREE 'Status' properties, each with different filters
             */

            if( dispenseRequestsViewId.isSet() )
            {
                CswNbtView DispenseRequestsView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( dispenseRequestsViewId );
                LinkedList<CswNbtViewProperty> viewProps = DispenseRequestsView.getOrderedViewProps( false );
                CswNbtViewRelationship parent = null;
                foreach( CswNbtViewProperty viewProp in viewProps ) //delete the 3 duplicate 'Status' view props from this view
                {
                    if( viewProp.Name.Equals( "Status" ) )
                    {
                        DispenseRequestsView.removeViewProperty( viewProp.MetaDataProp );
                    }
                    else
                    {
                        parent = (CswNbtViewRelationship) viewProp.Parent; //get the view parent to add the Status prop later (in this specific case this get the root)
                    }
                }

                //add the property to the view ONCE
                CswNbtMetaDataObjectClass requestItemOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestItemClass );
                CswNbtViewProperty statusVP = DispenseRequestsView.AddViewProperty( parent, requestItemOC.getObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Status ) );

                //now add the filters
                DispenseRequestsView.AddViewPropertyFilter( statusVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, Value: "Completed" );
                DispenseRequestsView.AddViewPropertyFilter( statusVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, Value: "Cancelled" );

                DispenseRequestsView.save();
            }

        }//Update()
        public override CswNbtViewEditorData GetStepData()
        {
            CswNbtViewEditorData Return = new CswNbtViewEditorData();

            if (null == CurrentView)
            {
                CswNbtViewId selectedViewId = new CswNbtViewId();
                if (CswNbtSessionDataId.isSessionDataIdString(Request.ViewId))
                {
                    CswNbtSessionDataId sessionDataId = new CswNbtSessionDataId(Request.ViewId);
                    if (sessionDataId.isSet())
                    {
                        selectedViewId = _CswNbtResources.ViewSelect.getSessionView(sessionDataId).ViewId;
                    }
                }

                if (false == selectedViewId.isSet())
                {
                    selectedViewId = new CswNbtViewId(Request.ViewId);
                }

                CurrentView = _CswNbtResources.ViewSelect.restoreView(selectedViewId);
            }

            if (null != CurrentView)
            {
                CswNbtView TempView = new CswNbtView(_CswNbtResources);
                if (CurrentView.Visibility.Equals(CswEnumNbtViewVisibility.Property))
                {
                    _getPropertyViewProps(TempView, Return);
                }
                else
                {
                    _getViewProps(TempView, Return);
                }
            }

            base.Finalize(Return);
            return(Return);
        }
        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.º 6
0
        /// <summary>
        /// Update logic
        /// </summary>
        public override void update()
        {

            #region PART 1 - Hide the settings tab on the Equipment/Assembly Schedule NT

            List<int> ntpIdsToHide = new List<int>();

            //get the props from the Settings tab and then delete the tab on Equipment Schedule
            CswNbtMetaDataNodeType equipmentScheduleNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Equipment Schedule" );
            if( null != equipmentScheduleNT )
            {
                foreach( CswNbtMetaDataNodeTypeTab tab in equipmentScheduleNT.getNodeTypeTabs() )
                {
                    if( tab.TabName.Equals( "Settings" ) )
                    {
                        foreach( CswNbtMetaDataNodeTypeProp ntp in tab.getNodeTypeProps() )
                        {
                            ntpIdsToHide.Add( ntp.PropId );
                        }
                        _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeTypeTab( tab );
                    }
                }
            }

            //get the props from the Settings tab and then delete the tab on Assembly Schedule
            CswNbtMetaDataNodeType assemblyScheduleNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Assembly Schedule" );
            if( null != assemblyScheduleNT )
            {
                foreach( CswNbtMetaDataNodeTypeTab tab in assemblyScheduleNT.getNodeTypeTabs() )
                {
                    if( tab.TabName.Equals( "Settings" ) )
                    {
                        foreach( CswNbtMetaDataNodeTypeProp ntp in tab.getNodeTypeProps() )
                        {
                            ntpIdsToHide.Add( ntp.PropId );
                        }
                        _CswNbtSchemaModTrnsctn.MetaData.DeleteNodeTypeTab( tab );
                    }
                }
            }

            //hide the props
            foreach( int ntpId in ntpIdsToHide )
            {
                CswNbtMetaDataNodeTypeProp ntp = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( ntpId );
                ntp.removeFromAllLayouts();
            }

            #endregion

            #region PART 2 - Delete the SI Configuration category and all the views in it

            //get the doomed view ids
            CswTableSelect node_viewsTS = _CswNbtSchemaModTrnsctn.makeCswTableSelect( "deleteSIViews_27780", "node_views" );
            CswCommaDelimitedString selectCols = new CswCommaDelimitedString();
            selectCols.FromString( "nodeviewid" );
            DataTable node_views = node_viewsTS.getTable( selectCols, "where category = 'SI Configuration'" );

            foreach( DataRow row in node_views.Rows )
            {
                int viewidInt = CswConvert.ToInt32( row["nodeviewid"] );
                CswNbtViewId viewid = new CswNbtViewId();
                viewid.set( viewidInt );
                if( viewid.isSet() )
                {
                    CswNbtView doomedView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( viewid );
                    doomedView.Delete();
                }
            }

            #endregion

        }