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