public async Task <IEnumerable <Deployment> > GetDeploymentsAsync(CancellationToken cancellationToken, IDateRange <DateTimeOffset> scheduledDateRange = null, IDateRange <DateTimeOffset> completedDateRange = null)
        {
            var query = DeploymentQuery;

            if (scheduledDateRange == null && completedDateRange == null)
            {
                query = DeploymentQuery.Where(deployment => !deployment.Completed.HasValue);
                return(await query.ToArrayAsync(cancellationToken));
            }

            if (scheduledDateRange != null)
            {
                query = DeploymentQuery.Where(deployment => deployment.Scheduled.HasValue &&
                                              deployment.Scheduled >= scheduledDateRange.Start &&
                                              deployment.Scheduled <= scheduledDateRange.End);
            }

            if (completedDateRange != null)
            {
                query = DeploymentQuery.Where(deployment => deployment.Completed.HasValue &&
                                              deployment.Completed >= completedDateRange.Start &&
                                              deployment.Completed <= completedDateRange.End);
            }

            return(await query.ToArrayAsync(cancellationToken));
        }