Beispiel #1
0
 public static async Task <IReadOnlyCollection <T> > FindByListOfKeysAsync <T, TKey>(
     this IQueryableRepository <T> source,
     IEnumerable <TKey> keys,
     CancellationToken cancellationToken = default) where T : IKey <TKey> where TKey : IEquatable <TKey>
 {
     cancellationToken.ThrowIfCancellationRequested();
     return(await source.ProcessQueryAsync(
                source.AsQueryable()
                .Where(item => keys.Contains(item.Id)), cancellationToken));
 }
Beispiel #2
0
        public virtual IActionResult Get(ODataQueryOptions queryOptions)
        {
            var files = filesRepository.AsQueryable()
                        .OData().ApplyQueryOptionsWithoutSelectExpand(queryOptions);

            foreach (var file in files)
            {
                file.Uri = this.BuildLink($"files/{file.Id}");
            }
            return(Ok(files));
        }
Beispiel #3
0
        public async virtual Task <IActionResult> GetAsync(
            [FromQuery(Name = "$top")] string top,
            [FromQuery(Name = "$skip")] string skip,
            [FromQuery(Name = "$orderby")] string orderby,
            [FromQuery(Name = "$filter")] string filter)
        {
            try
            {
                ODataQueryOptions oDataQueryOptions = new ODataQueryOptions
                {
                    Top     = top,
                    Skip    = skip,
                    OrderBy = orderby,
                    Filters = string.IsNullOrEmpty(filter) ? null : new List <string> {
                        filter
                    }
                };
                var events = await Task.FromResult(eventsRepository
                                                   .AsQueryable()
                                                   .OData()
                                                   .ApplyQueryOptionsWithoutSelectExpand(oDataQueryOptions)
                                                   .ToList());

                return(Ok(new Entities.EventListResponse
                {
                    Data = await Entities.PagedListData <Entities.EventInfo> .CreateAsync(
                        events,
                        top,
                        skip,
                        async() => await eventsRepository.AsQueryable().LongCountAsync())
                }));
            }
            catch (Exception e)
            {
                return(this.InternalServerError(e.FlattenMessages()));
            }
        }
Beispiel #4
0
        public async virtual Task <IActionResult> GetFilesAsync(
            [FromQuery(Name = "$top")] string top,
            [FromQuery(Name = "$skip")] string skip,
            [FromQuery(Name = "$orderby")] string orderby,
            [FromQuery(Name = "$filter")] string filter)
        {
            try
            {
                ODataQueryOptions oDataQueryOptions = new ODataQueryOptions
                {
                    Top     = top,
                    Skip    = skip,
                    OrderBy = orderby,
                    Filters = string.IsNullOrEmpty(filter) ? null : new List <string> {
                        filter
                    }
                };
                var files = await Task.FromResult(filesRepository
                                                  .AsQueryable()
                                                  .OData()
                                                  .ApplyQueryOptionsWithoutSelectExpand(oDataQueryOptions)
                                                  .ToList());

                foreach (var file in files)
                {
                    file.DownloadUri = this.BuildLink($"files/{file.Id}");
                }

                return(Ok(new FileListResponse
                {
                    Data = await PagedListData <FileInfo> .CreateAsync(files)
                }));
            }
            catch (Exception e)
            {
                return(this.InternalServerError(e.FlattenMessages()));
            }
        }