Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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
            });
        }
Exemplo n.º 5
0
 public CertificateFilterCommand(CertificateFilter filter)
 {
     _filter = filter;
 }
Exemplo n.º 6
0
 public async Task <IList <Certificate> > CertificateFilter(CertificateFilter filter)
 {
     return(await Execute(new CertificateFilterCommand(filter)));
 }