#pragma warning disable IDE0051 // "Remove unused private members" - Used when deserializing from JSON private GrouperDocumentMember(GroupMemberSources source, GroupMemberActions action, List <GrouperDocumentRule> rules) #pragma warning restore IDE0051 // "Remove unused private members" { Source = source; Action = action; _rules = rules; }
private static void InternalValidateRules(IList <GrouperDocumentRule> documentRules, GroupMemberSources memberSource, List <ValidationError> validationErrors) { if (documentRules == null || documentRules.Count == 0) { validationErrors.Add(new ValidationError(nameof(GrouperDocumentMember.Rules), ResourceString.ValidationErrorMemberObjectHasNoRules)); return; } var rules = new Dictionary <string, HashSet <string> >(StringComparer.OrdinalIgnoreCase); if (!memberSources.TryGetValue(memberSource, out DocumentMemberValidationRules memberSourceInfo)) { validationErrors.Add(new ValidationError(nameof(GrouperDocumentMember.Source), ResourceString.ValidationErrorInvalidMemberSource, memberSource)); return; } foreach (GrouperDocumentRule rule in documentRules) { if (string.IsNullOrEmpty(rule.Name)) { validationErrors.Add(new ValidationError(nameof(rule.Name), ResourceString.ValidationErrorInvalidRuleName, rule.Name, memberSource)); } else { if (rules.TryGetValue(rule.Name, out HashSet <string> values)) { if (!memberSourceInfo.IsMultipleRulesAllowed(rule.Name)) { validationErrors.Add(new ValidationError(nameof(rule.Name), ResourceString.ValidationErrorDuplicateRuleName, rule.Name)); } if (!values.Add(rule.Value)) { validationErrors.Add(new ValidationError("Rule", ResourceString.ValidationErrorDuplicateRule, rule.Name, rule.Value)); } } else { rules.Add(rule.Name, new HashSet <string>(StringComparer.OrdinalIgnoreCase) { rule.Value }); } if (!memberSourceInfo.InAnyRuleSet(rule.Name)) { validationErrors.Add(new ValidationError(nameof(rule.Name), ResourceString.ValidationErrorInvalidRuleName, rule.Name, memberSource)); } } } if (validationErrors.Count > 0) { return; } if (!memberSourceInfo.HasMatchingRuleSet(rules.Keys)) { validationErrors.Add(new ValidationError(nameof(GrouperDocumentMember.Rules), ResourceString.ValidationErrorInvalidCombinationOfRules, memberSource)); } foreach (GrouperDocumentRule rule in documentRules) { if (string.IsNullOrEmpty(rule.Value)) { validationErrors.Add(new ValidationError(nameof(rule.Value), ResourceString.ValidationErrorRuleValueIsNullOrEmpty, rule.Name)); } else if (memberSourceInfo.ValidationRules != null && memberSourceInfo.ValidationRules.TryGetValue(rule.Name, out Regex validationRegex)) { if (!validationRegex.IsMatch(rule.Value)) { validationErrors.Add(new ValidationError(nameof(rule.Value), ResourceString.ValidationErrorRuleValueDoesNotValidate, rule.Name, rule.Value)); } } } return; }
public async Task <IActionResult> GetByMemberSourceAsync(GroupMemberSources source, GroupStores?store, bool unpublished, bool deleted) { IEnumerable <GrouperDocumentEntry> entries = await GetDocumentDb().GetEntriesByMemberSourceAsync(source, store, unpublished, deleted); return(Ok(entries)); }
public async Task <IList <GrouperDocumentEntry> > GetEntriesByMemberSourceAsync(GroupMemberSources source, GroupStores?store = null, bool includeUnpublished = false, bool includeDeleted = false) { return(await InternalGetDocumentEntriesAsync("dbo.get_document_by_member_source", new Dictionary <string, object>() { { "source", source.ToString() }, { "store", store?.ToString() }, { "include_unpublished", includeUnpublished }, { "include_deleted", includeDeleted } } )); }