This commit is contained in:
@@ -198,32 +198,32 @@ namespace AyaNova.Api.Controllers
|
|||||||
return BadRequest(new ApiErrorResponse(ModelState));
|
return BadRequest(new ApiErrorResponse(ModelState));
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------
|
// //-------------------------------
|
||||||
var UserRoles = UserRolesFromContext.Roles(HttpContext.Items);
|
// var UserRoles = UserRolesFromContext.Roles(HttpContext.Items);
|
||||||
var UserId = UserIdFromContext.Id(HttpContext.Items);
|
// var UserId = UserIdFromContext.Id(HttpContext.Items);
|
||||||
DataListSavedColumnViewBiz viewbiz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
|
// DataListSavedColumnViewBiz viewbiz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
|
||||||
var SavedView = await viewbiz.GetAsync(UserId, selectedRequest.DataListKey, true);
|
// var SavedView = await viewbiz.GetAsync(UserId, selectedRequest.DataListKey, true);
|
||||||
|
|
||||||
DataListSavedFilter SavedFilter = null;
|
// DataListSavedFilter SavedFilter = null;
|
||||||
if (selectedRequest.FilterId != 0)
|
// if (selectedRequest.FilterId != 0)
|
||||||
{
|
// {
|
||||||
DataListSavedFilterBiz filterbiz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
|
// DataListSavedFilterBiz filterbiz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
|
||||||
SavedFilter = await filterbiz.GetAsync(selectedRequest.FilterId, false);
|
// SavedFilter = await filterbiz.GetAsync(selectedRequest.FilterId, false);
|
||||||
}
|
// }
|
||||||
var DataList = DataListFactory.GetAyaDataList(selectedRequest.DataListKey);
|
// var DataList = DataListFactory.GetAyaDataList(selectedRequest.DataListKey);
|
||||||
if (DataList == null)
|
// if (DataList == null)
|
||||||
return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "DataListKey", $"DataList \"{selectedRequest.DataListKey}\" specified does not exist"));
|
// return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "DataListKey", $"DataList \"{selectedRequest.DataListKey}\" specified does not exist"));
|
||||||
|
|
||||||
//check rights
|
// //check rights
|
||||||
if (!UserRoles.HasAnyFlags(DataList.AllowedRoles))
|
// if (!UserRoles.HasAnyFlags(DataList.AllowedRoles))
|
||||||
return StatusCode(403, new ApiNotAuthorizedResponse());
|
// return StatusCode(403, new ApiNotAuthorizedResponse());
|
||||||
|
|
||||||
//hydrate the saved view and filter
|
// //hydrate the saved view and filter
|
||||||
DataListSelectedProcessingOptions dataListSelectedOptions = new DataListSelectedProcessingOptions(selectedRequest, DataList, SavedView, SavedFilter, UserId, UserRoles);
|
// DataListSelectedProcessingOptions dataListSelectedOptions = new DataListSelectedProcessingOptions(selectedRequest, DataList, SavedView, SavedFilter, UserId, UserRoles);
|
||||||
//------------------------
|
// //------------------------
|
||||||
|
|
||||||
|
|
||||||
var reportData = await biz.GetReportData(dataListSelectedOptions);
|
var reportData = await biz.GetReportData(selectedRequest);
|
||||||
if (reportData == null)
|
if (reportData == null)
|
||||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -331,27 +331,29 @@ namespace AyaNova.Biz
|
|||||||
//REPORT DATA
|
//REPORT DATA
|
||||||
//Data fetched to return to report designer for Client report design usage
|
//Data fetched to return to report designer for Client report design usage
|
||||||
|
|
||||||
public async Task<Newtonsoft.Json.Linq.JArray> GetReportData(DataListSelectedProcessingOptions dataListSelection)
|
public async Task<Newtonsoft.Json.Linq.JArray> GetReportData(DataListSelectedRequest selectedRequest)
|
||||||
{
|
{
|
||||||
var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::GetReportData");
|
var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::GetReportData");
|
||||||
AuthorizationRoles effectiveRoles = CurrentUserRoles;
|
AuthorizationRoles effectiveRoles = CurrentUserRoles;
|
||||||
|
|
||||||
|
|
||||||
if (!AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, dataListSelection.ObjectType))
|
if (!AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, selectedRequest.ObjectType))
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {dataListSelection.ObjectType} type object");
|
AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {selectedRequest.ObjectType} type object");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Do we need to rehydrate the ID List from a DataList?
|
//Do we need to rehydrate the ID List from a DataList?
|
||||||
// if (dataListSelection.SelectedRowIds.Length == 0)
|
// if (dataListSelection.SelectedRowIds.Length == 0)
|
||||||
// dataListSelection.SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(dataListSelection.DataListKey, dataListSelection.ListView, dataListSelection.MetaView, ct, effectiveRoles, log, UserId);
|
// dataListSelection.SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(dataListSelection.DataListKey, dataListSelection.ListView, dataListSelection.MetaView, ct, effectiveRoles, log, UserId);
|
||||||
await dataListSelection.RehydrateIdList(ct, effectiveRoles, log, UserId);
|
if(selectedRequest.SelectedRowIds.Length==0)
|
||||||
|
selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(selectedRequest, ct, effectiveRoles, log, UserId, UserTranslationId);
|
||||||
|
|
||||||
log.LogDebug($"Instantiating biz object handler for {dataListSelection.ObjectType}");
|
|
||||||
var biz = BizObjectFactory.GetBizObject(dataListSelection.ObjectType, ct);
|
log.LogDebug($"Instantiating biz object handler for {selectedRequest.ObjectType}");
|
||||||
log.LogDebug($"Fetching data for {dataListSelection.SelectedRowIds.Length} {dataListSelection.ObjectType} items");
|
var biz = BizObjectFactory.GetBizObject(selectedRequest.ObjectType, ct);
|
||||||
return await ((IReportAbleObject)biz).GetReportData(dataListSelection.SelectedRowIds);
|
log.LogDebug($"Fetching data for {selectedRequest.SelectedRowIds.Length} {selectedRequest.ObjectType} items");
|
||||||
|
return await ((IReportAbleObject)biz).GetReportData(selectedRequest.SelectedRowIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using AyaNova.Biz;
|
using AyaNova.Biz;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using AyaNova.DataList;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using EnumsNET;
|
||||||
namespace AyaNova.Models
|
namespace AyaNova.Models
|
||||||
{
|
{
|
||||||
//Used to drive processes that rely on selections made at client from a datalist
|
//Used to drive processes that rely on selections made at client from a datalist
|
||||||
@@ -7,50 +11,24 @@ namespace AyaNova.Models
|
|||||||
//be used to rehydrate a list of id's
|
//be used to rehydrate a list of id's
|
||||||
public class DataListSelectedProcessingOptions : DataListProcessingBase
|
public class DataListSelectedProcessingOptions : DataListProcessingBase
|
||||||
{
|
{
|
||||||
public AyaType ObjectType { get; set; }
|
//public AyaType ObjectType { get; set; }
|
||||||
public long[] SelectedRowIds { get; set; }
|
// public long[] SelectedRowIds { get; set; }
|
||||||
// public string DataListKey { get; set; }
|
// public string DataListKey { get; set; }
|
||||||
// public string ListView { get; set; }//optional, if null or empty will use default list view built into DataList
|
// public string ListView { get; set; }//optional, if null or empty will use default list view built into DataList
|
||||||
// public string MetaView { get; set; }//optional meta list view to integrate into the standard list view. Used by client to add "meta" filter conditions above the user's choices e.g. customer notes customer id
|
// public string MetaView { get; set; }//optional meta list view to integrate into the standard list view. Used by client to add "meta" filter conditions above the user's choices e.g. customer notes customer id
|
||||||
|
|
||||||
|
internal DataListSelectedProcessingOptions(
|
||||||
public bool IsEmpty
|
DataListSelectedRequest request,
|
||||||
|
IDataListProcessing dataList,
|
||||||
|
DataListSavedColumnView savedView,
|
||||||
|
DataListSavedFilter savedFilter,
|
||||||
|
long userId,
|
||||||
|
AuthorizationRoles userRoles)
|
||||||
{
|
{
|
||||||
get
|
//set some values from request
|
||||||
{
|
|
||||||
return SelectedRowIds.LongLength == 0 && string.IsNullOrWhiteSpace(DataListKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///TODO: recode this to fulfil requirements of datalistfetcher in the same way as
|
|
||||||
//DataListTableProcessingOptions constructor
|
|
||||||
//clean out datalistfetcher comments and similar afterwards
|
|
||||||
public async Task RehydrateIdList(AyContext ct, AuthorizationRoles userRoles, Microsoft.Extensions.Logging.ILogger log, long userId)
|
|
||||||
{
|
|
||||||
if (SelectedRowIds.Length == 0)
|
|
||||||
SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(ct, this, userRoles, log, userId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
internal DataListTableProcessingOptions(
|
|
||||||
DataListTableRequest request,
|
|
||||||
IDataListProcessing dataList,
|
|
||||||
DataListSavedColumnView savedView,
|
|
||||||
DataListSavedFilter savedFilter,
|
|
||||||
long userId,
|
|
||||||
AuthorizationRoles userRoles)
|
|
||||||
{
|
|
||||||
//set some values from request
|
|
||||||
Limit = request.Limit;
|
|
||||||
Offset = request.Offset;
|
|
||||||
base.ClientCriteria = request.ClientCriteria;
|
base.ClientCriteria = request.ClientCriteria;
|
||||||
base.DataListKey = request.DataListKey;
|
base.DataListKey = request.DataListKey;
|
||||||
|
|
||||||
//SET COLUMNS
|
|
||||||
Columns = JsonConvert.DeserializeObject<List<string>>(savedView.Columns);
|
|
||||||
|
|
||||||
//SET SORTBY
|
//SET SORTBY
|
||||||
base.SortBy = JsonConvert.DeserializeObject<Dictionary<string, string>>(savedView.Sort);
|
base.SortBy = JsonConvert.DeserializeObject<Dictionary<string, string>>(savedView.Sort);
|
||||||
|
|
||||||
@@ -69,4 +47,41 @@ namespace AyaNova.Models
|
|||||||
base.Filter.Add(dfo);
|
base.Filter.Add(dfo);
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
public static async Task<long[]> RehydrateIdList(DataListSelectedRequest selectedRequest, AyContext ct, AuthorizationRoles userRoles, Microsoft.Extensions.Logging.ILogger log, long userId, long userTranslationId)
|
||||||
|
{
|
||||||
|
DataListSavedColumnViewBiz viewbiz = new DataListSavedColumnViewBiz(ct, userId, userTranslationId, userRoles);
|
||||||
|
var SavedView = await viewbiz.GetAsync(userId, selectedRequest.DataListKey, true);
|
||||||
|
|
||||||
|
DataListSavedFilter SavedFilter = null;
|
||||||
|
if (selectedRequest.FilterId != 0)
|
||||||
|
{
|
||||||
|
DataListSavedFilterBiz filterbiz = new DataListSavedFilterBiz(ct, userId, userTranslationId, userRoles);
|
||||||
|
SavedFilter = await filterbiz.GetAsync(selectedRequest.FilterId, false);
|
||||||
|
}
|
||||||
|
var DataList = DataListFactory.GetAyaDataList(selectedRequest.DataListKey);
|
||||||
|
if (DataList == null)
|
||||||
|
throw new System.ArgumentOutOfRangeException($"DataList \"{selectedRequest.DataListKey}\" specified does not exist");
|
||||||
|
|
||||||
|
//check rights
|
||||||
|
if (!userRoles.HasAnyFlags(DataList.AllowedRoles))
|
||||||
|
throw new System.UnauthorizedAccessException($"DataList \"{selectedRequest.DataListKey}\" required Roles not found for this user");
|
||||||
|
|
||||||
|
DataListSelectedProcessingOptions d = new DataListSelectedProcessingOptions(selectedRequest, DataList, SavedView, SavedFilter, userId, userRoles);
|
||||||
|
|
||||||
|
//hydrate the saved view and filter
|
||||||
|
// DataListSelectedProcessingOptions dataListSelectedOptions = new DataListSelectedProcessingOptions(selectedRequest, DataList, SavedView, SavedFilter, UserId, UserRoles);
|
||||||
|
// //------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// if (SelectedRowIds.Length == 0)
|
||||||
|
// SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(ct, this, userRoles, log, userId);
|
||||||
|
|
||||||
|
return await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(ct, d, DataList, userRoles, log, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user