예제 #1
0
        //takes the request view, adds items, and filters by submitted
        public CswNbtView getSubmittedRequestItemsView()
        {
            CswNbtView Ret = getRequestViewBase(LimitToUnsubmitted: false, AddRootRel: false, IncludeDefaultFilters: false);

            Ret.Visibility     = CswEnumNbtViewVisibility.Hidden;
            Ret.ViewName       = SubmittedItemsViewName;
            Ret.GridGroupByCol = CswNbtObjClassRequestItem.PropertyName.Request;
            CswNbtMetaDataObjectClassProp RequestOcp     = _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request);
            CswNbtViewRelationship        RequestItemRel = Ret.AddViewRelationship(_RequestItemOC, IncludeDefaultFilters: true);

            CswNbtViewProperty NameVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Name), 1);
            //NameVP.ShowInGrid = true;
            CswNbtViewPropertyFilter NameVpf      = Ret.AddViewPropertyFilter(NameVP, ShowAtRuntime: true);
            CswNbtViewProperty       ItemNumberVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.ItemNumber), 2);

            ItemNumberVP.Width = 10;
            CswNbtViewProperty       StatusVP  = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Status), 3);
            CswNbtViewPropertyFilter StatusVpf = Ret.AddViewPropertyFilter(StatusVP, FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswNbtObjClassRequestItem.Statuses.Pending);

            StatusVpf.ShowAtRuntime = true;
            CswNbtViewProperty DescriptionVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Description), 4);

            DescriptionVP.Width = 50;
            CswNbtViewProperty NeededByVP    = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.NeededBy), 5);
            CswNbtViewProperty RequestVP     = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request));
            CswNbtViewProperty CommentsVP    = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Comments));
            CswNbtViewProperty RequestTypeVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.RequestType), 7);

            RequestTypeVP.Width = 20;

            return(Ret);
        }
예제 #2
0
        public IEnumerable <CswPrimaryKey> getContainersInGroup()
        {
            CswNbtView ContainersInGroupView = new CswNbtView(_CswNbtResources);

            ContainersInGroupView.ViewName = "ContainersInGroup";

            CswNbtMetaDataObjectClass ContainerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);
            CswNbtViewRelationship    Rel1        = ContainersInGroupView.AddViewRelationship(ContainerOC, true);

            CswNbtMetaDataObjectClassProp ContainerGroupOCP = ContainerOC.getObjectClassProp(CswNbtObjClassContainer.PropertyName.ContainerGroup);
            CswNbtViewProperty            Prop2             = ContainersInGroupView.AddViewProperty(Rel1, ContainerGroupOCP);
            CswNbtViewPropertyFilter      Filt3             = ContainersInGroupView.AddViewPropertyFilter(Prop2,
                                                                                                          CswEnumNbtFilterConjunction.And,
                                                                                                          CswEnumNbtFilterResultMode.Hide,
                                                                                                          CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID,
                                                                                                          CswEnumNbtFilterMode.Equals,
                                                                                                          this.NodeId.PrimaryKey.ToString(),
                                                                                                          false,
                                                                                                          false);

            Collection <CswPrimaryKey> _ContainerGroupNodePks = new Collection <CswPrimaryKey>();

            ICswNbtTree ContainersInGroupTree = _CswNbtResources.Trees.getTreeFromView(ContainersInGroupView, false, true, true);

            ContainersInGroupTree.goToRoot();
            for (int i = 0; i < ContainersInGroupTree.getChildNodeCount(); i++)
            {
                ContainersInGroupTree.goToNthChild(i);
                _ContainerGroupNodePks.Add(ContainersInGroupTree.getNodeIdForCurrentPosition());
                ContainersInGroupTree.goToParentNode();
            }

            return(_ContainerGroupNodePks);
        }
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            string ReturnVal = string.Empty;

            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];

            if (!CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            // Are we using a Date filter?
            if (CswNbtSubField.Name == StartDateSubField.Name)
            {
                return(CswNbtFieldTypeRuleDateImpl.renderViewPropFilter(RunAsUser, _CswNbtFieldResources, CswNbtViewPropertyFilterIn, CswNbtSubField.Column));
            }
            else
            {
                ReturnVal = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber);
            }

            return(ReturnVal);
        }//makeWhereClause()
        }//afterPopulateProps()

        public override CswNbtNode CopyNode(bool IsNodeTemp = false, Action <CswNbtNode> OnCopy = null)
        {
            // Copy this Assembly
            CswNbtNode CopiedAssemblyNode = base.CopyNodeImpl(IsNodeTemp, OnCopy);

            // Copy all Equipment
            CswNbtMetaDataObjectClass EquipmentObjectClass    = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.EquipmentClass);
            CswNbtView               EquipmentView            = new CswNbtView(_CswNbtResources);
            CswNbtViewRelationship   EquipmentRelationship    = EquipmentView.AddViewRelationship(EquipmentObjectClass, false);
            CswNbtViewProperty       AssemblyProperty         = EquipmentView.AddViewProperty(EquipmentRelationship, EquipmentObjectClass.getObjectClassProp(CswNbtObjClassEquipment.PropertyName.Assembly));
            CswNbtViewPropertyFilter AssemblyIsOriginalFilter = EquipmentView.AddViewPropertyFilter(
                AssemblyProperty,
                CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID,
                CswEnumNbtFilterMode.Equals,
                NodeId.PrimaryKey.ToString());

            ICswNbtTree EquipmentTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, EquipmentView, true, false, false);

            EquipmentTree.goToRoot();
            Int32 c = 0;

            while (c < EquipmentTree.getChildNodeCount())
            {
                EquipmentTree.goToNthChild(c);
                CswNbtObjClassEquipment OriginalEquipmentNode = EquipmentTree.getNodeForCurrentPosition();
                OriginalEquipmentNode.CopyNode(IsNodeTemp, delegate(CswNbtNode CopiedEquipmentNode)
                {
                    ((CswNbtObjClassEquipment)CopiedEquipmentNode).Assembly.RelatedNodeId = CopiedAssemblyNode.NodeId;
                });
                EquipmentTree.goToParentNode();
                c++;
            }

            return(CopiedAssemblyNode);
        }
예제 #5
0
        } // InitActionPermissionOptions()

        private void _deleteRelatedPermissionNodes()
        {
            CswNbtView PermissionsView = new CswNbtView( _CswNbtResources );
            CswNbtMetaDataPropertySet PermissionPS = _CswNbtResources.MetaData.getPropertySet( CswEnumNbtPropertySetName.PermissionSet );
            CswNbtViewRelationship RootVR = PermissionsView.AddViewRelationship( PermissionPS, false );
            CswNbtViewPropertyFilter Filter = null;
            foreach( CswNbtMetaDataObjectClass PermOC in PermissionPS.getObjectClasses() )
            {
                if( Filter == null )
                {
                    CswNbtMetaDataNodeType PermNT = PermOC.FirstNodeType;
                    if( null != PermNT )
                    {
                        CswNbtMetaDataNodeTypeProp RoleOCP = PermNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetPermission.PropertyName.Role );
                        Filter = PermissionsView.AddViewPropertyAndFilter( RootVR,
                                                                           MetaDataProp: RoleOCP,
                                                                           Value: NodeId.PrimaryKey.ToString(),
                                                                           SubFieldName: CswEnumNbtSubFieldName.NodeID,
                                                                           FilterMode: CswEnumNbtFilterMode.Equals );
                    }
                }
                else
                {
                    break;
                }
            }
            ICswNbtTree PermissionsTree = _CswNbtResources.Trees.getTreeFromView( PermissionsView, false, true, true );
            for( int i = 0; i < PermissionsTree.getChildNodeCount(); i++ )
            {
                PermissionsTree.goToNthChild( i );
                CswNbtNode PermissionNode = PermissionsTree.getNodeForCurrentPosition();
                PermissionNode.delete();
                PermissionsTree.goToRoot();
            }
        }
예제 #6
0
        private CswPrimaryKey _HandleReference(string LocationNodeIdStr, string LocationBarcode)   //, Dictionary<Int32, Int32> NodeMap )
        {
            CswPrimaryKey LocationNodeId = new CswPrimaryKey();

            if (!string.IsNullOrEmpty(LocationNodeIdStr))
            {
                LocationNodeId.FromString(LocationNodeIdStr);
                if (LocationNodeId.PrimaryKey == Int32.MinValue && LocationBarcode != string.Empty)
                {
                    // Find the location with this barcode value
                    CswNbtMetaDataObjectClass     LocationObjectClass    = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                    CswNbtMetaDataObjectClassProp BarcodeObjectClassProp = LocationObjectClass.getObjectClassProp(CswNbtObjClassLocation.PropertyName.Barcode);

                    CswNbtView LocationView = new CswNbtView(_CswNbtResources);
                    // All locations..
                    CswNbtViewRelationship LocationRelationship = LocationView.AddViewRelationship(LocationObjectClass, false);
                    // ..with barcodes
                    CswNbtViewProperty BarcodeViewProperty = LocationView.AddViewProperty(LocationRelationship, BarcodeObjectClassProp);
                    // ..equal to the given barcode
                    CswNbtViewPropertyFilter BarcodeViewPropertyFilter = LocationView.AddViewPropertyFilter(BarcodeViewProperty, CswNbtFieldTypeRuleBarCode.SubFieldName.Barcode, CswEnumNbtFilterMode.Equals, LocationBarcode, false);

                    ICswNbtTree LocationTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, LocationView, true, false, false);
                    if (LocationTree.getChildNodeCount() > 0)
                    {
                        LocationTree.goToNthChild(0);
                        CswNbtNode LocationNode = LocationTree.getNodeForCurrentPosition();
                        LocationNodeId = LocationNode.NodeId;
                    }
                }
            } // if(!string.IsNullOrEmpty(LocationNodeIdStr))
            return(LocationNodeId);
        }     // _HandleReference()
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            // BZ 7941
            bool UseNumericHack = CswNbtViewPropertyFilterIn.SubfieldName == SubFieldName.Value;

            return(_CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber, UseNumericHack));
        }//makeWhereClause()
예제 #8
0
        /// <summary>
        /// Creates a CswNbtViewPropertyFilter and returns its Json
        /// </summary>
        public JObject makeViewPropFilter(CswNbtView View, JObject FilterProp, bool ClearFilters = false)
        {
            JObject Ret = new JObject();

            string FiltArbitraryId = CswConvert.ToString(FilterProp["filtarbitraryid"]);
            string PropArbitraryId = CswConvert.ToString(FilterProp["proparbitraryid"]);

            if (FiltArbitraryId == "undefined")
            {
                FiltArbitraryId = string.Empty;
            }
            if (PropArbitraryId == "undefined")
            {
                PropArbitraryId = string.Empty;
            }

            CswNbtViewPropertyFilter ViewPropFilt = null;

            if (false == string.IsNullOrEmpty(PropArbitraryId))
            {
                CswNbtViewProperty ViewProp = (CswNbtViewProperty)View.FindViewNodeByArbitraryId(PropArbitraryId);

                if (false == string.IsNullOrEmpty(FiltArbitraryId))
                {
                    ViewPropFilt = (CswNbtViewPropertyFilter)View.FindViewNodeByArbitraryId(FiltArbitraryId);
                }
                else
                {
                    ViewPropFilt = View.AddViewPropertyFilter(ViewProp, CswEnumNbtSubFieldName.Unknown, CswEnumNbtFilterMode.Unknown, string.Empty, false);
                }

                //Case 23779, 23937, 24064
                if (ClearFilters && null != ViewPropFilt)
                {
                    ViewProp.Filters.Clear();
                    ViewProp.Filters.Add(ViewPropFilt);
                }
            }

            if (ViewPropFilt != null)
            {
                CswEnumNbtFilterConjunction Conjunction = (CswEnumNbtFilterConjunction)CswConvert.ToString(FilterProp["conjunction"]);
                CswEnumNbtSubFieldName      FieldName   = (CswEnumNbtSubFieldName)CswConvert.ToString(FilterProp["subfieldname"]);
                CswEnumNbtFilterMode        FilterMode  = (CswEnumNbtFilterMode)CswConvert.ToString(FilterProp["filter"]);
                string FilterValue = CswConvert.ToString(FilterProp["filtervalue"]);

                if (FieldName != CswEnumNbtSubFieldName.Unknown &&
                    FilterMode != CswEnumNbtFilterMode.Unknown)
                {
                    ViewPropFilt.FilterMode   = FilterMode;
                    ViewPropFilt.Conjunction  = Conjunction;
                    ViewPropFilt.SubfieldName = FieldName;
                    ViewPropFilt.Value        = FilterValue;
                    _addVbPropFilter(Ret, ViewPropFilt);
                }
            }
            return(Ret);
        }
예제 #9
0
        } // _getVbProperties()

        /// <summary>
        /// Returns the JSON for a Vb prop
        /// </summary>
        private void _getVbPropData(JObject ParentObj, CswViewBuilderProp ViewBuilderProp)
        {
            if (null != ViewBuilderProp && ViewBuilderProp.FieldTypeRule.SearchAllowed)
            {
                CswNbtSubFieldColl SubFields = ViewBuilderProp.FieldTypeRule.SubFields;

                ParentObj["ownername"]         = ViewBuilderProp.OwnerName;
                ParentObj["propname"]          = ViewBuilderProp.MetaDataPropName;
                ParentObj["viewbuilderpropid"] = ViewBuilderProp.MetaDataPropId.ToString();
                ParentObj["relatedidtype"]     = ViewBuilderProp.RelatedIdType.ToString();
                ParentObj["proptype"]          = ViewBuilderProp.Type.ToString();
                ParentObj["metadatatypename"]  = ViewBuilderProp.MetaDataTypeName;
                ParentObj["fieldtype"]         = ViewBuilderProp.FieldType.ToString();
                if (ViewBuilderProp.ViewProp != null)
                {
                    ParentObj["proparbitraryid"] = ViewBuilderProp.ViewProp.ArbitraryId;
                }
                string FiltArbitraryId = string.Empty;
                if (ViewBuilderProp.Filters.Count > 0)
                {
                    CswNbtViewPropertyFilter Filt = (CswNbtViewPropertyFilter)ViewBuilderProp.Filters[0];
                    FiltArbitraryId = Filt.ArbitraryId;
                }
                ParentObj["filtarbitraryid"]    = FiltArbitraryId;
                ParentObj["defaultconjunction"] = CswEnumNbtFilterConjunction.And.ToString();
                ParentObj["defaultsubfield"]    = ViewBuilderProp.FieldTypeRule.SubFields.Default.Name.ToString();
                ParentObj["defaultfiltermode"]  = ViewBuilderProp.FieldTypeRule.SubFields.Default.DefaultFilterMode.ToString();
                ParentObj["helptext"]           = ViewBuilderProp.FieldTypeRule.getHelpText();

                ParentObj["subfields"] = new JObject();

                foreach (CswNbtSubField Field in SubFields)
                {
                    string OptName = Field.Name.ToString();
                    ParentObj["subfields"][OptName]           = new JObject();
                    ParentObj["subfields"][OptName]["column"] = Field.Column.ToString();
                    ParentObj["subfields"][OptName]["name"]   = OptName;
                    JObject FiltersObj = new JObject();
                    ParentObj["subfields"][OptName]["filtermodes"] = FiltersObj;

                    _addSubFieldFilterModes(FiltersObj, Field);
                }

                addVbPropFilters(ParentObj, ViewBuilderProp);

                if (ViewBuilderProp.FieldType == CswEnumNbtFieldType.List)
                {
                    ParentObj["filtersoptions"]         = new JObject();
                    ParentObj["filtersoptions"]["name"] = ViewBuilderProp.MetaDataPropName;
                    if (ViewBuilderProp.ListOptions.Count() > 0)
                    {
                        ParentObj["filtersoptions"]["selected"] = ViewBuilderProp.ListOptions.First();
                        ParentObj["filtersoptions"]["options"]  = _getListPropFilterOptions(ViewBuilderProp);
                    }
                }
            }
        } // _getVbPropData()
예제 #10
0
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber, bool UseNumericHack = false)
        {
            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];
            if (CswNbtSubField == null)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Misconfigured View", "CswNbtFieldTypeRuleDefaultImpl.renderViewPropFilter() could not find SubField '" + CswNbtViewPropertyFilterIn.SubfieldName + "' in field type '" + ((CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent).FieldType.ToString() + "' for view '" + CswNbtViewPropertyFilterIn.View.ViewName + "'");
            }

            return(_CswNbtFieldResources.CswNbtPropFilterSql.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, CswNbtSubField, ParameterCollection, FilterNumber, UseNumericHack));
        }//makeWhereClause()
예제 #11
0
        }//afterPopulateProps()

        public override void addDefaultViewFilters(CswNbtViewRelationship ParentRelationship)
        {
            // BZ 10454
            // Filter out Retired Equipment by default
            CswNbtMetaDataObjectClassProp StatusOCP            = this.ObjectClass.getObjectClassProp(PropertyName.Status);
            CswNbtViewProperty            StatusViewProp       = ParentRelationship.View.AddViewProperty(ParentRelationship, StatusOCP);
            CswNbtViewPropertyFilter      StatusViewPropFilter = ParentRelationship.View.AddViewPropertyFilter(StatusViewProp,
                                                                                                               StatusOCP.getFieldTypeRule().SubFields.Default.Name,
                                                                                                               CswEnumNbtFilterMode.NotEquals,
                                                                                                               "Retired", //StatusOptionToDisplayString( StatusOption.Retired ),
                                                                                                               false);
        }
예제 #12
0
        } // _getListPropFilterOptions()

        private void _addVbPropFilter(JObject ParentObj, CswNbtViewPropertyFilter Filter)
        {
            string FiltId = Filter.ArbitraryId;

            ParentObj[FiltId] = new JObject();
            ParentObj[FiltId]["arbitraryid"]   = Filter.ArbitraryId;
            ParentObj[FiltId]["nodename"]      = CswEnumNbtViewXmlNodeName.Filter.ToString().ToLower();
            ParentObj[FiltId]["subfieldname"]  = Filter.SubfieldName.ToString();
            ParentObj[FiltId]["value"]         = Filter.Value;
            ParentObj[FiltId]["filtermode"]    = Filter.FilterMode.ToString();
            ParentObj[FiltId]["casesensitive"] = Filter.CaseSensitive;
            ParentObj[FiltId]["conjunction"]   = Filter.Conjunction.ToString();
        }
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];

            if (!CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            string ValueColumn = _FilterTableAlias + CswNbtSubField.Column.ToString();
            string ReturnVal   = "";

            if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Equals)
            {
                if (CswNbtViewPropertyFilterIn.Value == "1" || CswNbtViewPropertyFilterIn.Value.ToLower() == "true")
                {
                    ReturnVal = ValueColumn + " = '1' ";
                }
                else if (CswNbtViewPropertyFilterIn.Value == "0" || CswNbtViewPropertyFilterIn.Value.ToLower() == "false")
                {
                    ReturnVal = ValueColumn + " = '0' ";
                }
                else
                {
                    ReturnVal = ValueColumn + " is null";
                }
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotEquals)
            {
                if (CswNbtViewPropertyFilterIn.Value == "1" || CswNbtViewPropertyFilterIn.Value.ToLower() == "true")
                {
                    ReturnVal = "(" + ValueColumn + " = '0' or " + ValueColumn + " is null) ";
                }
                else if (CswNbtViewPropertyFilterIn.Value == "0" || CswNbtViewPropertyFilterIn.Value.ToLower() == "false")
                {
                    ReturnVal = "(" + ValueColumn + " = '1' or " + ValueColumn + " is null) ";
                }
                else
                {
                    ReturnVal = "(" + ValueColumn + " = '1' or " + ValueColumn + " = '0') ";
                }
            }
            else
            {
                throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtFieldTypeRuleLogical.renderViewPropFilter()");
            }

            return(ReturnVal);
        }
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            //return ( _CswNbtFieldTypeRuleDefault.renderViewPropFilter( RunAsUser, SubFields, CswNbtViewPropertyFilterIn ) );

            CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName;
            CswEnumNbtFilterMode   OldFilterMode   = CswNbtViewPropertyFilterIn.FilterMode;
            string OldValue = CswNbtViewPropertyFilterIn.Value;

            // BZ 8558
            if (OldSubfieldName == SubFieldName.Value && OldValue.ToLower() == "me")
            {
                CswNbtViewProperty Prop = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent;

                ICswNbtMetaDataProp MetaDataProp = null;
                if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId)
                {
                    MetaDataProp = Prop.NodeTypeProp;
                }
                else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId)
                {
                    MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId);
                }

                // Could be a propref of a propref, so we can't look at the relationship

                //ICswNbtMetaDataProp RelationshipProp = null;
                //if( MetaDataProp.FKType == NbtViewPropType.NodeTypePropId.ToString() )
                //    RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getNodeTypeProp( MetaDataProp.FKValue);
                //else if( MetaDataProp.FKType == NbtViewPropType.ObjectClassPropId.ToString() )
                //    RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp( MetaDataProp.FKValue );

                //if( RelationshipProp != null && RelationshipProp.IsUserRelationship() )
                //{
                if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me")
                {
                    CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.Value;
                    CswNbtViewPropertyFilterIn.FilterMode   = CswEnumNbtFilterMode.Equals;
                    CswNbtViewPropertyFilterIn.Value        = _CswNbtFieldResources.CswNbtResources.Nodes[RunAsUser.UserId].NodeName;
                }
                //}
            }
            string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber);

            CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName;
            CswNbtViewPropertyFilterIn.FilterMode   = OldFilterMode;
            CswNbtViewPropertyFilterIn.Value        = OldValue;

            return(ret);
        }//makeWhereClause()
예제 #15
0
        public CswNbtView getTreeViewOfFutureNodes(IEnumerable GeneratorNodes)
        {
            CswNbtView ReturnVal = new CswNbtView(_CswNbtResources);

            ReturnVal.ViewName = "All Future Nodes";
            CswNbtMetaDataObjectClass GeneratorObjectClass  = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.GeneratorClass);
            CswNbtViewRelationship    GeneratorRelationship = ReturnVal.AddViewRelationship(GeneratorObjectClass, false);

            ArrayList TargetNodeTypeIds = new ArrayList();

            foreach (CswNbtNode CurrentGeneratorNode in GeneratorNodes)
            {
                GeneratorRelationship.NodeIdsToFilterIn.Add(CurrentGeneratorNode.NodeId);
                CswNbtObjClassGenerator Generator = CurrentGeneratorNode;
                foreach (String nodeTypeId in Generator.TargetType.SelectedNodeTypeIds)
                {
                    Int32 CurrentTargetNodeTypeId = CswConvert.ToInt32(nodeTypeId);
                    if (!(TargetNodeTypeIds.Contains(CurrentTargetNodeTypeId)))
                    {
                        TargetNodeTypeIds.Add(CurrentTargetNodeTypeId);
                    }
                }
            }

            foreach (Int32 TargetNodeTypeId in TargetNodeTypeIds)
            {
                CswNbtMetaDataNodeType TargetNodeType = _CswNbtResources.MetaData.getNodeType(TargetNodeTypeId);
                if (TargetNodeType != null)
                {
                    CswNbtMetaDataObjectClass TargetObjectClass = TargetNodeType.getObjectClass();

                    CswNbtObjClass TargetObjClass = CswNbtObjClassFactory.makeObjClass(_CswNbtResources, TargetObjectClass);
                    if (!(TargetObjClass is CswNbtPropertySetGeneratorTarget))
                    {
                        throw new CswDniException("CswNbtActGenerateFutureNodes.getTreeViewOfFutureNodes() got an invalid object class: " + TargetObjectClass.ObjectClass);
                    }

                    CswNbtViewRelationship   TargetRelationship   = ReturnVal.AddViewRelationship(GeneratorRelationship, CswEnumNbtViewPropOwnerType.Second, TargetNodeType.getNodeTypePropByObjectClassProp(CswNbtPropertySetGeneratorTarget.PropertyName.Generator), false);
                    CswNbtViewProperty       IsFutureFlagProperty = ReturnVal.AddViewProperty(TargetRelationship, TargetNodeType.getNodeTypePropByObjectClassProp(CswNbtPropertySetGeneratorTarget.PropertyName.IsFuture));
                    CswNbtViewPropertyFilter IsFutureFilter       = ReturnVal.AddViewPropertyFilter(IsFutureFlagProperty, CswNbtFieldTypeRuleLogical.SubFieldName.Checked, CswEnumNbtFilterMode.Equals, CswEnumTristate.True, false);
                }
            }

            return(ReturnVal);
        }//getTreeViewOfFutureNodes()
예제 #16
0
        } // CalculateMTBF()

        private Int32 _countProblems(DateTime StartDate, DateTime EndDate)
        {
            Int32 ret = 0;

            if (this.NodeId != null)
            {
                // BZ 6779
                CswNbtMetaDataObjectClass     ProblemOC     = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ProblemClass);
                CswNbtMetaDataObjectClassProp OwnerOCP      = ProblemOC.getObjectClassProp(CswNbtObjClassProblem.PropertyName.Owner);
                CswNbtMetaDataObjectClassProp FailureOCP    = ProblemOC.getObjectClassProp(CswNbtObjClassProblem.PropertyName.Failure);
                CswNbtMetaDataObjectClassProp DateOpenedOCP = ProblemOC.getObjectClassProp(CswNbtObjClassProblem.PropertyName.DateOpened);


                CswNbtView ProblemFailuresView = new CswNbtView(_CswNbtResources);
                ProblemFailuresView.ViewName = "Problem Failures";
                CswNbtViewRelationship ParentRelationship = ProblemFailuresView.AddViewRelationship(this.NodeTypeProp.getNodeType(), true);
                ParentRelationship.NodeIdsToFilterIn.Add(this.NodeId);
                CswNbtViewRelationship ChildRelationship = ProblemFailuresView.AddViewRelationship(ParentRelationship,
                                                                                                   CswEnumNbtViewPropOwnerType.Second,
                                                                                                   OwnerOCP, true);
                // BZ 10277 - Only Problems flagged Failure
                CswNbtViewProperty       FailureVP     = ProblemFailuresView.AddViewProperty(ChildRelationship, FailureOCP);
                CswNbtViewPropertyFilter FailureFilter = ProblemFailuresView.AddViewPropertyFilter(FailureVP, CswNbtFieldTypeRuleLogical.SubFieldName.Checked, CswEnumNbtFilterMode.Equals, CswEnumTristate.True.ToString(), false);

                // BZ 10259...within the calculation date scope
                CswNbtViewProperty       DateOpenedVP          = ProblemFailuresView.AddViewProperty(ChildRelationship, DateOpenedOCP);
                CswNbtViewPropertyFilter DateOpenedStartFilter = ProblemFailuresView.AddViewPropertyFilter(DateOpenedVP, CswNbtFieldTypeRuleDateTime.SubFieldName.Value, CswEnumNbtFilterMode.GreaterThanOrEquals, StartDate.ToString(), false);
                CswNbtViewPropertyFilter DateOpenedEndFilter   = ProblemFailuresView.AddViewPropertyFilter(DateOpenedVP, CswNbtFieldTypeRuleDateTime.SubFieldName.Value, CswEnumNbtFilterMode.LessThanOrEquals, EndDate.ToString(), false);

                ICswNbtTree ProblemNodesTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, ProblemFailuresView, true, false, false);

                if (ProblemNodesTree.getChildNodeCount() > 0)
                {
                    ProblemNodesTree.goToNthChild(0);
                    ret = ProblemNodesTree.getChildNodeCount();
                }
            }

            return(ret);
        } // _countProblems()
예제 #17
0
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName;
            CswEnumNbtFilterMode   OldFilterMode   = CswNbtViewPropertyFilterIn.FilterMode;
            string OldValue = CswNbtViewPropertyFilterIn.Value;

            // BZ 8558
            if (OldSubfieldName == SubFieldName.Name && OldValue.ToLower() == "me")
            {
                CswNbtViewProperty  Prop         = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent;
                ICswNbtMetaDataProp MetaDataProp = null;
                if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId)
                {
                    MetaDataProp = Prop.NodeTypeProp;
                }
                else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId)
                {
                    MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId);
                }

                if (MetaDataProp != null && MetaDataProp.IsUserRelationship())
                {
                    if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me" && false == (RunAsUser is CswNbtSystemUser))
                    {
                        CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.NodeID;
                        CswNbtViewPropertyFilterIn.FilterMode   = CswEnumNbtFilterMode.Equals;
                        CswNbtViewPropertyFilterIn.Value        = RunAsUser.UserId.PrimaryKey.ToString();
                    }
                }
            }
            string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber);

            CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName;
            CswNbtViewPropertyFilterIn.FilterMode   = OldFilterMode;
            CswNbtViewPropertyFilterIn.Value        = OldValue;

            return(ret);
        }
 public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn)
 {
     return(string.Empty);
 }//makeWhereClause()
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];
            if (CswNbtSubField == null)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Misconfigured View", "CswNbtFieldTypeRuleDefaultImpl.renderViewPropFilter() could not find SubField '" + CswNbtViewPropertyFilterIn.SubfieldName + "' in field type '" + ((CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent).FieldType.ToString() + "' for view '" + CswNbtViewPropertyFilterIn.View.ViewName + "'");
            }

            if (!CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            string ReturnVal  = "";
            string FullColumn = _FilterTableAlias + CswNbtSubField.Column.ToString();

            if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Contains)
            {
                // BZ 7938
                // We store the nodetypes by ID, but users will search by name.  So we have to decode.
                Collection <CswNbtMetaDataNodeType> MatchingNodeTypes = new Collection <CswNbtMetaDataNodeType>();
                foreach (CswNbtMetaDataNodeType NodeType in _CswNbtFieldResources.CswNbtResources.MetaData.getNodeTypes())
                {
                    if (NodeType.NodeTypeName.ToLower().IndexOf(CswNbtViewPropertyFilterIn.Value.ToLower()) > -1)
                    {
                        MatchingNodeTypes.Add(NodeType);
                    }
                }
                if (MatchingNodeTypes.Count > 0)
                {
                    ReturnVal = "(";
                    bool first = true;
                    foreach (CswNbtMetaDataNodeType NodeType in MatchingNodeTypes)
                    {
                        if (!first)
                        {
                            ReturnVal += " or ";
                        }
                        ReturnVal += "'" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "' || " + FullColumn + " || '" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "' like '%" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + NodeType.FirstVersionNodeTypeId.ToString() + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "%'";
                        first      = false;
                    }
                    ReturnVal += ")";
                }
                else
                {
                    // We didn't find a match.  This is better than nothing.
                    ReturnVal = "'" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "' || " + FullColumn + " || '" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "' like '%" + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + CswNbtViewPropertyFilterIn.Value + CswNbtNodePropNodeTypeSelect.delimiter.ToString() + "%'";
                }
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotNull)
            {
                ReturnVal = FullColumn + " is not null";
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Null)
            {
                ReturnVal = FullColumn + " is null";
            }
            else
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for NodeTypeSelect fields"));
                //break;
            }

            return(ReturnVal);
        }//renderViewPropFilter()
예제 #20
0
 public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
 {
     return(string.Empty);
 }//makeWhereClause()
        public override void update()
        {
            CswNbtMetaDataObjectClass RoleMDObjC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.RoleClass );

            CswNbtObjClassRole cispro_receiver_role = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Receiver" );
            CswNbtObjClassRole cispro_dispenser_role = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Dispenser" ); ;
            CswNbtObjClassRole cispro_request_fulfiller_role = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Request_Fulfiller" ); ;
            CswNbtObjClassRole cispro_admin_role = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Admin" ); ;


            CswNbtObjClassUser cispro_dispenser_User = _CswNbtSchemaModTrnsctn.Nodes.makeUserNodeFromUsername( "cispro_dispenser" );


            if( null != cispro_receiver_role )
            {
                _CswNbtSchemaModTrnsctn.Permit.set( Actions.CswNbtActionName.DispenseContainer, cispro_receiver_role, false );
                _CswNbtSchemaModTrnsctn.Permit.set( Actions.CswNbtActionName.DisposeContainer, cispro_receiver_role, false );
            }//if we have have a cispro_receiver_role


            if( null != cispro_admin_role )
            {
                _CswNbtSchemaModTrnsctn.Permit.set( Actions.CswNbtActionName.Kiosk_Mode, cispro_admin_role, true );
            }

            if( null != cispro_request_fulfiller_role )
            {
                _CswNbtSchemaModTrnsctn.Permit.set( Actions.CswNbtActionName.DispenseContainer, cispro_request_fulfiller_role, true );
                _CswNbtSchemaModTrnsctn.Permit.set( Actions.CswNbtActionName.DisposeContainer, cispro_request_fulfiller_role, true );

                CswNbtMetaDataNodeType ContainerNodeType = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Container" );
                if( null != ContainerNodeType )
                {
                    _CswNbtSchemaModTrnsctn.Permit.set( new CswNbtPermit.NodeTypePermission[] { CswNbtPermit.NodeTypePermission.Delete, CswNbtPermit.NodeTypePermission.Edit, CswNbtPermit.NodeTypePermission.View },
                                                       ContainerNodeType,
                                                       cispro_request_fulfiller_role,
                                                       true );
                }

                if( ( null != cispro_dispenser_User ) )
                {
                    cispro_dispenser_User.Node.Properties[CswNbtObjClassUser.PropertyName.Role].AsRelationship.RelatedNodeId = cispro_request_fulfiller_role.NodeId;
                    cispro_dispenser_User.postChanges( true );
                }//if we have the dispenser user and the container nt

            }//if we have the request-fulfiller role

            if( null != cispro_dispenser_role )
            {
                cispro_dispenser_role.Node.delete();
            }

            _CswNbtSchemaModTrnsctn.deleteView( "Dispense Requests: Open", true );


            /*
             * Pending Requests View: 
             * Includes all four request node types
             * Includes Needed By, Description, and Requested For (in that order)
             * Sorted by Needed By, Description
             * Description Width = 90
             * Filtered on Status = Pending
             * Filtered by 
             */
            CswNbtView PendingRequestsView = _CswNbtSchemaModTrnsctn.makeSafeView( "Pending Requests", NbtViewVisibility.Global );
            PendingRequestsView.ViewMode = NbtViewRenderingMode.Grid;
            PendingRequestsView.Category = "Requests";
            PendingRequestsView.Width = 100;

            //do this for all
            CswNbtMetaDataNodeType Rel1SecondNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Request Container Dispense" );
            if( null != Rel1SecondNT )
            {
                CswNbtViewRelationship Rel1 = PendingRequestsView.AddViewRelationship( Rel1SecondNT, true );

                //do this for all
                CswNbtMetaDataNodeTypeProp Prop2NTP = Rel1SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerDispense.PropertyName.Status );
                CswNbtViewProperty Prop2 = PendingRequestsView.AddViewProperty( Rel1, Prop2NTP );
                Prop2.ShowInGrid = false;
                CswNbtViewPropertyFilter Filt3 = PendingRequestsView.AddViewPropertyFilter( Prop2,
                                                          CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                          CswNbtPropFilterSql.FilterResultMode.Hide,
                                                          CswNbtSubField.SubFieldName.Value,
                                                          CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                                          "Pending",
                                                          false,
                                                          false );

                CswNbtMetaDataNodeTypeProp Prop4NTP = Rel1SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerDispense.PropertyName.Description );
                CswNbtViewProperty Prop4 = PendingRequestsView.AddViewProperty( Rel1, Prop4NTP );
                Prop4.SortBy = true;
                Prop4.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop4.Order = 2;
                Prop4.Width = 90;
                CswNbtMetaDataNodeTypeProp Prop5NTP = Rel1SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerDispense.PropertyName.RequestedFor );
                CswNbtViewProperty Prop5 = PendingRequestsView.AddViewProperty( Rel1, Prop5NTP );
                Prop5.Order = 3;
                CswNbtMetaDataNodeTypeProp Prop6NTP = Rel1SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerDispense.PropertyName.NeededBy );
                CswNbtViewProperty Prop6 = PendingRequestsView.AddViewProperty( Rel1, Prop6NTP );
                Prop6.SortBy = true;
                Prop6.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop6.Order = 1;

            }//if we have the request dispense nt


            CswNbtMetaDataNodeType Rel7SecondNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Request Material Create" );
            if( null != Rel7SecondNT )
            {
                CswNbtViewRelationship Rel7 = PendingRequestsView.AddViewRelationship( Rel7SecondNT, true );

                CswNbtMetaDataNodeTypeProp Prop8NTP = Rel7SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialCreate.PropertyName.Status );
                CswNbtViewProperty Prop8 = PendingRequestsView.AddViewProperty( Rel7, Prop8NTP );
                Prop8.ShowInGrid = false;
                CswNbtViewPropertyFilter Filt9 = PendingRequestsView.AddViewPropertyFilter( Prop8,
                                                          CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                          CswNbtPropFilterSql.FilterResultMode.Hide,
                                                          CswNbtSubField.SubFieldName.Value,
                                                          CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                                          "Pending",
                                                          false,
                                                          false );

                CswNbtMetaDataNodeTypeProp Prop10NTP = Rel7SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialCreate.PropertyName.Description );
                CswNbtViewProperty Prop10 = PendingRequestsView.AddViewProperty( Rel7, Prop10NTP );
                Prop10.SortBy = true;
                Prop10.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop10.Order = 2;
                Prop10.Width = 90;
                CswNbtMetaDataNodeTypeProp Prop11NTP = Rel7SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialCreate.PropertyName.RequestedFor );
                CswNbtViewProperty Prop11 = PendingRequestsView.AddViewProperty( Rel7, Prop11NTP );
                Prop11.Order = 3;
                CswNbtMetaDataNodeTypeProp Prop12NTP = Rel7SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialCreate.PropertyName.NeededBy );
                CswNbtViewProperty Prop12 = PendingRequestsView.AddViewProperty( Rel7, Prop12NTP );
                Prop12.SortBy = true;
                Prop12.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop12.Order = 1;

            }//if we have "Request Material Create"


            CswNbtMetaDataNodeType Rel13SecondNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Request Container Update" );
            if( null != Rel13SecondNT )
            {
                CswNbtViewRelationship Rel13 = PendingRequestsView.AddViewRelationship( Rel13SecondNT, true );

                CswNbtMetaDataNodeTypeProp Prop14NTP = Rel13SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerUpdate.PropertyName.Status );
                CswNbtViewProperty Prop14 = PendingRequestsView.AddViewProperty( Rel13, Prop14NTP );
                Prop14.ShowInGrid = false;
                CswNbtViewPropertyFilter Filt15 = PendingRequestsView.AddViewPropertyFilter( Prop14,
                                                          CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                          CswNbtPropFilterSql.FilterResultMode.Hide,
                                                          CswNbtSubField.SubFieldName.Value,
                                                          CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                                          "Pending",
                                                          false,
                                                          false );

                CswNbtMetaDataNodeTypeProp Prop16NTP = Rel13SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerUpdate.PropertyName.Description );
                CswNbtViewProperty Prop16 = PendingRequestsView.AddViewProperty( Rel13, Prop16NTP );
                Prop16.SortBy = true;
                Prop16.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop16.Order = 2;
                Prop16.Width = 90;
                CswNbtMetaDataNodeTypeProp Prop17NTP = Rel13SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerUpdate.PropertyName.RequestedFor );
                CswNbtViewProperty Prop17 = PendingRequestsView.AddViewProperty( Rel13, Prop17NTP );
                Prop17.Order = 3;
                CswNbtMetaDataNodeTypeProp Prop18NTP = Rel13SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestContainerUpdate.PropertyName.NeededBy );
                CswNbtViewProperty Prop18 = PendingRequestsView.AddViewProperty( Rel13, Prop18NTP );
                Prop18.SortBy = true;
                Prop18.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop18.Order = 1;

            }//if we have "Request Container Update" nt



            CswNbtMetaDataNodeType Rel19SecondNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Request Material Dispense" );
            if( null != Rel19SecondNT )
            {
                CswNbtViewRelationship Rel19 = PendingRequestsView.AddViewRelationship( Rel19SecondNT, true );

                CswNbtMetaDataNodeTypeProp Prop20NTP = Rel19SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.Status );
                CswNbtViewProperty Prop20 = PendingRequestsView.AddViewProperty( Rel19, Prop20NTP );
                Prop20.ShowInGrid = false;
                CswNbtViewPropertyFilter Filt21 = PendingRequestsView.AddViewPropertyFilter( Prop20,
                                                          CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                          CswNbtPropFilterSql.FilterResultMode.Hide,
                                                          CswNbtSubField.SubFieldName.Value,
                                                          CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                                          "Pending",
                                                          false,
                                                          false );

                CswNbtMetaDataNodeTypeProp Prop22NTP = Rel19SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.Description );
                CswNbtViewProperty Prop22 = PendingRequestsView.AddViewProperty( Rel19, Prop22NTP );
                Prop22.SortBy = true;
                Prop22.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop22.Order = 2;
                Prop22.Width = 90;
                CswNbtMetaDataNodeTypeProp Prop23NTP = Rel19SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.RequestedFor );
                CswNbtViewProperty Prop23 = PendingRequestsView.AddViewProperty( Rel19, Prop23NTP );
                Prop23.Order = 3;
                CswNbtMetaDataNodeTypeProp Prop24NTP = Rel19SecondNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestMaterialDispense.PropertyName.NeededBy );
                CswNbtViewProperty Prop24 = PendingRequestsView.AddViewProperty( Rel19, Prop24NTP );
                Prop24.SortBy = true;
                Prop24.SortMethod = NbtViewPropertySortMethod.Ascending;
                Prop24.Order = 1;

            }//if we have "Request Material Dispense" nt

            PendingRequestsView.save();


            if( null != cispro_request_fulfiller_role )
            {
                LandingPage.LandingPageData.Request RequestFulfillerLandingPageRequest = new LandingPage.LandingPageData.Request
                {
                    Type = CswNbtLandingPageItemType.Link,
                    ViewType = "View",
                    PkValue = PendingRequestsView.ViewId.ToString(),
                    NodeTypeId = string.Empty,
                    Text = PendingRequestsView.ViewName,
                    RoleId = cispro_request_fulfiller_role.NodeId.ToString(),
                    ActionId = string.Empty,
                    NewRow = 1,
                    NewColumn = 2
                };

                _CswNbtSchemaModTrnsctn.getLandingPageTable().addLandingPageItem( RequestFulfillerLandingPageRequest );

            }//if we have fulfiller role


        } //Update()
예제 #22
0
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];
            if (CswNbtSubField == null)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Misconfigured View", "CswNbtFieldTypeRuleDefaultImpl.renderViewPropFilter() could not find SubField '" + CswNbtViewPropertyFilterIn.SubfieldName + "' in field type '" + ((CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent).FieldType.ToString() + "' for view '" + CswNbtViewPropertyFilterIn.View.ViewName + "'");
            }

            if (!CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            string ReturnVal  = "";
            string FullColumn = _FilterTableAlias + CswNbtSubField.Column.ToString();

            if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Contains)
            {
                // BZ 7938
                // We store the users by ID, but search by name.  So we have to decode.
                Collection <CswPrimaryKey> MatchingUserKeys = new Collection <CswPrimaryKey>();
                //ICswNbtTree UsersTree = _CswNbtFieldResources.CswNbtResources.Trees.getTreeFromObjectClass( CswNbtMetaDataObjectClassName.NbtObjectClass.UserClass );
                //for( Int32 u = 0; u < UsersTree.getChildNodeCount(); u++ )
                //{
                //    UsersTree.goToNthChild( u );
                CswNbtMetaDataObjectClass UserOC = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.UserClass);
                foreach (CswNbtNode UserNode in UserOC.getNodes(false, false))
                {
                    string UserNodeName = UserNode.NodeName; //UsersTree.getNodeNameForCurrentPosition();
                    if (UserNodeName.ToLower().IndexOf(CswNbtViewPropertyFilterIn.Value) > -1)
                    {
                        MatchingUserKeys.Add(UserNode.NodeId);   //UsersTree.getNodeIdForCurrentPosition() );
                    }
                    //UsersTree.goToParentNode();
                }
                if (MatchingUserKeys.Count > 0)
                {
                    ReturnVal = "(";
                    bool first = true;
                    foreach (CswPrimaryKey UserKey in MatchingUserKeys)
                    {
                        if (!first)
                        {
                            ReturnVal += " or ";
                        }
                        ReturnVal += "'" + CswNbtNodePropUserSelect.delimiter.ToString() + "' || " + FullColumn + " || '" + CswNbtNodePropUserSelect.delimiter.ToString() + "' like '%" + CswNbtNodePropUserSelect.delimiter.ToString() + UserKey.PrimaryKey.ToString() + CswNbtNodePropUserSelect.delimiter.ToString() + "%'";
                        first      = false;
                    }
                    ReturnVal += ")";
                }
                else
                {
                    // We didn't find a match.  This is better than nothing.
                    ReturnVal = "'" + CswNbtNodePropUserSelect.delimiter.ToString() + "' || " + FullColumn + " || '" + CswNbtNodePropUserSelect.delimiter.ToString() + "' like '%" + CswNbtNodePropUserSelect.delimiter.ToString() + CswNbtViewPropertyFilterIn.Value + CswNbtNodePropUserSelect.delimiter.ToString() + "%'";
                }
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotNull)
            {
                ReturnVal = FullColumn + " is not null";
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Null)
            {
                ReturnVal = FullColumn + " is null";
            }
            else
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for UserSelect fields"));
                //break;
            }

            return(ReturnVal);
        }//renderViewPropFilter()
예제 #23
0
        public override void update()
        {

            CswNbtMetaDataObjectClass feedbackOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.FeedbackClass, "docs.gif", false, false );

            CswNbtMetaDataObjectClassProp caseNumberOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
             {
                 PropName = CswNbtObjClassFeedback.CaseNumberPropertyName,
                 FieldType = CswNbtMetaDataFieldType.NbtFieldType.Sequence
             } );

            Int32 userOCID = _CswNbtSchemaModTrnsctn.MetaData.getObjectClassId( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass );
            CswNbtMetaDataObjectClassProp authorOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
             {
                 PropName = CswNbtObjClassFeedback.AuthorPropertyName,
                 FieldType = CswNbtMetaDataFieldType.NbtFieldType.Relationship,
                 IsFk = true,
                 FkType = NbtViewRelatedIdType.ObjectClassId.ToString(),
                 FkValue = userOCID,
                 ServerManaged = true,
                 SetValOnAdd = true
             } );

            CswNbtMetaDataObjectClassProp dateSubmittedOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.DateSubmittedPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.DateTime,
                Extended = CswNbtNodePropDateTime.DateDisplayMode.DateTime.ToString(),
                ServerManaged = true,

                SetValOnAdd = true
            } );

            CswNbtMetaDataObjectClassProp categoryOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.CategoryPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.List,
                ListOptions = "Bug Report,Feature Request,Question,Praise",
                SetValOnAdd = true
            } );

            CswNbtMetaDataObjectClassProp subjectOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
             {
                 PropName = CswNbtObjClassFeedback.SubjectPropertyName,
                 FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text,
                 SetValOnAdd = true
             } );

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.SummaryPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Memo,
                SetValOnAdd = true
            } );

            CswNbtMetaDataObjectClassProp statusOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.StatusPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.List,
                ListOptions = "Pending review,Resolved,Awaiting author response"
            } );
            statusOCP.DefaultValue.Field1 = "Pending review"; //indicates the ball is in supports/admins court
            statusOCP.DefaultValue.Gestalt = "Pending review";

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.LoadUserContextPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Button
            } );

            CswNbtMetaDataObjectClassProp commentsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
             {
                 PropName = CswNbtObjClassFeedback.DiscussionPropertyName,
                 FieldType = CswNbtMetaDataFieldType.NbtFieldType.Comments
             } );

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.SelectedNodeIDPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text,
                ServerManaged = true
            } );

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.ViewPropertyName,
                //FieldType = CswNbtMetaDataFieldType.NbtFieldType.ViewPickList,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.ViewReference,
                ServerManaged = true
            } );

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.ActionPropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text,
                ServerManaged = true
            } );

            _CswNbtSchemaModTrnsctn.createObjectClassProp( feedbackOC, new CswNbtWcfMetaDataModel.ObjectClassProp()
            {
                PropName = CswNbtObjClassFeedback.CurrentViewModePropertyName,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text,
                ServerManaged = true
            } );

            //create a default node-type of feedbackobj called feedback
            CswNbtMetaDataNodeType feedbackNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( feedbackOC.ObjectClassId, "Feedback", "System" );
            feedbackNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassFeedback.CaseNumberPropertyName ) );

            CswNbtMetaDataObjectClass roleObj = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass );

            //set default permissions
            Collection<CswNbtNode> roles = roleObj.getNodes( false, true );
            foreach( CswNbtObjClassRole role in roles )
            {
                _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.Create, feedbackNT, role, true );
                _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.View, feedbackNT, role, true );
                _CswNbtSchemaModTrnsctn.Permit.set( Security.CswNbtPermit.NodeTypePermission.Edit, feedbackNT, role, true );
            }

            Int32 sequenceId = _CswNbtSchemaModTrnsctn.makeSequence( new CswSequenceName( "Feedback CaseNo" ), "F", "", 6, 1 );
            CswNbtMetaDataNodeTypeProp caseNumberNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.CaseNumberPropertyName );
            caseNumberNTP.setSequence( sequenceId );
            caseNumberNTP.ReadOnly = true; //default to read-only, but allow it to be changed

            CswNbtMetaDataNodeTypeProp authorNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.AuthorPropertyName );
            authorNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );

            CswNbtMetaDataNodeTypeProp dateNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.DateSubmittedPropertyName );
            dateNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );

            CswNbtMetaDataNodeTypeProp viewNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.ViewPropertyName );
            viewNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit );

            CswNbtMetaDataNodeTypeProp actionNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.ActionPropertyName );
            actionNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit );

            CswNbtMetaDataNodeTypeProp selectedNodeIdNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.SelectedNodeIDPropertyName );
            selectedNodeIdNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit );

            CswNbtMetaDataNodeTypeProp currentViewModeNTP = feedbackNT.getNodeTypePropByObjectClassProp( CswNbtObjClassFeedback.CurrentViewModePropertyName );
            currentViewModeNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit );
            currentViewModeNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );

            //create the role view for admins
            CswNbtNode adminRoleNode = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "Administrator" );
            if( null != adminRoleNode )
            {
                CswNbtView feedbackView = _CswNbtSchemaModTrnsctn.makeView();

                feedbackView.makeNew( "Feedback", NbtViewVisibility.Role, adminRoleNode.NodeId );
                feedbackView.Category = "System";

                //add root
                CswNbtViewRelationship ParentRelationship = feedbackView.AddViewRelationship( feedbackOC, true );

                //add properties
                CswNbtViewProperty caseNumberVP = feedbackView.AddViewProperty( ParentRelationship, caseNumberOCP );
                CswNbtViewProperty dateSubmittedVp = feedbackView.AddViewProperty( ParentRelationship, dateSubmittedOCP );
                CswNbtViewProperty categoryVP = feedbackView.AddViewProperty( ParentRelationship, categoryOCP );
                CswNbtViewProperty authorVP = feedbackView.AddViewProperty( ParentRelationship, authorOCP );
                CswNbtViewProperty subjectVP = feedbackView.AddViewProperty( ParentRelationship, subjectOCP );
                CswNbtViewProperty statusVP = feedbackView.AddViewProperty( ParentRelationship, statusOCP );
                CswNbtViewProperty commentsVP = feedbackView.AddViewProperty( ParentRelationship, commentsOCP );

                caseNumberVP.Order = 1;
                dateSubmittedVp.Order = 2;
                categoryVP.Order = 3;
                authorVP.Order = 4;
                subjectVP.Order = 5;
                statusVP.Order = 6;
                commentsVP.Order = 7;

                caseNumberVP.Width = 15;
                dateSubmittedVp.Width = 20;
                categoryVP.Width = 20;
                authorVP.Width = 20;
                subjectVP.Width = 25;
                statusVP.Width = 20;
                commentsVP.Width = 100;

                feedbackView.SetViewMode( NbtViewRenderingMode.Grid );

                CswNbtViewPropertyFilter feedbackViewFilter = feedbackView.AddViewPropertyFilter( statusVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals, Value: "Pending review", ShowAtRuntime: true );
                feedbackView.save();
            }

            // create the global view for all users to view their own feedback
            CswNbtView myFeedbackView = _CswNbtSchemaModTrnsctn.makeView();

            myFeedbackView.makeNew( "My Feedback", NbtViewVisibility.Global );
            myFeedbackView.Category = "System";

            //add root
            CswNbtViewRelationship myParentRelationship = myFeedbackView.AddViewRelationship( feedbackOC, true );

            //add properties
            CswNbtViewProperty myCaseNumberVP = myFeedbackView.AddViewProperty( myParentRelationship, caseNumberOCP );
            CswNbtViewProperty myDateSubmittedVp = myFeedbackView.AddViewProperty( myParentRelationship, dateSubmittedOCP );
            CswNbtViewProperty myCategoryVP = myFeedbackView.AddViewProperty( myParentRelationship, categoryOCP );
            CswNbtViewProperty myAuthorVP = myFeedbackView.AddViewProperty( myParentRelationship, authorOCP );
            CswNbtViewProperty mySubjectVP = myFeedbackView.AddViewProperty( myParentRelationship, subjectOCP );
            CswNbtViewProperty myStatusVP = myFeedbackView.AddViewProperty( myParentRelationship, statusOCP );
            CswNbtViewProperty myCommentsVP = myFeedbackView.AddViewProperty( myParentRelationship, commentsOCP );

            myCaseNumberVP.Order = 1;
            myDateSubmittedVp.Order = 2;
            myCategoryVP.Order = 3;
            myAuthorVP.Order = 4;
            mySubjectVP.Order = 5;
            myStatusVP.Order = 6;
            myCommentsVP.Order = 7;

            myCaseNumberVP.Width = 15;
            myDateSubmittedVp.Width = 20;
            myCategoryVP.Width = 20;
            myAuthorVP.Width = 20;
            mySubjectVP.Width = 25;
            myStatusVP.Width = 20;
            myCommentsVP.Width = 100;

            myFeedbackView.SetViewMode( NbtViewRenderingMode.Grid );

            //observe "me", this is voodoo (or magic...w/e) and sets it to the current user (from steve)
            CswNbtViewPropertyFilter myFeedbackViewFilter = myFeedbackView.AddViewPropertyFilter( myAuthorVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals, Value: "me", ShowAtRuntime: false );
            myFeedbackView.save();

        }//Update()
        public static string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtFieldResources CswNbtFieldResources, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, CswEnumNbtPropColumn Column)
        {
            string ValueColumn  = "jnp." + Column.ToString();
            string ReturnVal    = string.Empty;
            bool   IncludesTime = false;

            DateTime FilterValue = DateTime.MinValue;
            string   Value       = CswNbtViewPropertyFilterIn.Value.ToLower().Trim();

            if (Value.StartsWith("today"))
            {
                Int32 PlusDays = 0;
                if (Value.Length > "today".Length)
                {
                    string Operator = Value.Substring("today".Length, 1);
                    string Operand  = Value.Substring("today".Length + 1);
                    if (CswTools.IsInteger(Operand))
                    {
                        PlusDays = CswConvert.ToInt32(Operand);
                        if (Operator == "-")
                        {
                            PlusDays = PlusDays * -1;
                        }
                    }
                }
                FilterValue = DateTime.Now.AddDays(PlusDays).Date;
            }
            else
            {
                FilterValue = CswConvert.ToDateTime(CswNbtViewPropertyFilterIn.Value);
                if (FilterValue.TimeOfDay != TimeSpan.Zero)  // midnight
                {
                    IncludesTime = true;
                }
            }

            if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotNull)
            {
                ReturnVal = ValueColumn + " is not null";
            }
            else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Null)
            {
                ReturnVal = ValueColumn + " is null";
            }
            else if (FilterValue != DateTime.MinValue)
            {
                // case 26844
                // If no time was specified in our filter value, then
                // we need to ignore the time part of values in our comparisons

                string ThisDayString = CswNbtFieldResources.CswNbtResources.getDbNativeDate(FilterValue);
                string NextDayString = CswNbtFieldResources.CswNbtResources.getDbNativeDate(FilterValue.AddDays(1));

                if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Equals)
                {
                    if (IncludesTime)
                    {
                        ReturnVal = ValueColumn + " = " + ThisDayString;
                    }
                    else
                    {
                        ReturnVal  = ValueColumn + " >= " + ThisDayString;
                        ReturnVal += " and " + ValueColumn + " < " + NextDayString;
                    }
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.GreaterThan)
                {
                    if (IncludesTime)
                    {
                        ReturnVal = ValueColumn + " > " + ThisDayString;
                    }
                    else
                    {
                        ReturnVal = ValueColumn + " >= " + NextDayString;
                    }
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.GreaterThanOrEquals)
                {
                    ReturnVal = ValueColumn + " >= " + ThisDayString;
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.LessThan)
                {
                    ReturnVal = ValueColumn + " < " + ThisDayString;
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.LessThanOrEquals)
                {
                    if (IncludesTime)
                    {
                        ReturnVal = ValueColumn + " <= " + ThisDayString;
                    }
                    else
                    {
                        ReturnVal = ValueColumn + " < " + NextDayString;   // not <=, see case 28620
                    }
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotEquals)
                {
                    if (IncludesTime)
                    {
                        ReturnVal = ValueColumn + " <> " + ThisDayString;
                    }
                    else
                    {
                        ReturnVal  = "(" + ValueColumn + " < " + ThisDayString;
                        ReturnVal += " or " + ValueColumn + " >= " + NextDayString + ")";
                    }
                }
                else
                {
                    throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtNodeProp.GetFilter()) { " + CswNbtViewPropertyFilterIn.FilterMode.ToString());
                } // switch( CswNbtViewPropertyFilterIn.FilterMode )
            }     // if( FilterValue != DateTime.MinValue )

            return(ReturnVal);
        }//renderViewPropFilter()
예제 #25
0
        // UseNumericHack: SEE BZ 6661

        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, CswNbtSubField CswNbtSubField, Dictionary <string, string> ParameterCollection, int FilterNumber, bool UseNumericHack)
        {
            if (CswNbtSubField == null)
            {
                throw (new CswDniException("CswNbtPropFilterSql.renderViewPropFilter() got a null CswNbtSubField for view: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            if (false == CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            string Column           = CswNbtSubField.Column.ToString();
            string FilterTableAlias = _FilterTableAlias;
            //if( CswNbtSubField.RelationalColumn != string.Empty )
            //{
            //    Column = CswNbtSubField.RelationalColumn;
            //    FilterTableAlias = "n.";
            //}

            string ParameterName = "filt" + FilterNumber + "filtval";
            string ReturnVal     = "";

            //This is sort of a hacky way of dealing with the bz # 6936 issue. But since it's all going to need to be
            //revisited for bz #6682 anyway, this seems like the clearest and simplest way of handling the problem.
            //Also, see 7095
            if (CswEnumNbtFilterMode.Null != CswNbtViewPropertyFilterIn.FilterMode &&
                CswEnumNbtFilterMode.NotNull != CswNbtViewPropertyFilterIn.FilterMode)
            {
                if (UseNumericHack)
                {
                    if (
                        CswEnumNbtFilterMode.Begins == CswNbtViewPropertyFilterIn.FilterMode ||
                        CswEnumNbtFilterMode.Contains == CswNbtViewPropertyFilterIn.FilterMode ||
                        CswEnumNbtFilterMode.Ends == CswNbtViewPropertyFilterIn.FilterMode
                        )
                    {
                        throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for numeric values"));
                    }


                    string NumericValueColumn = " nvl(" + FilterTableAlias + Column + ", 0) ";
                    ReturnVal = NumericValueColumn;
                    if (_numericHackFilterModes.ContainsKey(CswNbtViewPropertyFilterIn.FilterMode))
                    {
                        ReturnVal += _numericHackFilterModes[CswNbtViewPropertyFilterIn.FilterMode];
                    }
                    else
                    {
                        throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtPropFilterSql.renderViewPropFilter()) { " + CswNbtViewPropertyFilterIn.FilterMode.ToString());
                    }

                    ReturnVal += ":" + ParameterName;
                    ParameterCollection.Add(ParameterName, CswNbtViewPropertyFilterIn.Value);

                    if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.In)
                    {
                        ReturnVal += ")";
                    }
                }
                else
                {
                    string CasePrepend = "";
                    string CaseAppend  = "";
                    if (!CswNbtViewPropertyFilterIn.CaseSensitive)
                    {
                        CasePrepend = "lower(";
                        CaseAppend  = ")";
                    }

                    string NonNumericValueColumn = CasePrepend + FilterTableAlias + Column + CaseAppend;
                    string SafeValue             = CswNbtViewPropertyFilterIn.Value.Replace("'", "''"); // case 21455


                    if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Begins)
                    {
                        ReturnVal = NonNumericValueColumn + " like " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue + "%");
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Contains)
                    {
                        ReturnVal = NonNumericValueColumn + " like " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, "%" + SafeValue + "%");
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotContains)
                    {
                        ReturnVal = "(" + NonNumericValueColumn + " not like " + CasePrepend + ":" + ParameterName + CaseAppend
                                    + " or " + NonNumericValueColumn + " is null" + ")";
                        ParameterCollection.Add(ParameterName, "%" + SafeValue + "%");
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Ends)
                    {
                        ReturnVal = NonNumericValueColumn + " like " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, "%" + SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Equals)
                    {
                        //covers the case of clobs
                        ReturnVal = NonNumericValueColumn + " like " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.GreaterThan)
                    {
                        ReturnVal = NonNumericValueColumn + " > " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.GreaterThanOrEquals)
                    {
                        ReturnVal = NonNumericValueColumn + " >= " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.LessThan)
                    {
                        ReturnVal = NonNumericValueColumn + " < " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.LessThanOrEquals)
                    {
                        ReturnVal = NonNumericValueColumn + " <= " + CasePrepend + ":" + ParameterName + CaseAppend;
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotEquals)
                    {
                        ReturnVal = "(" + NonNumericValueColumn + " not like " + CasePrepend + ":" + ParameterName + CaseAppend +
                                    " or " + NonNumericValueColumn + " is null )";   //case 21623
                        ParameterCollection.Add(ParameterName, SafeValue);
                    }
                    else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.In)
                    {
                        //ReturnVal = NonNumericValueColumn + " in( " + CasePrepend + "'" + SafeValue + "'" + CaseAppend + " ) ";
                        // see case 30165

                        //ReturnVal = NonNumericValueColumn + " in(:" + ParameterName + ") ";
                        //ParameterCollection.Add( ParameterName, CswNbtViewPropertyFilterIn.Value );
                        // see case 31330

                        ReturnVal = NonNumericValueColumn + " in(" + CswNbtViewPropertyFilterIn.Value + ") ";
                    }
                    else
                    {
                        throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtPropFilterSql.renderViewPropFilter()) { " + CswNbtViewPropertyFilterIn.FilterMode.ToString());
                    }
                }//if-else UserNumericHack
            }
            else
            {
                string NullValueColumn = FilterTableAlias + Column;

                if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotNull)
                {
                    ReturnVal = NullValueColumn + " is not null";
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Null)
                {
                    ReturnVal = NullValueColumn + " is null";
                }
                else
                {
                    throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtPropFilterSql.renderViewPropFilter(): " + CswNbtViewPropertyFilterIn.FilterMode.ToString());
                }
            }//if-else filter mode is not null or not-null

            return(ReturnVal);
        } //renderViewPropFilter()
예제 #26
0
 public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
 {
     return(_CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber));
 }//makeWhereClause()
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            string ReturnVal = string.Empty;

            CswNbtSubField CswNbtSubField = null;

            CswNbtSubField = SubFields[CswNbtViewPropertyFilterIn.SubfieldName];

            if (!CswNbtSubField.SupportedFilterModes.Contains(CswNbtViewPropertyFilterIn.FilterMode))
            {
                throw (new CswDniException("Filter mode " + CswNbtViewPropertyFilterIn.FilterMode.ToString() + " is not supported for sub field: " + CswNbtSubField.Name + "; view name is: " + CswNbtViewPropertyFilterIn.View.ViewName));
            }

            // Are we using a Date filter?
            if (CswNbtSubField.Name == DateAnsweredSubField.Name || CswNbtSubField.Name == DateCorrectedSubField.Name)
            {
                ReturnVal = CswNbtFieldTypeRuleDateImpl.renderViewPropFilter(RunAsUser, _CswNbtFieldResources, CswNbtViewPropertyFilterIn, CswNbtSubField.Column);
            }
            else if (CswNbtSubField.Name == IsCompliantSubField.Name)
            {
                string ValueColumn = "jnp." + CswNbtSubField.Column.ToString();
                if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.Equals)
                {
                    if (CswNbtViewPropertyFilterIn.Value == "1" || CswNbtViewPropertyFilterIn.Value.ToLower() == "true")
                    {
                        ReturnVal = ValueColumn + " = '1' ";
                    }
                    else if (CswNbtViewPropertyFilterIn.Value == "0" || CswNbtViewPropertyFilterIn.Value.ToLower() == "false")
                    {
                        ReturnVal = ValueColumn + " = '0' ";
                    }
                    else
                    {
                        ReturnVal = ValueColumn + " is null";
                    }
                }
                else if (CswNbtViewPropertyFilterIn.FilterMode == CswEnumNbtFilterMode.NotEquals)
                {
                    if (CswNbtViewPropertyFilterIn.Value == "1" || CswNbtViewPropertyFilterIn.Value.ToLower() == "true")
                    {
                        ReturnVal = "(" + ValueColumn + " = '0' or " + ValueColumn + " is null) ";
                    }
                    else if (CswNbtViewPropertyFilterIn.Value == "0" || CswNbtViewPropertyFilterIn.Value.ToLower() == "false")
                    {
                        ReturnVal = "(" + ValueColumn + " = '1' or " + ValueColumn + " is null) ";
                    }
                    else
                    {
                        ReturnVal = "(" + ValueColumn + " = '1' or " + ValueColumn + " = '0') ";
                    }
                }
                else
                {
                    throw new CswDniException(CswEnumErrorType.Error, "Invalid filter", "An invalid FilterMode was encountered in CswNbtFieldTypeRuleQuestion.renderViewPropFilter()");
                }
            }
            else
            {
                ReturnVal = (_CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber));
            }

            return(ReturnVal);
        }//renderViewPropFilter()