diff --git a/server/AyaNova/Controllers/ReportController.cs b/server/AyaNova/Controllers/ReportController.cs
index 4919ce01..c30ae8b7 100644
--- a/server/AyaNova/Controllers/ReportController.cs
+++ b/server/AyaNova/Controllers/ReportController.cs
@@ -162,6 +162,36 @@ namespace AyaNova.Api.Controllers
//======================================================================================================
+ public class ObjectReportDataParameter
+ {
+ public AyaType ObjectType { get; set; }
+ public long[] ObjectIdArray { get; set; }
+ }
+
+ ///
+ /// Get data from id list in format used by report designer
+ ///
+ /// report id and object id values for object type specified in report template
+ /// From route path
+ ///
+ [HttpPost("object-report-data")]
+ public async Task GetReportData([FromBody] ObjectReportDataParameter reportDataParam, ApiVersion apiVersion)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ ReportBiz biz = ReportBiz.GetBiz(ct, HttpContext);
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+
+ var reportData = await biz.GetReportData(reportDataParam.ObjectType, reportDataParam.ObjectIdArray);
+ if (reportData == null)
+ return BadRequest(new ApiErrorResponse(biz.Errors));
+ else
+ return Ok(ApiOkResponse.Response(reportData));
+ }
+
+
///
/// Render Report
///
@@ -174,7 +204,7 @@ namespace AyaNova.Api.Controllers
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
ReportBiz biz = ReportBiz.GetBiz(ct, HttpContext);
- if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
+ if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
@@ -182,7 +212,7 @@ namespace AyaNova.Api.Controllers
var httpConnectionFeature = HttpContext.Features.Get();
var API_URL = $"http://127.0.0.1:{httpConnectionFeature.LocalPort}/api/v8/";
- var result = await biz.RenderReport(reportParam.ReportId, reportParam.objectIdArray, API_URL);
+ var result = await biz.RenderReport(reportParam.ReportId, reportParam.ObjectIdArray, API_URL);
if (result == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
else
@@ -193,7 +223,7 @@ namespace AyaNova.Api.Controllers
public class RenderReportParameter
{
public long ReportId { get; set; }
- public long[] objectIdArray { get; set; }
+ public long[] ObjectIdArray { get; set; }
}
diff --git a/server/AyaNova/biz/BizRoles.cs b/server/AyaNova/biz/BizRoles.cs
index f820bd6a..fc00e1eb 100644
--- a/server/AyaNova/biz/BizRoles.cs
+++ b/server/AyaNova/biz/BizRoles.cs
@@ -550,7 +550,7 @@ namespace AyaNova.Biz
roles.Add(AyaType.Report, new BizRoleSet()
{
Change = AuthorizationRoles.BizAdminFull | AuthorizationRoles.BizAdminLimited,
- ReadFullRecord = AuthorizationRoles.BizAdminLimited | AuthorizationRoles.BizAdminLimited,
+ ReadFullRecord = AuthorizationRoles.All,
Select = AuthorizationRoles.All
});
diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs
index e104d7b1..68ca6618 100644
--- a/server/AyaNova/biz/ReportBiz.cs
+++ b/server/AyaNova/biz/ReportBiz.cs
@@ -225,6 +225,29 @@ namespace AyaNova.Biz
}
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ //REPORT DATA
+ //Data fetched to return to report designer for Client report design usage
+
+ public async Task GetReportData(AyaType objectType, long[] objectidarray)
+ {
+ var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::GetReportData");
+ AuthorizationRoles effectiveRoles = CurrentUserRoles;
+ if (!AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, objectType))
+ {
+ AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {objectType} type object");
+ return null;
+ }
+ //Get data
+ log.LogDebug($"Instantiating biz object handler for {objectType}");
+ var biz = BizObjectFactory.GetBizObject(objectType, ct);
+ log.LogDebug($"Fetching data for {objectidarray.Length} {objectType} items");
+ return await ((IReportAbleObject)biz).GetReportData(objectidarray);
+ }
+
+
+
////////////////////////////////////////////////////////////////////////////////////////////////
//RENDER
//
@@ -270,7 +293,7 @@ namespace AyaNova.Biz
log.LogDebug($"Instantiating biz object handler for {report.ObjectType}");
var biz = BizObjectFactory.GetBizObject(report.ObjectType, ct);
log.LogDebug($"Fetching data for {objectidarray.Length} {report.ObjectType} items");
- var data = ((IReportAbleObject)biz).GetReportData(objectidarray).ToString();
+ var data = (await ((IReportAbleObject)biz).GetReportData(objectidarray)).ToString();
//initialization
log.LogDebug("Initializing report system");