public override async Task <PaginedProductItemsResponse?> GetPaginedProductsByDeclination(PaginedProductItemsRequest request, ServerCallContext context) { if (string.IsNullOrWhiteSpace(request.Declination)) { context.Status = new Status(StatusCode.InvalidArgument, $"Arguments are invalid, declination can't be null or empty"); return(null); } try { (IEnumerable <Models.Product> products, int count) = await iProductFetcher.GetPaginatedProductsByDeclination(request.Declination, request.PageIndex, request.PageSize); return(BuildPaginedResponse(products, count, request)); } catch (Exception exception) { context.Status = new Status(StatusCode.Internal, exception.Message); return(null); } }
private PaginedProductItemsResponse BuildPaginedResponse(IEnumerable <Models.Product> products, int count, PaginedProductItemsRequest request) { PaginedProductItemsResponse response = new PaginedProductItemsResponse { Total = count, PageIndex = request.PageIndex, PageSize = request.PageSize }; response.Data.Add(mapper.Map <IEnumerable <ProductItemResponse> >(products)); return(response); }