コード例 #1
0
        public void SearchConditionIsCorrect
        (
            int userId,
            MFPermissionsExpressionType permission
        )
        {
            // Create the search builder.
            var mfSearchBuilder = this.GetSearchBuilder();

            // Add the search condition for whether the user has the required permissions.
            mfSearchBuilder.UserHasPermissionTo(userId, permission);

            // If there's anything other than one condition then fail.
            if (mfSearchBuilder.Conditions.Count != 1)
            {
                Assert.Inconclusive("Only one search condition should exist");
            }

            // Retrieve the just-added condition.
            var condition = mfSearchBuilder.Conditions[mfSearchBuilder.Conditions.Count];

            // Ensure the condition type is correct.
            Assert.AreEqual(MFConditionType.MFConditionTypeEqual, condition.ConditionType);

            // Ensure the expression type is correct.
            Assert.AreEqual(MFExpressionType.MFExpressionTypePermissions, condition.Expression.Type);

            // Ensure the status value is correct.
            Assert.AreEqual(permission, condition.Expression.DataPermissionsType);

            // Ensure that the typed value is correct.
            Assert.AreEqual(MFDataType.MFDatatypeLookup, condition.TypedValue.DataType);
            Assert.AreEqual(userId, condition.TypedValue.GetLookupID());
        }
コード例 #2
0
        /// <summary>
        /// Adds a <see cref="SearchCondition"/> to the collection for whether the specified user has the specified permission on an object.
        /// </summary>
        /// <param name="searchBuilder">The <see cref="MFSearchBuilder"/> to add the condition to.</param>
        /// <param name="userId">The ID of the user in question.</param>
        /// <param name="permission">The permission that the user should have on the object.</param>
        /// <param name="conditionType">What type of search to execute (defaults to <see cref="MFConditionType.MFConditionTypeEqual"/>).</param>
        /// <returns>The <paramref name="searchBuilder"/> provided, for chaining.</returns>
        public static MFSearchBuilder UserHasPermissionTo
        (
            this MFSearchBuilder searchBuilder,
            int userId,
            MFPermissionsExpressionType permission,
            MFConditionType conditionType = MFConditionType.MFConditionTypeEqual
        )
        {
            // Sanity.
            if (null == searchBuilder)
            {
                throw new ArgumentNullException(nameof(searchBuilder));
            }

            // We can only handle certain condition types; throw for others.
            if (conditionType != MFConditionType.MFConditionTypeEqual &&
                conditionType != MFConditionType.MFConditionTypeNotEqual)
            {
                throw new ArgumentException
                      (
                          $"The condition type {conditionType} is not supported for permission-based search conditions.",
                          nameof(conditionType)
                      );
            }

            // Create the search condition.
            var searchCondition = new SearchCondition
            {
                ConditionType = conditionType
            };

            // Set up the permission expression.
            searchCondition.Expression.SetPermissionExpression
            (
                permission
            );

            // Set the condition value to the lookup.
            var lookup = new MFilesAPI.Lookup()
            {
                ObjectType = (int)MFBuiltInValueList.MFBuiltInValueListUsers,
                Item       = userId
            };

            searchCondition.TypedValue.SetValue(MFDataType.MFDatatypeLookup, lookup);

            // Add the search condition to the collection.
            searchBuilder.Conditions.Add(-1, searchCondition);

            // Return the search builder for chaining.
            return(searchBuilder);
        }
コード例 #3
0
 public void SetPermissionExpression(MFPermissionsExpressionType PermissionsExpressionType)
 {
     throw new NotImplementedException();
 }