This commit is contained in:
2021-01-30 19:45:23 +00:00
parent 1012f28c0a
commit a9a063c4cd
13 changed files with 44 additions and 44 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
"AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE": "true",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -19,10 +19,10 @@ namespace AyaNova.Api.Controllers
[Route("api/v{version:apiVersion}/data-list-column-view")]
[Produces("application/json")]
[Authorize]
public class DataListSavedColumnViewController : ControllerBase
public class DataListColumnViewController : ControllerBase
{
private readonly AyContext ct;
private readonly ILogger<DataListSavedColumnViewController> log;
private readonly ILogger<DataListColumnViewController> log;
private readonly ApiServerState serverState;
@@ -32,7 +32,7 @@ namespace AyaNova.Api.Controllers
/// <param name="dbcontext"></param>
/// <param name="logger"></param>
/// <param name="apiServerState"></param>
public DataListSavedColumnViewController(AyContext dbcontext, ILogger<DataListSavedColumnViewController> logger, ApiServerState apiServerState)
public DataListColumnViewController(AyContext dbcontext, ILogger<DataListColumnViewController> logger, ApiServerState apiServerState)
{
ct = dbcontext;
log = logger;
@@ -41,16 +41,16 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Get DataListSavedColumnView for current user
/// Get DataListColumnView for current user
/// </summary>
/// <param name="listKey"></param>
/// <returns>DataListSavedColumnView</returns>
/// <returns>DataListColumnView</returns>
[HttpGet("{userId}/{listKey}")]
public async Task<IActionResult> GetDataListSavedColumnView([FromRoute] string listKey)
public async Task<IActionResult> GetDataListColumnView([FromRoute] string listKey)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
DataListSavedColumnViewBiz biz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
DataListColumnViewBiz biz = DataListColumnViewBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
@@ -63,22 +63,22 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Replace DataListSavedColumnView
/// Replace DataListColumnView
/// </summary>
/// <param name="newObject"></param>
/// <param name="apiVersion">From route path</param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> ReplaceDataListSavedColumnView([FromBody] DataListSavedColumnView newObject, ApiVersion apiVersion)
public async Task<IActionResult> ReplaceDataListColumnView([FromBody] DataListColumnView newObject, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
DataListSavedColumnViewBiz biz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
DataListColumnViewBiz biz = DataListColumnViewBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
DataListSavedColumnView o = await biz.CreateAsync(newObject);
DataListColumnView o = await biz.CreateAsync(newObject);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
else
@@ -87,18 +87,18 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Reset DataListSavedColumnView to factory defaults
/// Reset DataListColumnView to factory defaults
/// </summary>
/// <param name="listKey"></param>
/// <returns>NoContent</returns>
[HttpDelete("{id}")]
public async Task<IActionResult> ResetDataListSavedColumnView([FromRoute] string listKey)
public async Task<IActionResult> ResetDataListColumnView([FromRoute] string listKey)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
DataListSavedColumnViewBiz biz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
DataListColumnViewBiz biz = DataListColumnViewBiz.GetBiz(ct, HttpContext);
var o = await biz.DeleteAsync(biz.UserId, listKey);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));

View File

@@ -74,7 +74,7 @@ namespace AyaNova.Api.Controllers
try
{
DataListSavedColumnViewBiz viewbiz = DataListSavedColumnViewBiz.GetBiz(ct, HttpContext);
DataListColumnViewBiz viewbiz = DataListColumnViewBiz.GetBiz(ct, HttpContext);
var SavedView = await viewbiz.GetAsync(UserId, tableRequest.DataListKey, true);
DataListSavedFilter SavedFilter = null;

View File

@@ -134,7 +134,7 @@ namespace AyaNova.Biz
[CoreBizObject]
PartWarehouse = 66,
PartInventory = 67,
DataListSavedColumnView = 68
DataListColumnView = 68

View File

@@ -12,24 +12,24 @@ namespace AyaNova.Biz
{
internal class DataListSavedColumnViewBiz : BizObject
internal class DataListColumnViewBiz : BizObject
{
internal DataListSavedColumnViewBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
internal DataListColumnViewBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
{
ct = dbcontext;
UserId = currentUserId;
UserTranslationId = userTranslationId;
CurrentUserRoles = UserRoles;
BizType = AyaType.DataListSavedColumnView;
BizType = AyaType.DataListColumnView;
}
internal static DataListSavedColumnViewBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null)
internal static DataListColumnViewBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null)
{
if (httpContext != null)
return new DataListSavedColumnViewBiz(ct, UserIdFromContext.Id(httpContext.Items), UserTranslationIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items));
return new DataListColumnViewBiz(ct, UserIdFromContext.Id(httpContext.Items), UserTranslationIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items));
else
return new DataListSavedColumnViewBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull);
return new DataListColumnViewBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull);
}
@@ -38,14 +38,14 @@ namespace AyaNova.Biz
//EXISTS
internal async Task<bool> ExistsAsync(long id)
{
return await ct.DataListSavedColumnView.AnyAsync(z => z.Id == id);
return await ct.DataListColumnView.AnyAsync(z => z.Id == id);
}
////////////////////////////////////////////////////////////////////////////////////////////////
//CREATE
//
internal async Task<DataListSavedColumnView> CreateAsync(DataListSavedColumnView newObject)
internal async Task<DataListColumnView> CreateAsync(DataListColumnView newObject)
{
ValidateAsync(newObject);
if (HasErrors)
@@ -56,11 +56,11 @@ namespace AyaNova.Biz
var dbObject = await GetAsync(newObject.UserId, newObject.ListKey, false);
if (dbObject != null)
{
ct.DataListSavedColumnView.Remove(dbObject);
ct.DataListColumnView.Remove(dbObject);
await ct.SaveChangesAsync();
}
await ct.DataListSavedColumnView.AddAsync(newObject);
await ct.DataListColumnView.AddAsync(newObject);
await ct.SaveChangesAsync();
return newObject;
@@ -74,16 +74,16 @@ namespace AyaNova.Biz
//GET
//
//
internal async Task<DataListSavedColumnView> GetAsync(long userId, string listKey, bool createDefaultIfNecessary)
internal async Task<DataListColumnView> GetAsync(long userId, string listKey, bool createDefaultIfNecessary)
{
var ret = await ct.DataListSavedColumnView.AsNoTracking().SingleOrDefaultAsync(z => z.UserId == userId && z.ListKey == listKey);
var ret = await ct.DataListColumnView.AsNoTracking().SingleOrDefaultAsync(z => z.UserId == userId && z.ListKey == listKey);
if (ret == null && createDefaultIfNecessary)
{
if (!DataListFactory.ListKeyIsValid(listKey))
{
throw new System.ArgumentOutOfRangeException($"ListKey '{listKey}' is not a valid DataListKey");
}
ret = new DataListSavedColumnView();
ret = new DataListColumnView();
ret.UserId = UserId;
ret.ListKey = listKey;
var dataList = DataListFactory.GetAyaDataList(listKey);
@@ -99,7 +99,7 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
//DELETE (RESET)
//
internal async Task<DataListSavedColumnView> DeleteAsync(long userId, string listKey)
internal async Task<DataListColumnView> DeleteAsync(long userId, string listKey)
{
//this is effectively the RESET route handler
//so it can be called any time even if there is no default list and it's a-ok
@@ -108,7 +108,7 @@ namespace AyaNova.Biz
var dbObject = await GetAsync(userId, listKey, false);
if (dbObject != null)
{
ct.DataListSavedColumnView.Remove(dbObject);
ct.DataListColumnView.Remove(dbObject);
await ct.SaveChangesAsync();
dbObject = await GetAsync(userId, listKey, true);
}
@@ -121,7 +121,7 @@ namespace AyaNova.Biz
//
//Can save or update?
private void ValidateAsync(DataListSavedColumnView inObj)
private void ValidateAsync(DataListColumnView inObj)
{
if (inObj.UserId != UserId)

View File

@@ -600,7 +600,7 @@ namespace AyaNova.Biz
await ct.Database.ExecuteSqlInterpolatedAsync($"delete from anotifysubscription where userid = {dbObject.Id}");
//personal datalist options
await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistsavedfilter where public = {false} and userid = {dbObject.Id}");
await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistsavedcolumnview where userid = {dbObject.Id}");
await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistcolumnview where userid = {dbObject.Id}");
//Dashboard view
await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adashboardview where userid = {dbObject.Id}");

View File

@@ -23,7 +23,7 @@ namespace AyaNova.Models
public virtual DbSet<Translation> Translation { get; set; }
public virtual DbSet<TranslationItem> TranslationItem { get; set; }
public virtual DbSet<DataListSavedFilter> DataListSavedFilter { get; set; }
public virtual DbSet<DataListSavedColumnView> DataListSavedColumnView { get; set; }
public virtual DbSet<DataListColumnView> DataListColumnView { get; set; }
public virtual DbSet<Tag> Tag { get; set; }
public virtual DbSet<FormCustom> FormCustom { get; set; }
public virtual DbSet<PickListTemplate> PickListTemplate { get; set; }

View File

@@ -5,7 +5,7 @@ namespace AyaNova.Models
{
//this is a hiearchical object so saving as a JSON fragment still best option
public class DataListSavedColumnView
public class DataListColumnView
{
public long Id { get; set; }
public uint Concurrency { get; set; }

View File

@@ -6,7 +6,7 @@ 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)
internal DataListReportProcessingOptions(DataListSelectedRequest request, IDataListProcessing dataList, DataListColumnView savedView, DataListSavedFilter savedFilter, long userId, AuthorizationRoles userRoles) : base(request, dataList, savedView, savedFilter, userId, userRoles)
{
}

View File

@@ -20,7 +20,7 @@ namespace AyaNova.Models
internal DataListSelectedProcessingOptions(
DataListSelectedRequest request,
IDataListProcessing dataList,
DataListSavedColumnView savedView,
DataListColumnView savedView,
DataListSavedFilter savedFilter,
long userId,
AuthorizationRoles userRoles)
@@ -51,7 +51,7 @@ namespace AyaNova.Models
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);
DataListColumnViewBiz viewbiz = new DataListColumnViewBiz(ct, userId, userTranslationId, userRoles);
var SavedView = await viewbiz.GetAsync(userId, selectedRequest.DataListKey, true);
DataListSavedFilter SavedFilter = null;

View File

@@ -19,7 +19,7 @@ namespace AyaNova.Models
internal DataListTableProcessingOptions(
DataListTableRequest request,
IDataListProcessing dataList,
DataListSavedColumnView savedView,
DataListColumnView savedView,
DataListSavedFilter savedFilter,
long userId,
AuthorizationRoles userRoles)

View File

@@ -396,7 +396,7 @@ BEGIN
when 65 then aytable = 'apartassembly';
when 66 then aytable = 'apartwarehouse';
when 67 then aytable = 'apartinventory'; aynamecolumn='description';
when 68 then return format('DataListSavedColumnView %L', ayobjectid);
when 68 then return format('DataListColumnView %L', ayobjectid);
else
RETURN returnstr;
end case;
@@ -505,7 +505,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
//////////////////////////////////////////////////
//DATALISTSAVEDFILTER / DATALISTSAVEDCOLUMNVIEW
//DATALISTSAVEDFILTER / DATALISTCOLUMNVIEW
if (currentSchema < 7)
{
LogUpdateMessage(log);
@@ -513,7 +513,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
await ExecQueryAsync("CREATE TABLE adatalistsavedfilter (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, userid BIGINT NOT NULL, name TEXT NOT NULL, public BOOL NOT NULL, "
+ "defaultfilter BOOL NOT NULL, listkey VARCHAR(255) NOT NULL, filter TEXT)");
await ExecQueryAsync("CREATE TABLE adatalistsavedcolumnview (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, userid BIGINT NOT NULL, "
await ExecQueryAsync("CREATE TABLE adatalistcolumnview (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, userid BIGINT NOT NULL, "
+ "listkey VARCHAR(255) NOT NULL, columns TEXT, sort TEXT)");

View File

@@ -318,7 +318,7 @@ namespace AyaNova.Util
await EraseTableAsync("awidget", conn);
await EraseTableAsync("aevent", conn);
await EraseTableAsync("adatalistsavedfilter", conn);
await EraseTableAsync("adatalistsavedcolumnview", conn);
await EraseTableAsync("adatalistcolumnview", conn);
await EraseTableAsync("apicklisttemplate", conn, true);
await EraseTableAsync("aformcustom", conn);
await EraseTableAsync("asearchkey", conn);