Exemplo n.º 1
0
        public async Task <IEnumerable <TaskInfo> > GetTasks(DateTime?sinceWhen = null, string tag = default, TaskStatus status = default,
                                                             CancellationToken cancellationToken = default)
        {
            var query = _context.Tasks.AsQueryable();

            if (sinceWhen.HasValue)
            {
                query = query.Where(t => t.DateCreated >= sinceWhen.Value);
            }

            if (!tag.IsDefault())
            {
                query = query.Where(t => (t.Tags ?? string.Empty).Contains(tag));
            }

            if (!status.IsDefault())
            {
                query = query.Where(t => t.Status == status);
            }

            var tasks = await query
                        .OrderByDescending(task => task.DateLastUpdated)
                        .Select(TaskInfoExpressions.ToTaskInfoResponse)
                        .ToArrayAsync(cancellationToken)
                        .ConfigureAwait(false);

            return(tasks);
        }