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); }
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)); }