Example #1
0
        } // Run()

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

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

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

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

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

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

            return(RetJson);
        } // Run()
        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()
        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()
Example #4
0
 /// <summary>
 /// Sets a permission for the given Action for the user
 /// </summary>
 public void set(CswNbtAction Action, ICswNbtUser User, bool value)
 {
     if (User != null)
     {
         set(Action, _getRole(User.RoleId), value);
     }
 }
        public CswNbtWebServiceContainer(CswNbtResources CswNbtResources)
        {
            _CswNbtResources = CswNbtResources;

            _CurrentUser = _CswNbtResources.CurrentNbtUser;
            CultureInfo Culture = Thread.CurrentThread.CurrentCulture;

            _TextInfo = Culture.TextInfo;
        }
Example #6
0
 public CswNbtPermitInfo(CswNbtResources CswNbtResources, ICswNbtUser CswNbtUser, CswNbtObjClassRole CswNbtObjClassRole, CswNbtMetaDataNodeType NodeTypeIn, CswEnumNbtNodeTypePermission nodeTypePermissionIn, CswPrimaryKey CswPrimaryKey, CswNbtMetaDataNodeTypeProp PropTypeIn)
 {
     PropType            = PropTypeIn;
     _NodePrimeKey       = CswPrimaryKey;
     NodeType            = NodeTypeIn;
     _CswNbtResources    = CswNbtResources;
     _CswNbtUser         = CswNbtUser;
     _CswNbtObjClassRole = CswNbtObjClassRole;
     NodeTypePermission  = nodeTypePermissionIn;
 }//ctor
 public CswNbtTreeLoaderFromXmlViewByLevel(CswNbtResources CswNbtResources, ICswNbtUser RunAsUser, ICswNbtTree pCswNbtTree, CswNbtView View, bool IncludeSystemNodes, bool IncludeHiddenNodes, bool IncludeTempNodes)
     : base(pCswNbtTree)
 {
     _CswNbtResources    = CswNbtResources;
     _RunAsUser          = RunAsUser;
     _View               = View;
     _IncludeSystemNodes = IncludeSystemNodes;
     _IncludeHiddenNodes = IncludeHiddenNodes;
     _IncludeTempNodes   = IncludeTempNodes || View.IncludeTempNodes;
 }
Example #8
0
 public CswNbtActRequesting(CswNbtResources CswNbtResources, ICswNbtUser ThisUser = null)
 {
     _CswNbtResources = CswNbtResources;
     if (null == ThisUser)
     {
         _ThisUser = _CswNbtResources.CurrentNbtUser;
     }
     _RequestOC     = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestClass);
     _RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass);
 }
Example #9
0
        /// <summary>
        /// Instance a Tree from a View
        /// </summary>
        public ICswNbtTree getTreeFromView(ICswNbtUser RunAsUser, CswNbtView View, bool RequireViewPermissions, bool IncludeSystemNodes, bool IncludeHiddenNodes, bool IncludeTempNodes = false, Int32 PerLevelNodeLimit = Int32.MinValue)
        {
            ICswNbtTree ReturnVal = new CswNbtTreeNodes("", View, _CswNbtResources, _CswNbtNodeCollection, IsFullyPopulated: true);

            CswNbtTreeLoaderFromXmlViewByLevel TreeLoader = new CswNbtTreeLoaderFromXmlViewByLevel(_CswNbtResources, RunAsUser, ReturnVal, View, IncludeSystemNodes, IncludeHiddenNodes, IncludeTempNodes);

            TreeLoader.load(RequireViewPermissions, PerLevelNodeLimit);

            return(ReturnVal);
        }//getTreeFromView()
Example #10
0
        private void _initPermissionInfo(CswNbtObjClassRole CswNbtObjClassRole, ICswNbtUser CswNbtUser, CswNbtMetaDataNodeType NodeType, CswEnumNbtNodeTypePermission Permission, CswPrimaryKey CswPrimaryKey = null, CswNbtMetaDataNodeTypeProp PropType = null)
        {
            if (null == CswNbtObjClassRole)
            {
                CswPrimaryKey RoleId = null;
                if (null != CswNbtUser)
                {
                    RoleId = CswNbtUser.RoleId;
                }
                else
                {
                    if (null != _CswNbtResources.CurrentNbtUser)
                    {
                        CswNbtUser = _CswNbtResources.CurrentNbtUser;
                        RoleId     = CswNbtUser.RoleId;
                    }
                }//if the user we got is null

                if (null != RoleId)
                {
                    CswNbtObjClassRole = _getRole(RoleId);
                } //if we were able to get a roleid
            }     //if the role we got is null

            if (null != CswNbtObjClassRole)
            {
                CswNbtPermitInfoKey CswNbtPermitInfoKey = new CswNbtPermitInfoKey(CswNbtObjClassRole, NodeType);
                if (_PermitInfoItems.ContainsKey(CswNbtPermitInfoKey))
                {
                    _CswNbtPermitInfo = _PermitInfoItems[CswNbtPermitInfoKey];

                    //must reset these per-request because they change per request for the same role and nodetype (e.g., see allowAny() )
                    if (null != CswPrimaryKey)
                    {
                        _CswNbtPermitInfo.NodePrimeKey = CswPrimaryKey;
                    }

                    if (null != PropType)
                    {
                        _CswNbtPermitInfo.PropType = PropType;
                    }

                    _CswNbtPermitInfo.NodeTypePermission = Permission;
                }
                else
                {
                    _CswNbtPermitInfo = new CswNbtPermitInfo(_CswNbtResources, CswNbtUser, CswNbtObjClassRole, NodeType, Permission, CswPrimaryKey, PropType);
                    _PermitInfoItems.Add(CswNbtPermitInfoKey, _CswNbtPermitInfo);
                }
            }
            else //the permit info in this case is not catalogued, and permit info won't allow any ops to proceed
            {
                _CswNbtPermitInfo = new CswNbtPermitInfo(_CswNbtResources, CswNbtUser, CswNbtObjClassRole, NodeType, Permission, CswPrimaryKey, PropType);
            } //if we were able to retrieve a role
        }     //_initPermissionInfo()
Example #11
0
        /// <summary>
        /// Instance a Tree from a Universal Search
        /// </summary>
        public ICswNbtTree getTreeFromSearch(ICswNbtUser RunAsUser, string SearchTerm, CswEnumSqlLikeMode SearchType, string WhereClause,
                                             bool RequireViewPermissions, bool IncludeSystemNodes, bool IncludeHiddenNodes, bool SingleNodetype, bool OnlyMergeableNodeTypes, Int32 PerLevelNodeLimit = Int32.MinValue, List <string> ExcludeNodeIds = null)
        {
            ICswNbtTree ReturnVal = new CswNbtTreeNodes("", null, _CswNbtResources, _CswNbtNodeCollection, IsFullyPopulated: true);
            CswNbtTreeLoaderFromSearchByLevel TreeLoader = new CswNbtTreeLoaderFromSearchByLevel(_CswNbtResources, RunAsUser, ReturnVal, SearchTerm, SearchType, WhereClause,
                                                                                                 IncludeSystemNodes, IncludeHiddenNodes, SingleNodetype, OnlyMergeableNodeTypes, ExcludeNodeIds);

            TreeLoader.load(RequireViewPermissions, PerLevelNodeLimit);

            return(ReturnVal);
        } //getTreeFromSearch()
Example #12
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()
        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);
        }
Example #14
0
        public CswNbtWebServiceInspectionDesign(CswNbtResources CswNbtResources)
        {
            _CswNbtResources = CswNbtResources;

            if (false == _CswNbtResources.Permit.can(CswEnumNbtActionName.Create_Inspection))
            {
                throw new CswDniException(CswEnumErrorType.Error, "You do not have permission for this Action.", "Attempted to access the Inspection Design wizard with role of " + _CswNbtResources.CurrentNbtUser.Rolename);
            }

            _CurrentUser = _CswNbtResources.CurrentNbtUser;
            CultureInfo Culture = Thread.CurrentThread.CurrentCulture;

            _TextInfo = Culture.TextInfo;
        }
        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()
Example #16
0
 /// <summary>
 /// Checks to see if a view is visible to a given user
 /// </summary>
 public bool isVisible(CswNbtView View, ICswNbtUser User, bool IncludeEmptyViews, bool SearchableOnly, bool ForEdit = false)
 {
     return(((View.Root.ChildRelationships.Count > 0 &&
              (
                  View.Root.ChildRelationships.Any(R => R.SecondType != CswEnumNbtViewRelatedIdType.NodeTypeId ||
                                                   _CswNbtResources.Permit.canAnyTab(
                                                       CswEnumNbtNodeTypePermission.View,
                                                       _CswNbtResources.MetaData.getNodeType(R.SecondId),
                                                       User)))
              ) || IncludeEmptyViews) &&
            View.IsFullyEnabled() &&
            (IncludeEmptyViews || View.ViewMode != CswEnumNbtViewRenderingMode.Grid || null != View.findFirstProperty()) &&
            (!SearchableOnly || View.IsSearchable()) &&
            (false == ForEdit || (_CswNbtResources.CurrentNbtUser.Username == CswNbtObjClassUser.ChemSWAdminUsername || false == CswConvert.ToBoolean(View.IsSystem))));
 }
Example #17
0
        /// <summary>
        /// Returns true if the user has the appropriate permissions for the Action
        /// </summary>
        public bool can(CswNbtAction Action, ICswNbtUser User)
        {
            bool ret = false;

            if (null != Action && null != User)
            {
                if (User is CswNbtSystemUser || User.Username == CswNbtObjClassUser.ChemSWAdminUsername)
                {
                    ret = true;
                }
                else
                {
                    ret = can(Action, _getRole(User.RoleId));
                }
            }
            return(ret);
        } // can( CswNbtAction Action, ICswNbtUser User )
 public CswNbtTreeLoaderFromSearchByLevel(CswNbtResources CswNbtResources, ICswNbtUser RunAsUser, ICswNbtTree pCswNbtTree, string SearchTerm, CswEnumSqlLikeMode SearchType, string WhereClause,
                                          bool IncludeSystemNodes, bool IncludeHiddenNodes, bool SingleNodetype, bool OnlyMergeableNodeTypes, List <string> ExcludeNodeIds = null)
     : base(pCswNbtTree)
 {
     _CswNbtResources        = CswNbtResources;
     _RunAsUser              = RunAsUser;
     _SearchTerm             = _makeSafeSearchTerm(SearchTerm);
     _SearchType             = SearchType;
     _ExtraWhereClause       = WhereClause;
     _IncludeSystemNodes     = IncludeSystemNodes;
     _IncludeHiddenNodes     = IncludeHiddenNodes;
     _SingleNodetype         = SingleNodetype;
     _OnlyMergeableNodeTypes = OnlyMergeableNodeTypes;
     if (null != ExcludeNodeIds)
     {
         _ExcludeNodeIds = new CswCommaDelimitedString(string.Join(",", ExcludeNodeIds.ToArray()));
     }
 }
Example #19
0
        public JObject getViewsList(string ParentId, ICswNbtUser CurrentUser)
        {
            // All Views
            JObject RetJson = new JObject();
            Dictionary <CswNbtViewId, CswNbtView> MobileViews = _CswNbtResources.ViewSelect.getVisibleViews(string.Empty, CurrentUser, false, _ForMobile, false, NbtViewRenderingMode.Any);

            if (MobileViews.Count == 0)
            {
                RetJson["-1"] = "No Views Have Been Configured for Mobile.";
            }
            else
            {
                foreach (CswNbtView MobileView in MobileViews.Values)
                {
                    RetJson[MobileView.ViewId.ToString()] = MobileView.ViewName;
                }
            }
            return(RetJson);
        } // Run()
Example #20
0
        public Collection <CswNbtSearch> getSearches(ICswNbtUser User = null)
        {
            Collection <CswNbtSearch> ret = new Collection <CswNbtSearch>();

            if (null == User)
            {
                User = _CswNbtResources.CurrentNbtUser;
            }

            if (null != User && null != User.UserId && Int32.MinValue != User.UserId.PrimaryKey)
            {
                CswTableSelect SearchSelect = _CswNbtResources.makeCswTableSelect("CswNbtSearchManager_getSearches", SearchTableName);
                DataTable      SearchTable  = SearchSelect.getTable("userid", User.UserId.PrimaryKey);
                foreach (DataRow SearchRow in SearchTable.Rows)
                {
                    CswNbtSearch thisSearch = new CswNbtSearch(_CswNbtResources);
                    thisSearch.FromSearchRow(SearchRow);
                    ret.Add(thisSearch);
                }
            }
            return(ret);
        } // getSearches()
Example #21
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);
        }
Example #22
0
 /// <summary>
 /// True if the user is allowed to edit quotas
 /// </summary>
 public bool UserCanEditQuotas( ICswNbtUser User )
 {
     return ( User.Username == CswNbtObjClassUser.ChemSWAdminUsername || User is CswNbtSystemUser );
 }
        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()
Example #24
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()
        public static void jAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, JObject SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, bool IsMobile = false)
        {
            if (SvcReturn != null)
            {
                SvcReturn["AuthenticationStatus"]     = AuthenticationStatusIn.ToString();
                SvcReturn["AuthenticationStatusText"] = CswEnumAuthenticationStatus.EuphamizedText[AuthenticationStatusIn];
                if (false == IsMobile)
                {
                    SvcReturn["server"] = Environment.MachineName;
                    if (null != CswNbtResources)
                    {
                        if (null != CswNbtResources.CswSessionManager)
                        {
                            SvcReturn["timeout"] = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                        }
                        if (AuthenticationStatusIn == CswEnumAuthenticationStatus.ExpiredPassword)
                        {
                            ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                            SvcReturn.Add(new JProperty("nodeid", CurrentUser.UserId.ToString()));
                            CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                            {
                                NodeId        = CurrentUser.UserId,
                                NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                                NodeTypeId    = CurrentUser.UserNodeTypeId,
                                ObjectClassId = CurrentUser.UserObjectClassId
                            };
                            SvcReturn.Add(new JProperty("nodekey", FakeKey.ToString()));
                            CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                            SvcReturn.Add(new JProperty("passwordpropid", PasswordPropIdAttr.ToString()));
                        }

                        SvcReturn["timer"] = new JObject();

                        SvcReturn["timer"]["serverinit"] = Math.Round(CswNbtResources.ServerInitTime, 3);
                        CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);
                        if (LogLevel == CswNbtResources.UnknownEnum)
                        {
                            LogLevel = CswEnumLogLevels.Error;
                        }
                        SvcReturn["LogLevel"] = LogLevel.ToString().ToLower();

                        SvcReturn["timer"]["customerid"]    = CswNbtResources.AccessId;
                        SvcReturn["timer"]["dbinit"]        = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                        SvcReturn["timer"]["dbquery"]       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                        SvcReturn["timer"]["dbcommit"]      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                        SvcReturn["timer"]["dbdeinit"]      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                        SvcReturn["timer"]["treeloadersql"] = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                        SvcReturn["timer"]["servertotal"]   = Math.Round(CswNbtResources.TotalServerTime, 3);

                        // Return any messages acquired along the way
                        if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                        {
                            JArray Messages = new JArray();
                            SvcReturn["messages"] = Messages;
                            foreach (CswWebSvcReturnBase.ErrorMessage Message in CswNbtResources.Messages)
                            {
                                Messages.Add(Message.ToJObject());
                            }
                        }
                    }//if( null != CswNbtResources )
                }
            }
        }
Example #26
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()
        public static void wAddAuthenticationStatus(CswNbtResources CswNbtResources, CswSessionResourcesNbt CswSessionResources, CswWebSvcReturn SvcReturn, CswEnumAuthenticationStatus AuthenticationStatusIn, HttpContext HttpContext)
        {
            // ******************************************
            // IT IS VERY IMPORTANT for this function not to require the use of database resources,
            // since it occurs AFTER the call to _deInitResources(), and thus will leak Oracle connections
            // (see case 26273)
            // ******************************************
            if (null != SvcReturn)
            {
                SvcReturn.Authentication = SvcReturn.Authentication ?? new CswWebSvcSessionAuthenticateData.Authentication.Response();
                SvcReturn.Authentication.AuthenticationStatus = AuthenticationStatusIn;
                if (null != CswNbtResources)
                {
                    if (null != CswNbtResources.CswSessionManager)
                    {
                        SvcReturn.Authentication.TimeOut = CswDateTime.ToClientAsJavascriptString(CswNbtResources.CswSessionManager.TimeoutDate);
                    }
                    if (SvcReturn.Authentication.AuthenticationStatus == CswEnumAuthenticationStatus.ExpiredPassword)
                    {
                        SvcReturn.Authentication.ExpirationReset = new CswWebSvcSessionAuthenticateData.Authentication.Response.Expired();

                        ICswNbtUser CurrentUser = CswNbtResources.CurrentNbtUser;
                        SvcReturn.Authentication.ExpirationReset.UserId = CurrentUser.UserId.ToString();
                        CswNbtNodeKey FakeKey = new CswNbtNodeKey()
                        {
                            NodeId        = CurrentUser.UserId,
                            NodeSpecies   = CswEnumNbtNodeSpecies.Plain,
                            NodeTypeId    = CurrentUser.UserNodeTypeId,
                            ObjectClassId = CurrentUser.UserObjectClassId
                        };
                        SvcReturn.Authentication.ExpirationReset.UserKey = FakeKey.ToString();
                        CswPropIdAttr PasswordPropIdAttr = new CswPropIdAttr(CurrentUser.UserId, CurrentUser.PasswordPropertyId);
                        SvcReturn.Authentication.ExpirationReset.PasswordId = PasswordPropIdAttr.ToString();
                    }

                    SvcReturn.Performance               = SvcReturn.Performance ?? new CswWebSvcReturnBase.Performance();
                    SvcReturn.Performance.ServerInit    = Math.Round(CswNbtResources.ServerInitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbInitTime, 3);
                    SvcReturn.Performance.DbQuery       = Math.Round(CswNbtResources.CswLogger.DbQueryTime, 3);
                    SvcReturn.Performance.DbCommit      = Math.Round(CswNbtResources.CswLogger.DbCommitTime, 3);
                    SvcReturn.Performance.DbDeinit      = Math.Round(CswNbtResources.CswLogger.DbDeInitTime, 3);
                    SvcReturn.Performance.TreeLoaderSql = Math.Round(CswNbtResources.CswLogger.TreeLoaderSQLTime, 3);
                    SvcReturn.Performance.ServerTotal   = Math.Round(CswNbtResources.TotalServerTime, 3);

                    SvcReturn.Logging            = SvcReturn.Logging ?? new CswWebSvcReturnBase.Logging();
                    SvcReturn.Logging.CustomerId = CswNbtResources.AccessId;
                    SvcReturn.Logging.Server     = Environment.MachineName;
                    CswEnumLogLevels LogLevel = CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level);

                    if (LogLevel == CswNbtResources.UnknownEnum)
                    {
                        LogLevel = CswEnumLogLevels.Error;
                    }
                    SvcReturn.Logging.LogLevel = LogLevel;

                    // Return any messages acquired along the way
                    if (null != CswNbtResources.Messages && CswNbtResources.Messages.Count > 0)
                    {
                        SvcReturn.Status.Messages = CswNbtResources.Messages;
                    }
                }
            }
            HttpCookie AuthStatusCookie = HttpContext.Request.Cookies["CswAuthStatus"];

            if (null == AuthStatusCookie)
            {
                AuthStatusCookie = new HttpCookie("CswAuthStatus")
                {
                    HttpOnly = true
                };
            }
            if (AuthStatusCookie.Value != AuthenticationStatusIn.ToString())
            {
                AuthStatusCookie.Value = AuthenticationStatusIn;
                HttpContext.Response.Cookies.Add(AuthStatusCookie);
            }
        } // wAddAuthenticationStatus()
        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()
Example #29
0
 public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
 {
     return(_CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber));
 }//makeWhereClause()
Example #30
0
        public static ViewSelect.Response getViewSelect(CswNbtResources CswNbtResources, ViewSelect.Request Request)
        {
            ViewSelect.Response ret = new ViewSelect.Response();

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

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

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


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

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

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

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

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

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

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

                        ReportTree.goToParentNode();
                    }
                }

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

            return(ret);
        } // getViewSelect()