예제 #1
0
        public override async Task <PaginatedItemsResponse> GetItemsByIds(ScholarshipItemsRequest request, ServerCallContext context)
        {
            if (!string.IsNullOrEmpty(request.Ids))
            {
                var items = await GetItemsByIdsAsync(request.Ids);

                context.Status = !items.Any() ?
                                 new Status(StatusCode.NotFound, $"ids value invalid. Must be comma-separated list of numbers") :
                                 new Status(StatusCode.OK, string.Empty);

                return(this.MapToResponse(items));
            }

            var totalItems = await _scholarshipContext.ScholarshipItems
                             .LongCountAsync();

            var itemsOnPage = await _scholarshipContext.ScholarshipItems
                              .OrderBy(c => c.Name)
                              .Skip(request.PageSize * request.PageIndex)
                              .Take(request.PageSize)
                              .ToListAsync();

            itemsOnPage = ChangeUriPlaceholder(itemsOnPage);

            var model = this.MapToResponse(itemsOnPage, totalItems, request.PageIndex, request.PageSize);

            context.Status = new Status(StatusCode.OK, string.Empty);

            return(model);
        }
예제 #2
0
        public async Task <IEnumerable <ScholarshipItem> > GetScholarshipItemsAsync(IEnumerable <int> ids)
        {
            var request = new ScholarshipItemsRequest {
                Ids = string.Join(",", ids), PageIndex = 1, PageSize = 10
            };
            var response = await _client.GetItemsByIdsAsync(request);

            return(response.Data.Select(MapToScholarshipItemResponse));
        }