This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using
|
||||||
|
|
||||||
namespace AyaNova.DataList
|
namespace AyaNova.DataList
|
||||||
{
|
{
|
||||||
|
|
||||||
public sealed class DataListOptions
|
public sealed class DataListOptions : DataListBase
|
||||||
{
|
{
|
||||||
public const int MaxPageSize = 1000;
|
public const int MaxPageSize = 1000;
|
||||||
public const int DefaultOffset = 0;
|
public const int DefaultOffset = 0;
|
||||||
@@ -20,7 +21,24 @@ namespace AyaNova.DataList
|
|||||||
[FromBody, Required]
|
[FromBody, Required]
|
||||||
public string DataListKey { get; set; }
|
public string DataListKey { get; set; }
|
||||||
|
|
||||||
/*
|
[FromBody]
|
||||||
|
public DataListView View { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
// [FromBody]
|
||||||
|
// public List<string> Columns { get; set; }
|
||||||
|
// [FromBody]
|
||||||
|
// public Dictionary<string, string> SortBy { get; set; }
|
||||||
|
// [FromBody]
|
||||||
|
// public List<DataListFilterOption> Filter { get; set; }
|
||||||
|
// [FromBody]
|
||||||
|
// public string ClientCriteria { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class DataListView
|
||||||
|
{
|
||||||
|
/*
|
||||||
OLD EXAMPLE:
|
OLD EXAMPLE:
|
||||||
{"offset":0,"limit":10,"dataListKey":"CustomerDataList",
|
{"offset":0,"limit":10,"dataListKey":"CustomerDataList",
|
||||||
"listView":"[
|
"listView":"[
|
||||||
@@ -52,7 +70,7 @@ namespace AyaNova.DataList
|
|||||||
{
|
{
|
||||||
public string Column { get; set; }
|
public string Column { get; set; }
|
||||||
public List<DataListColumnFilter> items { get; set; }
|
public List<DataListColumnFilter> items { get; set; }
|
||||||
public bool Any {get;set;}//means "or" the filter conditions
|
public bool Any { get; set; }//means "or" the filter conditions
|
||||||
DataListFilterOption()
|
DataListFilterOption()
|
||||||
{
|
{
|
||||||
items = new List<DataListColumnFilter>();
|
items = new List<DataListColumnFilter>();
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
catch (Newtonsoft.Json.JsonReaderException ex)
|
catch (Newtonsoft.Json.JsonReaderException ex)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "ListView", "ListView is not valid JSON string: " + ex.Message);
|
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "DashboardView", "DashboardView is not valid JSON string: " + ex.Message);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,26 +331,27 @@ 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(DataListSelection reportDataParam)
|
public async Task<Newtonsoft.Json.Linq.JArray> GetReportData(DataListSelection dataListSelection)
|
||||||
{
|
{
|
||||||
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, reportDataParam.ObjectType))
|
if (!AyaNova.Api.ControllerHelpers.Authorized.HasReadFullRole(effectiveRoles, dataListSelection.ObjectType))
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {reportDataParam.ObjectType} type object");
|
AddError(ApiErrorCode.NOT_AUTHORIZED, null, $"User not authorized for {dataListSelection.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 (reportDataParam.SelectedRowIds.Length == 0)
|
// if (dataListSelection.SelectedRowIds.Length == 0)
|
||||||
reportDataParam.SelectedRowIds = await AyaNova.DataList.DataListFetcher.GetIdListResponseAsync(reportDataParam.DataListKey, reportDataParam.ListView, reportDataParam.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);
|
||||||
|
|
||||||
log.LogDebug($"Instantiating biz object handler for {reportDataParam.ObjectType}");
|
log.LogDebug($"Instantiating biz object handler for {dataListSelection.ObjectType}");
|
||||||
var biz = BizObjectFactory.GetBizObject(reportDataParam.ObjectType, ct);
|
var biz = BizObjectFactory.GetBizObject(dataListSelection.ObjectType, ct);
|
||||||
log.LogDebug($"Fetching data for {reportDataParam.SelectedRowIds.Length} {reportDataParam.ObjectType} items");
|
log.LogDebug($"Fetching data for {dataListSelection.SelectedRowIds.Length} {dataListSelection.ObjectType} items");
|
||||||
return await ((IReportAbleObject)biz).GetReportData(reportDataParam.SelectedRowIds);
|
return await ((IReportAbleObject)biz).GetReportData(dataListSelection.SelectedRowIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -393,15 +394,16 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
//Get data
|
//Get data
|
||||||
var ReportData = await GetReportData(
|
// var ReportData = await GetReportData(
|
||||||
new DataListSelection()
|
// new DataListSelection()
|
||||||
{
|
// {
|
||||||
ObjectType = report.ObjectType,
|
// ObjectType = report.ObjectType,
|
||||||
SelectedRowIds = reportParam.SelectedRowIds,
|
// SelectedRowIds = reportParam.SelectedRowIds,
|
||||||
DataListKey = reportParam.DataListKey,
|
// DataListKey = reportParam.DataListKey,
|
||||||
ListView = reportParam.ListView,
|
// ListView = reportParam.ListView,
|
||||||
MetaView = reportParam.MetaView
|
// MetaView = reportParam.MetaView
|
||||||
});
|
// });
|
||||||
|
var ReportData= await GetReportData(reportParam);
|
||||||
|
|
||||||
//initialization
|
//initialization
|
||||||
log.LogDebug("Initializing report system");
|
log.LogDebug("Initializing report system");
|
||||||
|
|||||||
47
server/AyaNova/models/DataListBase.cs
Normal file
47
server/AyaNova/models/DataListBase.cs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
namespace AyaNova.Models
|
||||||
|
{
|
||||||
|
|
||||||
|
//common base class for data table display at client, reporting and mass bulk operations
|
||||||
|
public class DataListBase
|
||||||
|
{
|
||||||
|
public string DataListKey { get; set; }
|
||||||
|
public Dictionary<string, string> SortBy { get; set; }
|
||||||
|
public List<DataListFilterOption> Filter { get; set; }
|
||||||
|
public string ClientCriteria { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
OLD EXAMPLE:
|
||||||
|
{"offset":0,"limit":10,"dataListKey":"CustomerDataList",
|
||||||
|
"listView":"[
|
||||||
|
{\"fld\":\"customername\",\"sort\":\"+\",\"filter\":{\"items\":[{\"op\":\"=\",\"value\":\"dfdfdf\"},{\"op\":\"=\",\"value\":\"3333\"}],\"any\":true}},
|
||||||
|
{\"fld\":\"customerphone1\",\"filter\":{\"items\":[{\"op\":\">\",\"value\":\"44444\"},
|
||||||
|
{\"op\":\"<\",\"value\":\"7777\"}]}},
|
||||||
|
{\"fld\":\"customeremail\"}
|
||||||
|
{\"fld\":\"customerheadoffice\"},
|
||||||
|
{\"fld\":\"customertags\",\"sort\":\"+\"}]"}
|
||||||
|
|
||||||
|
NEW:
|
||||||
|
columns:["PartInventoryTransactionEntryDate","PartPartNumber","PartWarehouseName","PartInventoryTransactionQuantity","PartInventoryTransactionDescription","PartInventoryTransactionSource","PartInventoryBalance"]
|
||||||
|
sortBy:[{"PartInventoryTransactionEntryDate":"-"}],//All sorted columns here as keyvalue pairs value is a string of "+" for ascending "-" for descending and are IN ORDER of how to be sorted
|
||||||
|
filter:[{column:"PartPartNumber",any:true/false,items:[{op: "=",value: "400735"}]}],
|
||||||
|
clientCriteria:"2" //could be anything here that makes sense to the list, in this case an example customer id for customernotedatalist
|
||||||
|
*/
|
||||||
|
public class DataListFilterOption
|
||||||
|
{
|
||||||
|
public string Column { get; set; }
|
||||||
|
public List<DataListColumnFilter> items { get; set; }
|
||||||
|
public bool Any { get; set; }//means "or" the filter conditions
|
||||||
|
DataListFilterOption()
|
||||||
|
{
|
||||||
|
items = new List<DataListColumnFilter>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DataListColumnFilter
|
||||||
|
{
|
||||||
|
public string op { get; set; }
|
||||||
|
public string value { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
17
server/AyaNova/models/DataListTableOptions.cs
Normal file
17
server/AyaNova/models/DataListTableOptions.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
|
||||||
|
namespace AyaNova.Models
|
||||||
|
{
|
||||||
|
public sealed class DataListTableOptions : DataListBase
|
||||||
|
{
|
||||||
|
public List<string> Columns { get; set; }
|
||||||
|
public const int MaxPageSize = 1000;
|
||||||
|
public const int DefaultOffset = 0;
|
||||||
|
public const int DefaultLimit = 25;
|
||||||
|
public int? Offset { get; set; }
|
||||||
|
public int? Limit { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
|
|||||||
|
|
||||||
namespace AyaNova.Models
|
namespace AyaNova.Models
|
||||||
{
|
{
|
||||||
|
//TODO: Need to split this into a personal column order set and a personal filter collection
|
||||||
public class DataListView
|
public class DataListView
|
||||||
{
|
{
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ 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
|
||||||
//either a preselected list of id's or a datalist key and listview filter object that can
|
//either a preselected list of id's or a datalist key and listview filter object that can
|
||||||
//be used to rehydrate a list of id's
|
//be used to rehydrate a list of id's
|
||||||
public class DataListSelection
|
public class DataListSelection : DataListBase
|
||||||
{
|
{
|
||||||
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
|
||||||
|
|
||||||
|
|
||||||
public bool IsEmpty
|
public bool IsEmpty
|
||||||
|
|||||||
@@ -2,15 +2,16 @@ using AyaNova.Biz;
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
namespace AyaNova.Models
|
namespace AyaNova.Models
|
||||||
{
|
{
|
||||||
|
|
||||||
public class RenderReportParameter
|
public class RenderReportParameter : DataListSelection
|
||||||
{
|
{
|
||||||
public long ReportId { get; set; }
|
public long ReportId { get; set; }
|
||||||
public long[] SelectedRowIds { get; set; }
|
public JToken ClientMeta { get; set; }//meta JSON data passed from client, not part of biz object data
|
||||||
public string DataListKey { get; set; }
|
//public long[] SelectedRowIds { get; set; }
|
||||||
public string ListView { get; set; }//optional, if null or empty will use default list view built into DataList
|
// public string DataListKey { get; set; }
|
||||||
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 ListView { get; set; }//optional, if null or empty will use default list view built into DataList
|
||||||
public JToken ClientMeta {get;set;}//meta JSON data passed from client, not part of biz object data
|
// 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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user