/// <summary> /// Gets the items' filter. /// </summary> private Func <CertificateClass, bool> GetFilter() { CertificateFilter certificateFilter = (CertificateFilter) (EnumExtensions.GetValueFromDescription <CertificateFilter>((string)cbFilter.SelectedItem) ?? CertificateFilter.All); // Update the base filter from the combo box switch (certificateFilter) { default: return(x => true); case CertificateFilter.HideMaxLevel: return(x => !x.IsCompleted); case CertificateFilter.NextLevelTrainable: return(x => x.IsFurtherTrainable); case CertificateFilter.NextLevelUntrainable: return(x => !x.IsFurtherTrainable & !x.IsCompleted); case CertificateFilter.Completed: return(x => x.IsCompleted); } }
public DiverFilterChain() { // Init the chain filterFirst = new DiveNumberFilter(); OldestDiveFilter filterSecond = new OldestDiveFilter(); CertificateFilter filterThird = new CertificateFilter(); // Set next chain responsibility filterFirst.NextChain = filterSecond; filterSecond.NextChain = filterThird; filterThird.NextChain = filterFirst; }
/// <summary> /// Query all certificates /// </summary> /// <param name="store"></param> /// <param name="filter"></param> /// <param name="ct"></param> /// <returns></returns> public static async Task <IEnumerable <Certificate> > QueryAllCertificatesAsync( this ICertificateStore store, CertificateFilter filter, CancellationToken ct = default) { var results = await store.QueryCertificatesAsync(filter, null, ct); var certificates = new List <Certificate>(results.Certificates); while (results.ContinuationToken != null) { results = await store.ListCertificatesAsync( results.ContinuationToken, null, ct); certificates.AddRange(results.Certificates); } return(certificates); }
/// <inheritdoc/> public async Task <CertificateCollection> QueryCertificatesAsync( CertificateFilter filter, int?pageSize, CancellationToken ct) { var queryParameters = new Dictionary <string, object>(); var query = "SELECT * FROM Certificates c WHERE"; query += $" c.{nameof(CertificateDocument.Type)} = '{nameof(Certificate)}'"; if (filter.NotBefore != null) { query += $" AND c.{nameof(CertificateDocument.NotBefore)} <= @NotBefore"; queryParameters.Add("@NotBefore", filter.NotBefore.ToString()); } if (filter.NotAfter != null) { query += $" AND c.{nameof(CertificateDocument.NotAfter)} >= @NotAfter"; queryParameters.Add("@NotAfter", filter.NotAfter.ToString()); } if (filter.IncludeDisabled && filter.ExcludeEnabled) { query += $" AND IS_DEFINED(c.{nameof(CertificateDocument.DisabledSince)})"; } if (!filter.IncludeDisabled && !filter.ExcludeEnabled) { query += $" AND NOT IS_DEFINED(c.{nameof(CertificateDocument.DisabledSince)})"; } if (filter.CertificateName != null) { query += $" AND c.{nameof(CertificateDocument.CertificateName)} = @Name"; queryParameters.Add("@Name", filter.CertificateName); } if (filter.Subject != null) { query += $" AND (c.{nameof(CertificateDocument.Subject)} = @Subject"; if (filter.IncludeAltNames) { query += $" OR ARRAY_CONTAINS(" + $"c.{nameof(CertificateDocument.SubjectAltNames)}, @Subject )"; } query += " )"; queryParameters.Add("@Subject", filter.Subject.Name); } if (filter.Thumbprint != null) { query += $" AND c.{nameof(CertificateDocument.Thumbprint)} = @Thumbprint"; queryParameters.Add("@Thumbprint", filter.Thumbprint); } if (filter.KeyId != null) { query += $" AND c.{nameof(CertificateDocument.KeyId)} = @KeyId"; queryParameters.Add("@KeyId", filter.KeyId); } if (filter.IsIssuer != null) { query += $" AND c.{nameof(CertificateDocument.IsIssuer)} = @IsIssuer"; queryParameters.Add("@IsIssuer", filter.IsIssuer.Value); } if (filter.Issuer != null) { query += $" AND (c.{nameof(CertificateDocument.Issuer)} = @Issuer"; if (filter.IncludeAltNames) { query += $" OR ARRAY_CONTAINS(" + $"c.{nameof(CertificateDocument.IssuerAltNames)}, @Issuer )"; } query += " )"; queryParameters.Add("@Issuer", filter.Issuer.Name); } if (filter.Issuer != null) { query += $" AND c.{nameof(CertificateDocument.IssuerSerialNumber)} = @Isn"; queryParameters.Add("@Isn", new SerialNumber(filter.IssuerSerialNumber).ToString()); } if (filter.IssuerKeyId != null) { query += $" AND c.{nameof(CertificateDocument.IssuerKeyId)} = @IssuerKeyId"; queryParameters.Add("@IssuerKeyId", filter.IssuerKeyId); } query += $" ORDER BY c.{nameof(CertificateDocument.Version)} DESC"; var client = _certificates.OpenSqlClient(); var result = client.Query <CertificateDocument>(query, queryParameters, pageSize); var documents = await result.ReadAsync(ct); return(new CertificateCollection { Certificates = documents .Select(c => DocumentToCertificate(c.Value)) .ToList(), ContinuationToken = result.ContinuationToken }); }
public CertificateFilterCommand(CertificateFilter filter) { _filter = filter; }
public async Task <IList <Certificate> > CertificateFilter(CertificateFilter filter) { return(await Execute(new CertificateFilterCommand(filter))); }