From b0ebc41618273d6849525eeb29de57c052000c70 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 26 Aug 2020 23:09:23 +0000 Subject: [PATCH] --- server/AyaNova/biz/IReportAbleObject.cs | 18 ++++++++++++++++++ server/AyaNova/biz/ReportBiz.cs | 3 ++- server/AyaNova/biz/WidgetBiz.cs | 18 +++++++++++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 server/AyaNova/biz/IReportAbleObject.cs diff --git a/server/AyaNova/biz/IReportAbleObject.cs b/server/AyaNova/biz/IReportAbleObject.cs new file mode 100644 index 00000000..5f0175e7 --- /dev/null +++ b/server/AyaNova/biz/IReportAbleObject.cs @@ -0,0 +1,18 @@ +using AyaNova.Models; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +namespace AyaNova.Biz +{ + /// + /// Interface for biz objects that support reporting + /// + internal interface IReportAbleObject + { + + //Get items indicated in id list in report format + //called by ReportBiz rendering code + Task GetReportData(long[] idList); + + } + +} \ No newline at end of file diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs index 9597a177..ebb18ce9 100644 --- a/server/AyaNova/biz/ReportBiz.cs +++ b/server/AyaNova/biz/ReportBiz.cs @@ -267,7 +267,8 @@ namespace AyaNova.Biz //Get data - + var biz = BizObjectFactory.GetBizObject(report.ObjectType, ct); + var data = ((IReportAbleObject)biz).GetReportData(objectidarray); //initialization diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index a0875bd7..b95196ba 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -11,7 +11,7 @@ using System.Collections.Generic; namespace AyaNova.Biz { - internal class WidgetBiz : BizObject, IJobObject, ISearchAbleObject + internal class WidgetBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject { internal WidgetBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) { @@ -283,6 +283,20 @@ 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 => idList.Contains(z.Id)).ToArrayAsync(); + foreach(Widget w in res){ + j.Add(w); + } + } + return j; + } //////////////////////////////////////////////////////////////////////////////////////////////// //JOB / OPERATIONS @@ -358,6 +372,8 @@ namespace AyaNova.Biz } + + ///////////////////////////////////////////////////////////////////// }//eoc