From dca6d56f7e53ab401b23bcffdf369312c42d00cb Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 1 Sep 2020 21:39:30 +0000 Subject: [PATCH] --- server/AyaNova/DataList/DataListFetcher.cs | 2 +- server/AyaNova/biz/IReportAbleObject.cs | 1 + server/AyaNova/biz/WidgetBiz.cs | 20 +++++++++++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs index ea6057c8..ecc50190 100644 --- a/server/AyaNova/DataList/DataListFetcher.cs +++ b/server/AyaNova/DataList/DataListFetcher.cs @@ -315,7 +315,7 @@ namespace AyaNova.DataList } } - retList.Reverse(); + //retList.Reverse(); return retList.ToArray(); } diff --git a/server/AyaNova/biz/IReportAbleObject.cs b/server/AyaNova/biz/IReportAbleObject.cs index 5f0175e7..69c40506 100644 --- a/server/AyaNova/biz/IReportAbleObject.cs +++ b/server/AyaNova/biz/IReportAbleObject.cs @@ -12,6 +12,7 @@ namespace AyaNova.Biz //Get items indicated in id list in report format //called by ReportBiz rendering code Task GetReportData(long[] idList); + const int REPORT_DATA_BATCH_SIZE = 100; } diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 1092833f..a0428960 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -13,6 +13,8 @@ namespace AyaNova.Biz { internal class WidgetBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject { + + internal WidgetBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) { ct = dbcontext; @@ -284,17 +286,21 @@ namespace AyaNova.Biz public async Task GetReportData(long[] idList) - { + { JArray j = new JArray(); while (idList.Any()) { - var batch = idList.Take(100); - idList = idList.Skip(100).ToArray(); - var res = await ct.Widget.Where(z => batch.Contains(z.Id)).ToArrayAsync(); - foreach(Widget w in res){ + var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE); + idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray(); + //query for this batch, comes back in db natural order unfortunately + var batchResults = await ct.Widget.Where(z => batch.Contains(z.Id)).ToArrayAsync(); + //order the results back into original + var orderedList = from id in batch join z in batchResults on id equals z.Id select z; + foreach (Widget w in orderedList) + { j.Add(JObject.FromObject(w)); - } - } + } + } return j; }