This commit is contained in:
2022-03-09 22:41:12 +00:00
parent 7b05a63bae
commit 6e94270628
4 changed files with 26 additions and 69 deletions

View File

@@ -5,21 +5,6 @@ choco upgrade chocolatey
todo: ip address logged in container mode is the local server as I guess it comes from NGINX
is there a way to capture this or...?
todo: AYANOVA_SERVER_TEST_MODE Is this a thing anymore? I think I need to remove it as an environment variable and all the startup code to go with it
todo: AYANOVA_PERMANENTLY_ERASE_DATABASE does more than that, also resets dbid, should this option name be changed to something more dire
it sounds just like the option in ayaNova to erase all data but those are two different things
"permanently" is redundant as well.
todo: permanently erase db startup thing, should it really exist?
It will zap the dbid so a user might expect to just use their old license but it wont' fetch again
we could issue a new key to replace with the new dbid and also issue a revoke key for the old dbid so that
there can be no fraudulent use this way.
I guess it's a rare situation and if the option to delete is there people will surely fuck up and use it unintentionally?
or maybe not
todo: could be a presentation issue but erasing the database and "permanently" erasing the db do two different things completely
Maybe change the biz object erase to empty or remove all data or something along those lines
If it requires too much explanation then it's probably mis-identified as to what it does
todo: docs, change all named references to the Manager / manager / admin / adminstrator account to "SuperUser"
todo: add alternate, backup domain to be checked for license key if primary can't be reached

View File

@@ -265,7 +265,7 @@ namespace AyaNova.Api.Controllers
//empty the db
await AyaNova.Util.DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(log);
await AyaNova.Util.DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(log, Guid.Empty);
//Log
await EventLogProcessor.LogEventToDatabaseAsync(new Event(1, 0, AyaType.Global, AyaEvent.EraseAllData), ct);

View File

@@ -306,7 +306,7 @@ namespace AyaNova.Util
// Erase all user entered data from the db
// This is called by seeder for trial seeding purposes
// and by v8 migrate and by license controller when erasing db
internal static async Task EmptyBizDataFromDatabaseForSeedingOrImportingAsync(ILogger _log)
internal static async Task EmptyBizDataFromDatabaseForSeedingOrImportingAsync(ILogger _log, Guid jobIdToKeep)
{
_log.LogInformation("Erasing Database \"{0}\"", _dbName);
@@ -321,12 +321,6 @@ namespace AyaNova.Util
{
await conn.OpenAsync();
//### DELIBERATELY IGNORED
//Some data is deliberately not deleted for now:
//Reports
//Logos
//prepare to delete by removing foreign keys
using (var cmd = new Npgsql.NpgsqlCommand())
{
@@ -350,48 +344,31 @@ namespace AyaNova.Util
cmd.CommandText = "update apurchaseorderitem set workorderitempartrequestid=null;";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = "update aglobalbizsettings set "
+ "webaddress =null, phone1 =null, phone2 =null, emailaddress =null, postaddress =null, postcity =null, postregion =null, postcountry =null, postcode =null, "
+ "address =null, city =null, region =null, country =null, latitude=null, longitude =null, "
+ "filtercasesensitive = FALSE, "
+ "useinventory = TRUE, "
+ "allowscheduleconflicts = TRUE, "
+ "workordercompletebyage = '00:00:00', "
+ "workordertraveldefaultminutes = 0, "
+ "worklaborscheduledefaultminutes = 0, "
+ "signaturetitle =null, "
+ "signatureheader =null, "
+ "signaturefooter =null, "
+ "customerservicerequestinfotext =null, "
+ "customerallowcsr = FALSE, customerallowcsrintags ='{}', "
+ "customerallowcreateunit = FALSE, customerallowcreateunitintags ='{}', "
+ "customerallowviewwo = FALSE, customerallowviewwointags ='{}', "
+ "customerworkorderreport1tags ='{}', customerworkorderreport2tags ='{}', "
+ "customerworkorderreport3tags ='{}', customerworkorderreport4tags ='{}', customerworkorderreport5tags ='{}', "
+ "customerallowwowiki = FALSE, customerallowwowikiintags ='{}', "
+ "customerallowwoattachments = FALSE, customerallowwoattachmentsintags ='{}', "
+ "customerallowusersettings = FALSE, customerallowusersettingsintags ='{}', "
+ "customerallownotifyserviceimminent = FALSE, customerallownotifyserviceimminentintags ='{}', "
+ "customerallownotifycsraccepted = FALSE, customerallownotifycsracceptedintags ='{}', "
+ "customerallownotifycsrrejected = FALSE, customerallownotifycsrrejectedintags ='{}', "
+ "customerallownotifywocreated = FALSE, customerallownotifywocreatedintags ='{}', "
+ "customerallownotifywocompleted = FALSE, customerallownotifywocompletedintags ='{}', "
+ "taxpartpurchaseid=null,taxpartsaleid=null,taxratesaleid=null, "
+ "customerdefaultworkorderreportid=null, customertagworkorderreport1id=null, customertagworkorderreport2id=null, "
+ "customertagworkorderreport3id=null, customertagworkorderreport4id=null, customertagworkorderreport5id=null ";
await cmd.ExecuteNonQueryAsync();
//reset global settings cache taxes
ServerGlobalBizSettings.Cache.TaxPartPurchaseId = null;
ServerGlobalBizSettings.Cache.TaxPartSaleId = null;
ServerGlobalBizSettings.Cache.TaxRateSaleId = null;
cmd.CommandText = "update aworkorderitem set fromcsrid=null;";
await cmd.ExecuteNonQueryAsync();
//aglobalopsbackupsettings just keep as is which is the safe option
cmd.CommandText = "update aglobalopsnotificationsettings set smtpdeliveryactive=false, smtpserveraddress=null,smtpaccount=null,smtppassword=null,connectionsecurity=0, smtpserverport=null,notifyfromaddress=null,ayanovaserverurl=null;";
if (jobIdToKeep != Guid.Empty)
{
//delete from aopsjoblog where jobid <> '8acec231-aab4-4fdc-b01e-8908378a0e7f';
//delete from aopsjob where gid <> '8acec231-aab4-4fdc-b01e-8908378a0e7f';
cmd.CommandText = $"delete from aopsjoblog where jobid <> '{jobIdToKeep}'";
await cmd.ExecuteNonQueryAsync();
cmd.CommandText = $"delete from aopsjob where gid <> '{jobIdToKeep}'";
await cmd.ExecuteNonQueryAsync();
}
//DELIBERATELY NOT ERASED:
//NOTE: these tables commented below are deliberately not affected as it's assumed for a **COMPLETE** erase users will erase manually or use the config setting to completely drop the database
//For anything less than that it's assumed users are testing things out and want to keep these tables but erase the biz data
//aglobalopsbackupsettings
//aglobalopsnotificationsettings
//aglobalbizsettings
//alogo
//areport
//await EraseTableAsync("aopsjoblog", conn, true);
// await EraseTableAsync("aopsjob", conn, true);
}
@@ -509,7 +486,7 @@ namespace AyaNova.Util
await EraseTableAsync("aservicerate", conn);
await EraseTableAsync("atravelrate", conn);
await EraseTableAsync("ataxcode", conn);
//await EraseTableAsync("ataxcode", conn);
await EraseTableAsync("aquotestatus", conn);
@@ -522,12 +499,7 @@ namespace AyaNova.Util
await EraseTableAsync("ametricdd", conn, true);
await EraseTableAsync("adashboardview", conn);
await EraseTableAsync("aopsjoblog", conn, true);
await EraseTableAsync("aopsjob", conn, true);
await EraseTableAsync("alogo", conn);
await EraseTableAsync("areport", conn);
await Biz.PrimeData.PrimeReportTemplates();
// await EraseTableAsync("XXXXX", conn);

View File

@@ -104,7 +104,7 @@ namespace AyaNova.Util
ServerBootConfig.SEEDING = true;
//Erase all the data except for the license, schema and the SuperUser
await DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(log);
await DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(log, JobId);
//Event log erase and seeding
using (var ct = ServiceProviderProvider.DBContext)
{