public virtual async Task HandleGetEntitiesAsync(string modelId, string entityContainer, CancellationToken ct = default) { int?offset = null; int?fetch = null; bool isLookup = false; IEnumerable <EasyFilter> filters = null; bool needTotal = false; JObject requestParams; using (var requestReader = new HttpRequestStreamReader(HttpContext.Request.Body, Encoding.UTF8)) using (var jsonReader = new JsonTextReader(requestReader)) { requestParams = await JObject.LoadAsync(jsonReader, ct); } if (requestParams.TryGetValue("offset", out var value)) { offset = value.ToObject <int?>(); } if (requestParams.TryGetValue("limit", out value)) { fetch = value.ToObject <int?>(); } if (requestParams.TryGetValue("needTotal", out value)) { needTotal = value.ToObject <bool>(); } if (requestParams.TryGetValue("lookup", out value)) { isLookup = value.ToObject <bool>(); } if (requestParams.TryGetValue("filters", out value) && value.HasValues) { filters = await GetFiltersAsync(modelId, (JArray)value, ct); } long?total = null; if (needTotal) { total = await Manager.GetTotalEntitiesAsync(modelId, entityContainer, filters, isLookup, ct); } var result = await Manager.GetEntitiesAsync(modelId, entityContainer, filters, isLookup, offset, fetch); await WriteOkJsonResponseAsync(HttpContext, async (jsonWriter, cancellationToken) => { await WriteGetEntitiesResponseAsync(jsonWriter, result, total, cancellationToken); }, ct); }
public virtual async Task HandleGetEntitiesAsync(string modelId, string entityContainer) { int?offset = null; int?fetch = null; bool isLookup = false; string filter = null; bool needTotal = false; var queryParams = HttpContext.Request.Query; if (queryParams.TryGetValue("offset", out var value)) { offset = int.Parse(value); } if (queryParams.TryGetValue("limit", out value)) { fetch = int.Parse(value); } if (queryParams.TryGetValue("needTotal", out value)) { needTotal = bool.Parse(value); } if (queryParams.TryGetValue("filter", out value)) { filter = value; } if (queryParams.TryGetValue("lookup", out value)) { isLookup = bool.Parse(value); } long?total = null; if (needTotal) { total = await Manager.GetTotalEntitiesAsync(modelId, entityContainer, filter, isLookup); } var result = await Manager.GetEntitiesAsync(modelId, entityContainer, filter, isLookup, offset, fetch); await WriteOkJsonResponseAsync(HttpContext, async jsonWriter => { await WriteGetEntitiesResponseAsync(jsonWriter, result, total); }); }