Example #1
0
        internal CswNbtNode createGeneratorNode(CswEnumRateIntervalType IntervalType, String NodeTypeName = "Equipment Schedule", int WarningDays = 0, SortedList Days = null, DateTime?StartDate = null)
        {
            CswNbtNode ret = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(_getNodeTypeId(NodeTypeName), delegate(CswNbtNode NewNode)
            {
                CswNbtObjClassGenerator GeneratorNode = NewNode;
                CswRateInterval RateInt = new CswRateInterval(_CswNbtResources);
                DateTime StDate         = StartDate != null ? (DateTime)StartDate : new DateTime(2012, 1, 15);
                if (IntervalType == CswEnumRateIntervalType.WeeklyByDay)
                {
                    if (null == Days)
                    {
                        Days = new SortedList {
                            { DayOfWeek.Monday, DayOfWeek.Monday }
                        };
                    }
                    RateInt.setWeeklyByDay(Days, StDate);
                }
                else if (IntervalType == CswEnumRateIntervalType.MonthlyByDate)
                {
                    RateInt.setMonthlyByDate(1, StDate.Day, StDate.Month, StDate.Year);
                }
                GeneratorNode.DueDateInterval.RateInterval = RateInt;
                GeneratorNode.WarningDays.Value            = WarningDays;
                //GeneratorNode.postChanges( ForceUpdate: false );
            });

            _finalize();

            return(ret);
        } // createGeneratorNode()
        public void WeeklyByDayTest()
        {
            CswRateInterval r         = new CswRateInterval(_CswResources);
            DateTime        StartDate = new DateTime(2012, 10, 5);
            SortedList      Days      = new SortedList();

            Days.Add(DayOfWeek.Monday, DayOfWeek.Monday);
            Days.Add(DayOfWeek.Wednesday, DayOfWeek.Wednesday);
            Days.Add(DayOfWeek.Friday, DayOfWeek.Friday);
            r.setWeeklyByDay(Days, StartDate);

            Assert.AreEqual(r.getFirst(), StartDate);
            DateTime CurrentDate = StartDate;

            for (Int32 i = 1; i <= 365; i++)
            {
                CurrentDate = CurrentDate.AddDays(1);
                DateTime TargetDate = CurrentDate.AddDays(1);
                while (TargetDate.DayOfWeek != DayOfWeek.Monday &&
                       TargetDate.DayOfWeek != DayOfWeek.Wednesday &&
                       TargetDate.DayOfWeek != DayOfWeek.Friday)
                {
                    TargetDate = TargetDate.AddDays(1);
                }
                Assert.AreEqual(r.getNext(CurrentDate), TargetDate);
            }
        }
Example #3
0
        public override void ReadJSON(JObject JObject, Dictionary <Int32, Int32> NodeMap, Dictionary <Int32, Int32> NodeTypeMap)
        {
            CswRateInterval NewRateInterval = new CswRateInterval(_CswNbtResources);

            NewRateInterval.ReadJson((JObject)JObject[_IntervalSubField.ToXmlNodeName()]);
            // Setting RateInterval triggers the change to the property value -- don't skip this step
            RateInterval = NewRateInterval;
        }
        public override void update()
        {
            // Create a demo mail report (notification)

            CswNbtMetaDataObjectClass UserOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.UserClass );
            CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MailReportClass );

            CswNbtMetaDataNodeType MailReportNT = MailReportOC.FirstNodeType;
            CswNbtMetaDataNodeTypeProp MailReportNameNTP = MailReportNT.getNodeTypeProp( "Name" );

            CswNbtMetaDataNodeType UserNT = UserOC.FirstNodeType;
            CswNbtMetaDataNodeTypeProp UserLockedNTP = UserNT.getNodeTypePropByObjectClassProp( CswNbtObjClassUser.PropertyName.AccountLocked );


            if( null != MailReportNT && null != UserNT )
            {
                CswNbtObjClassMailReport MailReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                if( null != MailReportNameNTP )
                {
                    MailReportNode.Node.Properties[MailReportNameNTP].AsText.Text = "Locked Users Notification";
                }
                MailReportNode.OutputFormat.Value = "link";

                MailReportNode.Type.Value = CswNbtObjClassMailReport.TypeOptionView;
                MailReportNode.Event.Value = CswNbtObjClassMailReport.EventOption.Edit.ToString();
                MailReportNode.TargetType.SelectedNodeTypeIds.Add( UserNT.NodeTypeId.ToString() );
                MailReportNode.Message.Text = "The following user accounts have been locked:";
                MailReportNode.Enabled.Checked = Tristate.False;
                MailReportNode.IsDemo = true;

                CswRateInterval HourlyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                HourlyRate.setHourly( 1, DateTime.Now );
                MailReportNode.DueDateInterval.RateInterval = HourlyRate;

                CswNbtObjClassUser AdminUser = _CswNbtSchemaModTrnsctn.Nodes.makeUserNodeFromUsername( "admin" );
                if( null != AdminUser )
                {
                    MailReportNode.Recipients.AddUser( AdminUser.UserId );
                }

                MailReportNode.postChanges( true );

                CswNbtView ReportView = _CswNbtSchemaModTrnsctn.restoreView( MailReportNode.ReportView.ViewId );
                ReportView.Root.ChildRelationships.Clear();
                CswNbtViewRelationship UserRel = ReportView.AddViewRelationship( UserNT, false );
                ReportView.AddViewPropertyAndFilter( UserRel, UserLockedNTP, Tristate.True.ToString() );
                ReportView.save();

            } // if( null != MailReportNT )

        }//Update()
        public void MonthlyByDateTest()
        {
            CswRateInterval r         = new CswRateInterval(_CswResources);
            DateTime        StartDate = new DateTime(2012, 10, 15);

            r.setMonthlyByDate(1, 15, 10, 2012);
            Assert.AreEqual(r.getFirst(), StartDate);
            DateTime CurrentDate = StartDate;

            for (Int32 i = 1; i <= 24; i++)
            {
                CurrentDate = CurrentDate.AddMonths(1);
                Assert.AreEqual(r.getNext(CurrentDate), CurrentDate.AddMonths(1));
            }
        }
Example #6
0
 private void _init(string clobData)
 {
     SetPropRowValue(_ClobDataSubField, clobData);
     if (clobData != string.Empty)  //The Default Value might be empty
     {
         XmlDocument XmlDoc = new XmlDocument();
         XmlDoc.LoadXml(clobData);
         RateInterval = new CswRateInterval(_CswNbtResources, XmlDoc.FirstChild);
     }
     else
     {
         // Bypass RateInterval's set method to prevent it from appearing to be modified,
         // and thus preventing default value from being set (case 31797)
         _RateInterval = new CswRateInterval(_CswNbtResources);
     }
 }
Example #7
0
        public override void ReadDataRow(DataRow PropRow, Dictionary <string, Int32> NodeMap, Dictionary <Int32, Int32> NodeTypeMap)
        {
            //RateInterval = new CswRateInterval( PropRow[_IntervalSubField.ToXmlNodeName()].ToString() );
            if (PropRow.Table.Columns.Contains(_IntervalSubField.ToXmlNodeName()))
            {
                string      IntervalXmlAsString = CswTools.XmlRealAttributeName(PropRow[_IntervalSubField.ToXmlNodeName()].ToString());
                XmlDocument Doc          = new XmlDocument();
                XmlNode     IntervalNode = CswXmlDocument.SetDocumentElement(Doc, _IntervalSubField.ToXmlNodeName());
                IntervalNode.InnerXml = IntervalXmlAsString.Trim();

                CswRateInterval NewRateInterval = new CswRateInterval(_CswNbtResources);
                NewRateInterval.ReadXml(IntervalNode);
                // Setting RateInterval triggers the change to the property value -- don't skip this step
                RateInterval = NewRateInterval;
            }
        }
        public void HourlyTest()
        {
            CswRateInterval r         = new CswRateInterval(_CswResources);
            DateTime        StartDate = new DateTime(2012, 10, 5);

            for (Int32 h = 1; h < 24; h++)
            {
                r.setHourly(h, StartDate);
                Assert.AreEqual(r.getFirst(), StartDate);
                DateTime CurrentDate = StartDate;
                for (Int32 d = 1; d <= 10; d++)
                {
                    CurrentDate = CurrentDate.AddHours(h);
                    Assert.AreEqual(r.getNext(CurrentDate), CurrentDate.AddHours(h));
                }
            }
        }
        public void MonthlyByWeekAndDayTest()
        {
            CswRateInterval r         = new CswRateInterval(_CswResources);
            DateTime        StartDate = new DateTime(2012, 10, 8);

            r.setMonthlyByWeekAndDay(1, 2, DayOfWeek.Monday, 10, 2012);
            Assert.AreEqual(r.getFirst(), StartDate);
            DateTime CurrentDate = StartDate;

            for (Int32 i = 1; i <= 24; i++)
            {
                CurrentDate = CurrentDate.AddMonths(1);
                DateTime TargetDate = CurrentDate;
                while (TargetDate.Day < 15 && TargetDate.DayOfWeek != DayOfWeek.Monday)
                {
                    TargetDate = TargetDate.AddDays(1);
                }
                Assert.AreEqual(r.getNext(CurrentDate.AddDays(-1)), TargetDate);
            }
        }
        public override void update()
        {
            CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MailReportClass );
            CswNbtMetaDataNodeType MailReportNT = MailReportOC.FirstNodeType;
            CswNbtMetaDataNodeTypeProp MailReportNameNTP = MailReportNT.getNodeTypeProp( "Name" );

            if( null != MailReportNT )
            {
                if( _CswNbtSchemaModTrnsctn.Modules.IsModuleEnabled( CswNbtModuleName.SI ) )
                {
                    // Notification for Inspection status = Action Required

                    CswNbtMetaDataObjectClass InspectionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.InspectionDesignClass );
                    foreach( CswNbtMetaDataNodeType InspectionNT in InspectionOC.getNodeTypes() )
                    {
                        CswNbtMetaDataNodeTypeProp InspectionStatusNTP = InspectionNT.getNodeTypePropByObjectClassProp( CswNbtObjClassInspectionDesign.PropertyName.Status );

                        // Make new mail report for old notification
                        CswNbtObjClassMailReport MailReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                        if( null != MailReportNameNTP )
                        {
                            MailReportNode.Node.Properties[MailReportNameNTP].AsText.Text = InspectionNT.NodeTypeName + " Action Required Notification";
                        }
                        MailReportNode.OutputFormat.Value = "link";

                        MailReportNode.Type.Value = CswNbtObjClassMailReport.TypeOptionView;
                        MailReportNode.Event.Value = CswNbtObjClassMailReport.EventOption.Edit.ToString();
                        MailReportNode.TargetType.SelectedNodeTypeIds.Add( InspectionNT.NodeTypeId.ToString() );
                        MailReportNode.Message.Text = "The following inspections have been marked Action Required:";
                        MailReportNode.Enabled.Checked = Tristate.True;
                        MailReportNode.IsDemo = true;

                        CswRateInterval HourlyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                        HourlyRate.setHourly( 2, DateTime.Now );
                        MailReportNode.DueDateInterval.RateInterval = HourlyRate;

                        if( "scu" == _CswNbtSchemaModTrnsctn.Accessid )
                        {
                            // Subscribe existing user (id: 24917)
                            MailReportNode.Recipients.AddUser( new CswPrimaryKey( "nodes", 24917 ) );
                            MailReportNode.Enabled.Checked = Tristate.True;
                        }
                        else
                        {
                            MailReportNode.Enabled.Checked = Tristate.False;
                        }

                        MailReportNode.postChanges( true );

                        CswNbtView ReportView = _CswNbtSchemaModTrnsctn.restoreView( MailReportNode.ReportView.ViewId );
                        ReportView.Root.ChildRelationships.Clear();
                        CswNbtViewRelationship InspRel = ReportView.AddViewRelationship( InspectionNT, false );
                        ReportView.AddViewPropertyAndFilter( InspRel, InspectionStatusNTP, CswNbtObjClassInspectionDesign.InspectionStatus.ActionRequired.ToString() );
                        ReportView.save();

                    } // foreach( CswNbtMetaDataNodeType InspectionNT in InspectionOC.getNodeTypes() )
                } // if(_CswNbtSchemaModTrnsctn.Modules.IsModuleEnabled( CswNbtModuleName.SI) )


                if( _CswNbtSchemaModTrnsctn.Modules.IsModuleEnabled( CswNbtModuleName.IMCS ) )
                {
                    // Notification for new Problems

                    CswNbtMetaDataObjectClass ProblemOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.ProblemClass );
                    foreach( CswNbtMetaDataNodeType ProblemNT in ProblemOC.getNodeTypes() )
                    {
                        CswNbtMetaDataNodeTypeProp ProblemClosedNTP = ProblemNT.getNodeTypePropByObjectClassProp( CswNbtObjClassProblem.PropertyName.Closed );

                        // Make new mail report for old notification
                        CswNbtObjClassMailReport MailReportNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                        if( null != MailReportNameNTP )
                        {
                            MailReportNode.Node.Properties[MailReportNameNTP].AsText.Text = "New " + ProblemNT.NodeTypeName + " Notification";
                        }
                        MailReportNode.OutputFormat.Value = "link";

                        MailReportNode.Type.Value = CswNbtObjClassMailReport.TypeOptionView;
                        MailReportNode.Event.Value = CswNbtObjClassMailReport.EventOption.Edit.ToString();
                        MailReportNode.TargetType.SelectedNodeTypeIds.Add( ProblemNT.NodeTypeId.ToString() );
                        MailReportNode.Message.Text = "The following problems have been opened:";
                        MailReportNode.IsDemo = true;

                        CswRateInterval HourlyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                        HourlyRate.setHourly( 2, DateTime.Now );
                        MailReportNode.DueDateInterval.RateInterval = HourlyRate;

                        if( "cabot" == _CswNbtSchemaModTrnsctn.Accessid )
                        {
                            // Subscribe existing user (id: 24786)
                            MailReportNode.Recipients.AddUser( new CswPrimaryKey( "nodes", 24786 ) );
                            MailReportNode.Enabled.Checked = Tristate.True;
                        }
                        else
                        {
                            MailReportNode.Enabled.Checked = Tristate.False;
                        }
                        MailReportNode.postChanges( true );

                        CswNbtView ReportView = _CswNbtSchemaModTrnsctn.restoreView( MailReportNode.ReportView.ViewId );
                        ReportView.Root.ChildRelationships.Clear();
                        CswNbtViewRelationship ProbRel = ReportView.AddViewRelationship( ProblemNT, false );
                        ReportView.AddViewPropertyAndFilter( ProbRel, ProblemClosedNTP, Tristate.False.ToString() );
                        ReportView.save();

                    } // foreach( CswNbtMetaDataNodeType ProblemNT in ProblemOC.getNodeTypes() )
                } // else if(_CswNbtSchemaModTrnsctn.Modules.IsModuleEnabled( CswNbtModuleName.IMCS) )
            } // if( null != MailReportNT )
        }//Update()
Example #11
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()
        public override void update()
        {
            // Set up label printing nodetypes

            CswNbtMetaDataObjectClass PrinterOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.PrinterClass );
            CswNbtMetaDataObjectClass JobOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.PrintJobClass );

            CswNbtMetaDataObjectClassProp JobCreatedDateOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.CreatedDate );
            CswNbtMetaDataObjectClassProp JobJobNoOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.JobNo );
            CswNbtMetaDataObjectClassProp JobJobStateOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.JobState );
            CswNbtMetaDataObjectClassProp JobPrinterOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.Printer );
            CswNbtMetaDataObjectClassProp JobRequestedByOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.RequestedBy );
            CswNbtMetaDataObjectClassProp JobErrorOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.ErrorInfo );
            CswNbtMetaDataObjectClassProp JobLabelOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.Label );
            CswNbtMetaDataObjectClassProp JobEndedDateOCP = JobOC.getObjectClassProp( CswNbtObjClassPrintJob.PropertyName.EndedDate );

            // Printer NodeType
            {
                CswNbtMetaDataNodeType PrinterNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( PrinterOC )
                    {
                        NodeTypeName = "Printer",
                        Category = "System"
                    } );
                PrinterNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassPrinter.PropertyName.Name ) );

                // Add a job grid
                CswNbtMetaDataNodeTypeTab JobGridTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( PrinterNT, "Jobs", 2 );
                CswNbtMetaDataNodeTypeProp JobGridNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp(
                    new CswNbtWcfMetaDataModel.NodeTypeProp( PrinterNT, _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid ), "Jobs" ) );
                JobGridNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, JobGridTab.TabId );

                CswNbtView JobGridView = _CswNbtSchemaModTrnsctn.restoreView( JobGridNTP.ViewId );
                JobGridView.Root.ChildRelationships.Clear();

                CswNbtViewRelationship PrinterRel = JobGridView.AddViewRelationship( PrinterOC, true );
                CswNbtViewRelationship JobRel = JobGridView.AddViewRelationship( PrinterRel, NbtViewPropOwnerType.Second, JobPrinterOCP, true );

                CswNbtViewProperty JobNoVP = JobGridView.AddViewProperty( JobRel, JobJobNoOCP );
                CswNbtViewProperty RequestedByVP = JobGridView.AddViewProperty( JobRel, JobRequestedByOCP );
                CswNbtViewProperty CreatedDateVP = JobGridView.AddViewProperty( JobRel, JobCreatedDateOCP );
                CswNbtViewProperty JobStateVP = JobGridView.AddViewProperty( JobRel, JobJobStateOCP );
                CswNbtViewProperty JobLabelVP = JobGridView.AddViewProperty( JobRel, JobLabelOCP );

                JobNoVP.Order = 1;
                RequestedByVP.Order = 2;
                CreatedDateVP.Order = 3;
                JobStateVP.Order = 4;
                JobLabelVP.Order = 5;

                JobGridView.save();
            }


            // Print Job NodeType
            {
                CswNbtMetaDataNodeType JobNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( JobOC )
                    {
                        NodeTypeName = "Print Job",
                        Category = "System"
                    } );
                JobNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassPrintJob.PropertyName.JobNo ) );

                CswNbtMetaDataNodeTypeProp JobJobNoNTP = JobNT.getNodeTypePropByObjectClassProp( CswNbtObjClassPrintJob.PropertyName.JobNo );
                Int32 SequenceId = _CswNbtSchemaModTrnsctn.makeSequence( new CswSequenceName( "printjob" ), "PJ", "", 4, 1 );
                JobJobNoNTP.setSequence( SequenceId );
                JobJobNoNTP.ReadOnly = true;


                // Notification: My print job failed
                {
                    CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MailReportClass );
                    CswNbtMetaDataNodeType MailReportNT = MailReportOC.FirstNodeType;
                    if( null != MailReportNT )
                    {
                        CswNbtMetaDataNodeTypeProp NameNTP = MailReportNT.getNodeTypeProp( "Name" );

                        CswNbtObjClassMailReport PrintJobNotif = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                        if( null != NameNTP )
                        {
                            PrintJobNotif.Node.Properties[NameNTP].AsText.Text = "My Print Job Failures";
                        }
                        PrintJobNotif.Type.Value = CswNbtObjClassMailReport.TypeOptionView;
                        PrintJobNotif.Enabled.Checked = Tristate.True;
                        PrintJobNotif.Event.Value = CswNbtObjClassMailReport.EventOption.Edit.ToString();
                        PrintJobNotif.Message.Text = "One of your print jobs has failed.";
                        PrintJobNotif.OutputFormat.Value = MailRptFormatOptions.Link.ToString();
                        PrintJobNotif.TargetType.SelectedNodeTypeIds.Add( JobNT.NodeTypeId.ToString() );

                        CswRateInterval Rate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                        Rate.setHourly( 1, DateTime.Now );
                        PrintJobNotif.DueDateInterval.RateInterval = Rate;

                        PrintJobNotif.postChanges( false );

                        CswNbtView NotifView = _CswNbtSchemaModTrnsctn.restoreView( PrintJobNotif.ReportView.ViewId );
                        // Print jobs...
                        CswNbtViewRelationship JobRel = NotifView.AddViewRelationship( JobOC, false );
                        // ...where the state is error...
                        NotifView.AddViewPropertyAndFilter( JobRel, JobJobStateOCP,
                                                            Value: CswNbtObjClassPrintJob.StateOption.Error,
                                                            FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals );
                        // ...and the requestor was me...
                        NotifView.AddViewPropertyAndFilter( JobRel, JobRequestedByOCP,
                                                            Value: "me",
                                                            FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals );
                        NotifView.save();
                    }
                }
            }

            // Printers View
            {
                CswNbtView PrintersView = _CswNbtSchemaModTrnsctn.makeView();
                PrintersView.saveNew( "Printers", NbtViewVisibility.Global );
                PrintersView.Category = "System";
                PrintersView.ViewMode = NbtViewRenderingMode.Tree;
                PrintersView.AddViewRelationship( PrinterOC, true );
                PrintersView.save();
            }

            // Print Job Errors View
            {
                CswNbtView ErrorsView = _CswNbtSchemaModTrnsctn.makeView();
                ErrorsView.saveNew( "Print Job Errors", NbtViewVisibility.Global );
                ErrorsView.Category = "System";
                ErrorsView.ViewMode = NbtViewRenderingMode.Grid;

                CswNbtViewRelationship JobRel = ErrorsView.AddViewRelationship( JobOC, true );

                CswNbtViewProperty JobNoVP = ErrorsView.AddViewProperty( JobRel, JobJobNoOCP );
                CswNbtViewProperty RequestedByVP = ErrorsView.AddViewProperty( JobRel, JobRequestedByOCP );
                //CswNbtViewProperty CreatedDateVP = ErrorsView.AddViewProperty( JobRel, JobCreatedDateOCP );
                CswNbtViewProperty JobStateVP = ErrorsView.AddViewProperty( JobRel, JobJobStateOCP );
                CswNbtViewProperty JobLabelVP = ErrorsView.AddViewProperty( JobRel, JobLabelOCP );
                CswNbtViewProperty ErrorVP = ErrorsView.AddViewProperty( JobRel, JobErrorOCP );
                CswNbtViewProperty EndedDateVP = ErrorsView.AddViewProperty( JobRel, JobEndedDateOCP );

                JobNoVP.Order = 1;
                RequestedByVP.Order = 2;
                //CreatedDateVP.Order = 3;
                EndedDateVP.Order = 4;
                JobStateVP.Order = 5;
                JobLabelVP.Order = 6;
                ErrorVP.Order = 7;

                ErrorsView.AddViewPropertyFilter( JobStateVP,
                                                  Value: CswNbtObjClassPrintJob.StateOption.Error,
                                                  FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals );
                ErrorsView.AddViewPropertyFilter( EndedDateVP,
                                                  Value: "today-7",
                                                  FilterMode: CswNbtPropFilterSql.PropertyFilterMode.GreaterThanOrEquals );

                ErrorsView.save();
            }
        } //Update()
Example #13
0
        public override void update()
        {
            CswNbtMetaDataObjectClass     MailReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportGroupClass);
            CswNbtObjClassMailReportGroup DemoMailReports   = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportGroupOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
            {
                CswNbtObjClassMailReportGroup DemoMailReportNode = NewNode;
                DemoMailReportNode.IsDemo    = true;
                DemoMailReportNode.Name.Text = "Demo Mail Reports";
            });
            CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportClass);

            foreach (CswNbtObjClassMailReport MailReportNode in MailReportOC.getNodes(false, false, false, true))
            {
                if (MailReportNode.IsDemo)
                {
                    MailReportNode.MailReportGroup.RelatedNodeId = DemoMailReports.NodeId;
                    MailReportNode.postChanges(false);
                }
            }
            CswNbtMetaDataObjectClass MailReportGroupPermissionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportGroupPermissionClass);
            CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.RoleClass);

            foreach (CswNbtObjClassRole RoleNode in RoleOC.getNodes(false, false, false, true))
            {
                if (RoleNode.Administrator.Checked == CswEnumTristate.True)
                {
                    CswNbtObjClassMailReportGroupPermission DemoMailReportGroupPerm = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportGroupPermissionOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        CswNbtObjClassMailReportGroupPermission DemoMailReportPermNode = NewNode;
                        DemoMailReportPermNode.Role.RelatedNodeId            = RoleNode.NodeId;
                        DemoMailReportPermNode.ApplyToAllWorkUnits.Checked   = CswEnumTristate.True;
                        DemoMailReportPermNode.PermissionGroup.RelatedNodeId = DemoMailReports.NodeId;
                        DemoMailReportPermNode.View.Checked = CswEnumTristate.True;
                        DemoMailReportPermNode.Edit.Checked = CswEnumTristate.True;
                    });
                }
            }
            CswNbtObjClassMailReportGroup DefaultMailReportGroup = null;

            foreach (CswNbtObjClassMailReportGroup MailReportGroupNode in MailReportGroupOC.getNodes(false, false, false, true))
            {
                if (MailReportGroupNode.Name.Text == "Default Mail Report Group")
                {
                    DefaultMailReportGroup = MailReportGroupNode;
                }
            }
            CswNbtView MyExpiringContainersView = _CswNbtSchemaModTrnsctn.restoreView("My Expiring Containers");

            if (null != MyExpiringContainersView && null != DefaultMailReportGroup)
            {
                CswNbtObjClassMailReport MyExpiringContainersReport = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
                {
                    CswNbtObjClassMailReport MyExpiringContainersReportNode = NewNode;
                    MyExpiringContainersReportNode.Name.Text   = "My Expiring Containers";
                    MyExpiringContainersReportNode.Type.Value  = CswNbtObjClassMailReport.TypeOptionView;
                    MyExpiringContainersReportNode.Event.Value = "Edit";
                    MyExpiringContainersReportNode.MailReportGroup.RelatedNodeId = DefaultMailReportGroup.NodeId;
                    MyExpiringContainersReportNode.Message.Text    = "The following containers will be expiring soon: ";
                    MyExpiringContainersReportNode.Enabled.Checked = CswEnumTristate.False;
                    CswNbtView MyExpContMRView = _CswNbtSchemaModTrnsctn.makeView();
                    MyExpContMRView.saveNew("My Expiring Containers", CswEnumNbtViewVisibility.Hidden, CopyViewId: MyExpiringContainersView.ViewId.get());
                    MyExpiringContainersReportNode.ReportView.ViewId = MyExpContMRView.ViewId;
                    CswRateInterval DailyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                    DailyRate.setHourly(24, DateTime.Today);
                    MyExpiringContainersReportNode.DueDateInterval.RateInterval = DailyRate;
                });
            }
        }