diff --git a/.vscode/launch.json b/.vscode/launch.json index 4044e905..ac7626ce 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -52,7 +52,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\\PostgreSQLPortable_12.0\\App\\PgSQL\\bin\\" diff --git a/server/AyaNova/biz/ReportRenderType.cs b/server/AyaNova/biz/ReportRenderType.cs new file mode 100644 index 00000000..4f2c6898 --- /dev/null +++ b/server/AyaNova/biz/ReportRenderType.cs @@ -0,0 +1,13 @@ +namespace AyaNova.Biz +{ + /// + /// All AyaNova report rendering types + /// + public enum ReportRenderType : int + {// rendertype(type to render, default is pdf, but could be text, csv etc), + PDF = 0, + Text = 1, + CSV = 2, + HTML = 3 + } +}//eons \ No newline at end of file diff --git a/server/AyaNova/models/AyContext.cs b/server/AyaNova/models/AyContext.cs index ee0ea43e..1ce1dbb5 100644 --- a/server/AyaNova/models/AyContext.cs +++ b/server/AyaNova/models/AyContext.cs @@ -69,6 +69,7 @@ namespace AyaNova.Models public virtual DbSet Logo { get; set; } + public virtual DbSet Report { get; set; } //Note: had to add this constructor to work with the code in startup.cs that gets the connection string from the appsettings.json file //and commented out the above on configuring diff --git a/server/AyaNova/models/Report.cs b/server/AyaNova/models/Report.cs new file mode 100644 index 00000000..f35c8f2d --- /dev/null +++ b/server/AyaNova/models/Report.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using AyaNova.Biz; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Newtonsoft.Json; + +namespace AyaNova.Models +{ + + public class Report + { + public long Id { get; set; } + public uint Concurrency { get; set; } + + [Required] + public string Name { get; set; } + public bool Active { get; set; } + public string Notes { get; set; } + public AuthorizationRoles Roles { get; set; } + [Required] + public AyaType ObjectType { get; set; } + + + public string Template { get; set; } + public string Style { get; set; } + public string JsPrerender { get; set; } + public string JsHelpers { get; set; } + [Required] + public ReportRenderType RenderType { get; set; } + + //tentative in case of need + // public string Locale { get; set; } + // public string Header { get; set; } + // public string Footer { get; set; } + + public Report() + { + RenderType = ReportRenderType.PDF; + ObjectType = AyaType.NoType; + Roles = AuthorizationRoles.All; + Active = true; + } + + }//eoc + +}//eons diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 7e4db5f4..d30b0ca6 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -20,10 +20,10 @@ namespace AyaNova.Util /////////// CHANGE THIS ON NEW SCHEMA UPDATE //////////////////// //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! - private const int DESIRED_SCHEMA_LEVEL = 13; + private const int DESIRED_SCHEMA_LEVEL = 14; - internal const long EXPECTED_COLUMN_COUNT = 390; - internal const long EXPECTED_INDEX_COUNT = 140; + internal const long EXPECTED_COLUMN_COUNT = 401; + internal const long EXPECTED_INDEX_COUNT = 142; //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! @@ -717,7 +717,15 @@ $BODY$; await SetSchemaLevelAsync(++currentSchema); } - + ////////////////////////////////////////////////// + // REPORT table + if (currentSchema < 14) + { + LogUpdateMessage(log); + await ExecQueryAsync("CREATE TABLE areport (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(255) not null unique, active bool, " + + "notes text, roles integer not null, objecttype integer not null, template text, style text, jsprerender text, jshelpers text, rendertype integer not null )"); + await SetSchemaLevelAsync(++currentSchema); + } diff --git a/server/AyaNova/util/DbUtil.cs b/server/AyaNova/util/DbUtil.cs index 8f8aa7d7..66889dce 100644 --- a/server/AyaNova/util/DbUtil.cs +++ b/server/AyaNova/util/DbUtil.cs @@ -268,6 +268,11 @@ namespace AyaNova.Util { await conn.OpenAsync(); + //### DELIBERATELY IGNORED + //Some data is deliberately not deleted for now: + //Reports + //Logos + //Delete from user options table first using (var cmd = new Npgsql.NpgsqlCommand()) {