diff --git a/server/AyaNova/Controllers/ExportController.cs b/server/AyaNova/Controllers/ExportController.cs
index d3543717..f7a4f0d7 100644
--- a/server/AyaNova/Controllers/ExportController.cs
+++ b/server/AyaNova/Controllers/ExportController.cs
@@ -58,8 +58,8 @@ namespace AyaNova.Api.Controllers
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
- if (selectedRequest.IsEmpty)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
+ if (selectedRequest == null)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelectedRequest is required"));
if (!Authorized.HasReadFullRole(HttpContext.Items, selectedRequest.ObjectType))
return StatusCode(403, new ApiNotAuthorizedResponse());
@@ -70,9 +70,16 @@ namespace AyaNova.Api.Controllers
if (format != "csv" && format != "json")
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_INVALID_VALUE, null, "format not valid, must be 'csv' or 'json'"));
- await selectedRequest.RehydrateIdList(ct, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items));
+
+ //Rehydrate id list if necessary
if (selectedRequest.SelectedRowIds.Length == 0)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "List of ids"));
+ selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(
+ selectedRequest,
+ ct,
+ UserRolesFromContext.Roles(HttpContext.Items),
+ log,
+ UserIdFromContext.Id(HttpContext.Items),
+ UserTranslationIdFromContext.Id(HttpContext.Items));
log.LogDebug($"Instantiating biz object handler for {selectedRequest.ObjectType}");
diff --git a/server/AyaNova/Controllers/JobOperationsController.cs b/server/AyaNova/Controllers/JobOperationsController.cs
index 73671683..14ee100a 100644
--- a/server/AyaNova/Controllers/JobOperationsController.cs
+++ b/server/AyaNova/Controllers/JobOperationsController.cs
@@ -203,17 +203,22 @@ namespace AyaNova.Api.Controllers
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
- if (selectedRequest.IsEmpty)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
+ if (selectedRequest == null)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelectedRequest is required"));
if (!Authorized.HasDeleteRole(HttpContext.Items, selectedRequest.ObjectType))
return StatusCode(403, new ApiNotAuthorizedResponse());
-
- await selectedRequest.RehydrateIdList(ct, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items));
+ //Rehydrate id list if necessary
if (selectedRequest.SelectedRowIds.Length == 0)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "List of ids"));
+ selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(
+ selectedRequest,
+ ct,
+ UserRolesFromContext.Roles(HttpContext.Items),
+ log,
+ UserIdFromContext.Id(HttpContext.Items),
+ UserTranslationIdFromContext.Id(HttpContext.Items));
var JobName = $"LT:BatchDeleteJob - LT:{selectedRequest.ObjectType} ({selectedRequest.SelectedRowIds.LongLength}) LT:User {UserNameFromContext.Name(HttpContext.Items)}";
JObject o = JObject.FromObject(new
diff --git a/server/AyaNova/Controllers/ReportController.cs b/server/AyaNova/Controllers/ReportController.cs
index af6036a3..3ef3973c 100644
--- a/server/AyaNova/Controllers/ReportController.cs
+++ b/server/AyaNova/Controllers/ReportController.cs
@@ -196,32 +196,7 @@ namespace AyaNova.Api.Controllers
ReportBiz biz = ReportBiz.GetBiz(ct, HttpContext);
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
-
-
- // //-------------------------------
- // var UserRoles = UserRolesFromContext.Roles(HttpContext.Items);
- // var UserId = UserIdFromContext.Id(HttpContext.Items);
- // DataListSavedColumnViewBiz viewbiz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
- // var SavedView = await viewbiz.GetAsync(UserId, selectedRequest.DataListKey, true);
-
- // DataListSavedFilter SavedFilter = null;
- // if (selectedRequest.FilterId != 0)
- // {
- // DataListSavedFilterBiz filterbiz = DataListSavedFilterBiz.GetBiz(ct, HttpContext);
- // SavedFilter = await filterbiz.GetAsync(selectedRequest.FilterId, false);
- // }
- // var DataList = DataListFactory.GetAyaDataList(selectedRequest.DataListKey);
- // if (DataList == null)
- // return BadRequest(new ApiErrorResponse(ApiErrorCode.NOT_FOUND, "DataListKey", $"DataList \"{selectedRequest.DataListKey}\" specified does not exist"));
-
- // //check rights
- // if (!UserRoles.HasAnyFlags(DataList.AllowedRoles))
- // return StatusCode(403, new ApiNotAuthorizedResponse());
-
- // //hydrate the saved view and filter
- // DataListSelectedProcessingOptions dataListSelectedOptions = new DataListSelectedProcessingOptions(selectedRequest, DataList, SavedView, SavedFilter, UserId, UserRoles);
- // //------------------------
-
+
var reportData = await biz.GetReportData(selectedRequest);
if (reportData == null)
diff --git a/server/AyaNova/Controllers/TagController.cs b/server/AyaNova/Controllers/TagController.cs
index 67abfe33..e9a9fa18 100644
--- a/server/AyaNova/Controllers/TagController.cs
+++ b/server/AyaNova/Controllers/TagController.cs
@@ -91,7 +91,7 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(ModelState));
if (selectedRequest.IsEmpty)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelectedRequest is required"));
if (!selectedRequest.ObjectType.HasAttribute(typeof(CoreBizObjectAttribute)))
return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, null, "Not a taggable object type"));
@@ -103,9 +103,15 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "tag required"));
- await selectedRequest.RehydrateIdList(ct, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items));
+ //Rehydrate id list if necessary
if (selectedRequest.SelectedRowIds.Length == 0)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "List of ids"));
+ selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(
+ selectedRequest,
+ ct,
+ UserRolesFromContext.Roles(HttpContext.Items),
+ log,
+ UserIdFromContext.Id(HttpContext.Items),
+ UserTranslationIdFromContext.Id(HttpContext.Items));
var JobName = $"LT:BatchJob LT:Add LT:Tag \"{tag}\" LT:{selectedRequest.ObjectType} ({selectedRequest.SelectedRowIds.LongLength}) LT:User {UserNameFromContext.Name(HttpContext.Items)}";
JObject o = JObject.FromObject(new
@@ -181,7 +187,7 @@ namespace AyaNova.Api.Controllers
return BadRequest(new ApiErrorResponse(ModelState));
if (selectedRequest.IsEmpty)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelectedRequest is required"));
if (!selectedRequest.ObjectType.HasAttribute(typeof(CoreBizObjectAttribute)))
return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, null, "Not a taggable object type"));
@@ -192,10 +198,15 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "tag"));
- await selectedRequest.RehydrateIdList(ct, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items));
+ //Rehydrate id list if necessary
if (selectedRequest.SelectedRowIds.Length == 0)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "List of ids"));
-
+ selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(
+ selectedRequest,
+ ct,
+ UserRolesFromContext.Roles(HttpContext.Items),
+ log,
+ UserIdFromContext.Id(HttpContext.Items),
+ UserTranslationIdFromContext.Id(HttpContext.Items));
var JobName = $"LT:BatchJob LT:Remove LT:Tag \"{tag}\" LT:{selectedRequest.ObjectType} ({selectedRequest.SelectedRowIds.LongLength}) LT:User {UserNameFromContext.Name(HttpContext.Items)}";
JObject o = JObject.FromObject(new
@@ -263,20 +274,20 @@ namespace AyaNova.Api.Controllers
///
///
///
- ///
+ ///
/// Job Id
[HttpPost("batch-replace/{fromTag}")]
- public async Task BatchReplace([FromRoute] string fromTag, [FromQuery] string toTag, [FromBody] DataListSelectedRequest dataListSelection)
+ public async Task BatchReplace([FromRoute] string fromTag, [FromQuery] string toTag, [FromBody] DataListSelectedRequest selectedRequest)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
- if (dataListSelection.IsEmpty)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelection is required"));
- if (!dataListSelection.ObjectType.HasAttribute(typeof(CoreBizObjectAttribute)))
+ if (selectedRequest.IsEmpty)
+ return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "DataListSelectedRequest is required"));
+ if (!selectedRequest.ObjectType.HasAttribute(typeof(CoreBizObjectAttribute)))
return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, null, "Not a taggable object type"));
- if (!Authorized.HasModifyRole(HttpContext.Items, dataListSelection.ObjectType))
+ if (!Authorized.HasModifyRole(HttpContext.Items, selectedRequest.ObjectType))
return StatusCode(403, new ApiNotAuthorizedResponse());
fromTag = TagBiz.NormalizeTag(fromTag);
if (string.IsNullOrWhiteSpace(fromTag))
@@ -284,20 +295,27 @@ namespace AyaNova.Api.Controllers
toTag = TagBiz.NormalizeTag(toTag);
if (string.IsNullOrWhiteSpace(toTag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "toTag"));
- await dataListSelection.RehydrateIdList(ct, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items));
- if (dataListSelection.SelectedRowIds.Length == 0)
- return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, null, "List of ids"));
+
+ //Rehydrate id list if necessary
+ if (selectedRequest.SelectedRowIds.Length == 0)
+ selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(
+ selectedRequest,
+ ct,
+ UserRolesFromContext.Roles(HttpContext.Items),
+ log,
+ UserIdFromContext.Id(HttpContext.Items),
+ UserTranslationIdFromContext.Id(HttpContext.Items));
- var JobName = $"LT:BatchJob LT:Replace LT:Tag \"{fromTag}\" -> LT:Tag \"{toTag}\" LT:{dataListSelection.ObjectType} ({dataListSelection.SelectedRowIds.LongLength}) LT:User {UserNameFromContext.Name(HttpContext.Items)}";
+ var JobName = $"LT:BatchJob LT:Replace LT:Tag \"{fromTag}\" -> LT:Tag \"{toTag}\" LT:{selectedRequest.ObjectType} ({selectedRequest.SelectedRowIds.LongLength}) LT:User {UserNameFromContext.Name(HttpContext.Items)}";
JObject o = JObject.FromObject(new
{
- idList = dataListSelection.SelectedRowIds,
+ idList = selectedRequest.SelectedRowIds,
tag = fromTag,
toTag = toTag
});
OpsJob j = new OpsJob();
- j.ObjectType = dataListSelection.ObjectType;
+ j.ObjectType = selectedRequest.ObjectType;
j.Name = JobName;
j.JobType = JobType.BatchCoreObjectOperation;
j.SubType = JobSubType.TagReplace;
diff --git a/server/AyaNova/DataList/DataListFetcher.cs b/server/AyaNova/DataList/DataListFetcher.cs
index f78cfe41..d8127c06 100644
--- a/server/AyaNova/DataList/DataListFetcher.cs
+++ b/server/AyaNova/DataList/DataListFetcher.cs
@@ -238,53 +238,53 @@ namespace AyaNova.DataList
//
internal static async Task GetIdListResponseAsync(AyContext ct, DataListSelectedProcessingOptions dataListSelectionOptions,IDataListProcessing DataList, AuthorizationRoles userRoles, ILogger log, long userId)
{
- // var DataList = DataListFactory.GetAyaDataList(dataListSelectionOptions.DataListKey);
- // //was the name not found as a list?
- // if (DataList == null)
- // throw new System.ArgumentOutOfRangeException($"DataList \"{dataListSelectionOptions.DataListKey}\" specified does not exist");
+ // // var DataList = DataListFactory.GetAyaDataList(dataListSelectionOptions.DataListKey);
+ // // //was the name not found as a list?
+ // // if (DataList == null)
+ // // throw new System.ArgumentOutOfRangeException($"DataList \"{dataListSelectionOptions.DataListKey}\" specified does not exist");
- //check rights
- if (!userRoles.HasAnyFlags(DataList.AllowedRoles))
- throw new System.UnauthorizedAccessException("User roles insufficient for this datalist");
+ // //check rights
+ // if (!userRoles.HasAnyFlags(DataList.AllowedRoles))
+ // throw new System.UnauthorizedAccessException("User roles insufficient for this datalist");
- // //do we need to default the listView?
- // if (string.IsNullOrWhiteSpace(listView))
- // listView = DataList.DefaultListView;
+ // // //do we need to default the listView?
+ // // if (string.IsNullOrWhiteSpace(listView))
+ // // listView = DataList.DefaultListView;
- DataList.SetListOptionDefaultsIfNecessary(dataListSelectionOptions);
+ // DataList.SetListOptionDefaultsIfNecessary(dataListSelectionOptions);
- // //parse the list view
- // var ListViewArray = JArray.Parse(listView);
+ // // //parse the list view
+ // // var ListViewArray = JArray.Parse(listView);
- // //Hard coded extra criteria from server end
- // if (DataList is IAyaDataListServerCriteria)
- // {
- // var ServerCriteriaListView = JArray.Parse(((IAyaDataListServerCriteria)DataList).DataListServerCriteria(await ct.User.AsNoTracking().FirstOrDefaultAsync(z => z.Id == userId), ct));
- // foreach (JToken jt in ServerCriteriaListView)
- // ListViewArray.Add(jt);
- // }
+ // // //Hard coded extra criteria from server end
+ // // if (DataList is IAyaDataListServerCriteria)
+ // // {
+ // // var ServerCriteriaListView = JArray.Parse(((IAyaDataListServerCriteria)DataList).DataListServerCriteria(await ct.User.AsNoTracking().FirstOrDefaultAsync(z => z.Id == userId), ct));
+ // // foreach (JToken jt in ServerCriteriaListView)
+ // // ListViewArray.Add(jt);
+ // // }
- //STATIC filter options from server
- List StaticServerFilterOptions = null;
- if (DataList is IDataListInternalCriteria)
- StaticServerFilterOptions = ((IDataListInternalCriteria)DataList).DataListInternalCriteria(userId, userRoles, dataListSelectionOptions);
+ // //STATIC filter options from server
+ // List StaticServerFilterOptions = null;
+ // if (DataList is IDataListInternalCriteria)
+ // StaticServerFilterOptions = ((IDataListInternalCriteria)DataList).DataListInternalCriteria(userId, userRoles, dataListSelectionOptions);
- //Add the internal filters into the listoptions existing filters
- //NOTE: There is currently no overlap between internal filtered columns and filters coming from the client
- foreach (DataListFilterOption dfo in StaticServerFilterOptions)
- dataListSelectionOptions.Filter.Add(dfo);
+ // //Add the internal filters into the listoptions existing filters
+ // //NOTE: There is currently no overlap between internal filtered columns and filters coming from the client
+ // foreach (DataListFilterOption dfo in StaticServerFilterOptions)
+ // dataListSelectionOptions.Filter.Add(dfo);
- // //Hard coded extra criteria from Client end
- // //parse and combine any additional listview hard coded from Client UI
- // var MetaListViewArray = JArray.Parse(metaListView ?? "[]");
- // foreach (JToken jt in MetaListViewArray)
- // ListViewArray.Add(jt);
+ // // //Hard coded extra criteria from Client end
+ // // //parse and combine any additional listview hard coded from Client UI
+ // // var MetaListViewArray = JArray.Parse(metaListView ?? "[]");
+ // // foreach (JToken jt in MetaListViewArray)
+ // // ListViewArray.Add(jt);
- // //Get the field key names in a list from the listview
- // List ListViewFieldList = DataList.GetFieldListFromListView(ListViewArray);
+ // // //Get the field key names in a list from the listview
+ // // List ListViewFieldList = DataList.GetFieldListFromListView(ListViewArray);
//BUILD THE QUERY
//SELECT FRAGMENT COLUMNS FROM TEMPLATE
diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs
index f517b34a..5a41316c 100644
--- a/server/AyaNova/biz/ReportBiz.cs
+++ b/server/AyaNova/biz/ReportBiz.cs
@@ -344,9 +344,7 @@ namespace AyaNova.Biz
}
//Do we need to rehydrate the ID List from a DataList?
- // if (dataListSelection.SelectedRowIds.Length == 0)
- // dataListSelection.SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(dataListSelection.DataListKey, dataListSelection.ListView, dataListSelection.MetaView, ct, effectiveRoles, log, UserId);
- if(selectedRequest.SelectedRowIds.Length==0)
+ if (selectedRequest.SelectedRowIds.Length == 0)
selectedRequest.SelectedRowIds = await DataListSelectedProcessingOptions.RehydrateIdList(selectedRequest, ct, effectiveRoles, log, UserId, UserTranslationId);
@@ -405,7 +403,7 @@ namespace AyaNova.Biz
// ListView = reportParam.ListView,
// MetaView = reportParam.MetaView
// });
- var ReportData= await GetReportData(reportParam);
+ var ReportData = await GetReportData(reportParam);
//initialization
log.LogDebug("Initializing report system");
@@ -557,8 +555,8 @@ namespace AyaNova.Biz
}
//Report meta data
- // var reportMeta = $"{{Id:{report.Id},Name:`{report.Name}`,Notes:`{report.Notes}`,ObjectType:`{report.ObjectType}`,CustomFieldsDefinition:{CustomFieldsTemplate},DataListKey:`{reportParam.DataListKey}`,ListView:`{reportParam.ListView}`,SelectedRowIds: `{string.Join(",", reportParam.SelectedRowIds)}`}}";
- //removed listview as it no longer exists and I don't think there's any useful purpose to it in the report javascript at this time
+ // var reportMeta = $"{{Id:{report.Id},Name:`{report.Name}`,Notes:`{report.Notes}`,ObjectType:`{report.ObjectType}`,CustomFieldsDefinition:{CustomFieldsTemplate},DataListKey:`{reportParam.DataListKey}`,ListView:`{reportParam.ListView}`,SelectedRowIds: `{string.Join(",", reportParam.SelectedRowIds)}`}}";
+ //removed listview as it no longer exists and I don't think there's any useful purpose to it in the report javascript at this time
var reportMeta = $"{{Id:{report.Id},Name:`{report.Name}`,Notes:`{report.Notes}`,ObjectType:`{report.ObjectType}`,CustomFieldsDefinition:{CustomFieldsTemplate},DataListKey:`{reportParam.DataListKey}`,SelectedRowIds: `{string.Join(",", reportParam.SelectedRowIds)}`}}";
diff --git a/server/AyaNova/models/DataListReportProcessingOptions.cs b/server/AyaNova/models/DataListReportProcessingOptions.cs
index d1f830e6..f80518f0 100644
--- a/server/AyaNova/models/DataListReportProcessingOptions.cs
+++ b/server/AyaNova/models/DataListReportProcessingOptions.cs
@@ -1,10 +1,15 @@
using AyaNova.Biz;
+using AyaNova.DataList;
using Newtonsoft.Json.Linq;
namespace AyaNova.Models
{
public class DataListReportProcessingOptions : DataListSelectedProcessingOptions
{
+ internal DataListReportProcessingOptions(DataListSelectedRequest request, IDataListProcessing dataList, DataListSavedColumnView savedView, DataListSavedFilter savedFilter, long userId, AuthorizationRoles userRoles) : base(request, dataList, savedView, savedFilter, userId, userRoles)
+ {
+ }
+
public long ReportId { get; set; }
public JToken ClientMeta { get; set; }//meta JSON data passed from client, not part of biz object data
//public long[] SelectedRowIds { get; set; }