Performance Verbesserung bei Gruppenbuchungen->Ziele ermitteln, Bugfixing Jahresbericht, Terminator erweitert, BeWoToolUser eingebaut

This commit is contained in:
Christian
2024-01-24 13:29:51 +01:00
parent cd479a20de
commit a27507e577
19 changed files with 2832 additions and 2435 deletions

View File

@@ -22,6 +22,8 @@ namespace BeWoDatabaseTerminator
private const string PubKeyR3 = "3082010A0282010100BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
private const string PubKeyE1 = "04245C2DA22AFD1C4BA65D97732731ACB2A06962EF65E8A6B0F0AC4B9FFF1C0B700FD3982F4DFC0F009B37F074055732972E05EF2A4325A3FB6E342713F64F7E69D302995EEB244792C1249BE6B1218FC12481FC68CC1F69BA58F51922F774C616";
private const string APIKEY = "CwjlSCbNqctEsofpGY64Z4aO6pShNYAdGtjMqHsjO64FuK23qoRDUqIjUC0P";
private static string _ConnectionStringServer;
private static string _ConnectionStringPassword;
private static string _ConnectionStringUserID;
@@ -159,7 +161,8 @@ namespace BeWoDatabaseTerminator
if(contractStatus.Deactivate == 1)
{
FileUtils.WriteLog($"Deaktiviere Datenbank `{contractStatus.Tenant}`.", _LogFilePath);
ToggleConfigActivation(contractStatus.Tenant, false);
ToggleConfigActivation(contractStatus, false);
}
if(contractStatus.Delete == 1)
@@ -282,7 +285,7 @@ namespace BeWoDatabaseTerminator
FileUtils.WriteLog($"Die Config-Datei '{tenant}.config.deactivated' existiert.", _LogFilePath);
//connectionString = isExisting ? ExtractConnectionString(configFilePath) : connectionString;
ToggleConfigActivation(tenant, true);
ToggleConfigActivation(contractStatus, true);
//if(!isExisting)
//{
@@ -296,7 +299,7 @@ namespace BeWoDatabaseTerminator
RunCreateScripts(tenant, connectionString);
await SendInitialPasswordToTool(contractStatus, "CwjlSCbNqctEsofpGY64Z4aO6pShNYAdGtjMqHsjO64FuK23qoRDUqIjUC0P");
await SendInitialPasswordToTool(contractStatus);
}
}
@@ -304,25 +307,27 @@ namespace BeWoDatabaseTerminator
/// Löscht die angegebene Datenbank.
/// </summary>
/// <param name="tenant">Kundennummer, die gleichzeitig auch der Name der Datenbank ist.</param>
private static void DeleteDatabase(string tenant)
private static void DeleteDatabase(ContractStatus contractStatus)
{
var configFile = Path.Combine(_MultitenancyPath, $"{tenant}.config.deactivated");
var configFile = Path.Combine(_MultitenancyPath, $"{contractStatus.Tenant}.config.deactivated");
if(File.Exists(configFile))
{
var connectionString = ExtractConnectionString(configFile);
var mySqlHelper = new MySqlHelper(connectionString);
mySqlHelper.DeleteDatabase(tenant);
mySqlHelper.DeleteDatabase(contractStatus.Tenant);
File.Delete(configFile);
FileUtils.WriteLog($"Datenbank `{tenant}` und {tenant}.config.deactivated wurden gelöscht.", _LogFilePath);
FileUtils.WriteLog($"Datenbank `{contractStatus.Tenant}` und {contractStatus.Tenant}.config.deactivated wurden gelöscht.", _LogFilePath);
SendDBStatusToTool(contractStatus, false, true);
}
else
{
LogUtils.LogMessage($"Die Config-Datei für Datenbank `{tenant}` existiert nicht.", ConsoleColor.Red, ConsoleColor.Black);
FileUtils.WriteLog($"{tenant}.config nicht gefunden. Datenbank `{tenant}`, falls vorhanden, nicht gelöscht.", _LogFilePath);
LogUtils.LogMessage($"Die Config-Datei für Datenbank `{contractStatus.Tenant}` existiert nicht.", ConsoleColor.Red, ConsoleColor.Black);
FileUtils.WriteLog($"{contractStatus.Tenant}.config nicht gefunden. Datenbank `{contractStatus.Tenant}`, falls vorhanden, nicht gelöscht.", _LogFilePath);
}
}
@@ -331,10 +336,10 @@ namespace BeWoDatabaseTerminator
/// </summary>
/// <param name="tenant">Kundennummer der zu de- bwz. reaktivierenden Datenbank.</param>
/// <param name="isToBeActivated">Ob de- oder reaktiviert werden soll.</param>
private static void ToggleConfigActivation(string tenant, bool isToBeActivated)
private static void ToggleConfigActivation(ContractStatus contractStatus, bool isToBeActivated)
{
var fileName1 = isToBeActivated ? $"{tenant}.config.deactivated" : $"{tenant}.config";
var fileName2 = isToBeActivated ? $"{tenant}.config" : $"{tenant}.config.deactivated";
var fileName1 = isToBeActivated ? $"{contractStatus.Tenant}.config.deactivated" : $"{contractStatus.Tenant}.config";
var fileName2 = isToBeActivated ? $"{contractStatus.Tenant}.config" : $"{contractStatus.Tenant}.config.deactivated";
var path1 = Path.Combine(_MultitenancyPath, fileName1);
var path2 = Path.Combine(_MultitenancyPath, fileName2);
@@ -345,9 +350,14 @@ namespace BeWoDatabaseTerminator
if(File.Exists(path1))
{
File.Delete(path1);
if (!isToBeActivated)
{
SendDBStatusToTool(contractStatus, true, false);
}
}
FileUtils.WriteLog($"{tenant}.config {(isToBeActivated == false ? "de" : string.Empty)}aktiviert.", _LogFilePath);
FileUtils.WriteLog($"{contractStatus.Tenant}.config {(isToBeActivated == false ? "de" : string.Empty)}aktiviert.", _LogFilePath);
}
else
{
@@ -425,7 +435,7 @@ namespace BeWoDatabaseTerminator
/// <param name="contractStatus">ContractStatus für den eine neue Datenbank angelegt werden soll.</param>
/// <param name="apiKey">Der für das Tool nötige API-Key.</param>
/// <returns>Der Rückgabetyp bei asynchronen Methoden ist Task, wenn er sonst void wäre.</returns>
private static async Task SendInitialPasswordToTool(ContractStatus contractStatus, string apiKey)
private static async Task SendInitialPasswordToTool(ContractStatus contractStatus)
{
var mySqlHelper1 = new MySqlHelper($"Server={_ConnectionStringServer};Password={_ConnectionStringPassword};User ID={_ConnectionStringUserID};Port={_ConnectionStringPort}");
var databaseExists = false;
@@ -438,12 +448,12 @@ namespace BeWoDatabaseTerminator
FileUtils.WriteLog(exception?.ToString(), _LogFilePath);
}
if(!string.IsNullOrWhiteSpace(apiKey) && !(contractStatus is null) && databaseExists)
if(!(contractStatus is null) && databaseExists)
{
var password = PasswordHelper.GenerateInitialPassword(new Random());
var uri = new Uri($"https://support.bewoplaner.de/api/save_initialpw.php?APIKEY1={apiKey}&LicenseTypeID={contractStatus.LicenseTypeId}&CustomerID={contractStatus.Tenant}&InitialPW={password}");
var uri = new Uri($"https://support.bewoplaner.de/api/save_initialpw.php?APIKEY1={APIKEY}&LicenseTypeID={contractStatus.LicenseTypeId}&CustomerID={contractStatus.Tenant}&InitialPW={password}");
var request = (HttpWebRequest) WebRequest.Create(uri);
@@ -509,17 +519,57 @@ namespace BeWoDatabaseTerminator
}
else
{
var logMessage = string.Empty;
var logMessage = $"SendInitialPasswordToTool ContractStatus ist null";
if(string.IsNullOrWhiteSpace(apiKey))
FileUtils.WriteLog(logMessage, _LogFilePath);
}
}
private static async Task SendDBStatusToTool(ContractStatus contractStatus, bool deactivated, bool deleted)
{
if (contractStatus != null)
{
String t = "";
if (deactivated)
{
logMessage += "API-Key ist null oder leer";
t = "1";
}
if (deleted)
{
t = "2";
}
var uri = new Uri($"https://support.bewoplaner.de/api/dbstate.php?APIKEY1={APIKEY}&LicenseTypeID={contractStatus.LicenseTypeId}&CustomerID={contractStatus.Tenant}&Type={t}");
if(contractStatus is null)
var request = (HttpWebRequest)WebRequest.Create(uri);
FileUtils.WriteLog($"Sende Status für Datenbank `{contractStatus.Tenant}` an API.", _LogFilePath);
try
{
logMessage += $"{(logMessage.Length > 0 ? " " : string.Empty)}ContractStatus ist null";
using (var response = (HttpWebResponse)await request.GetResponseAsync())
{
if (response.GetResponseStream() is Stream reponseStream)
{
using (var reader = new StreamReader(reponseStream, Encoding.UTF8))
{
var text = await reader.ReadToEndAsync();
}
}
}
}
catch (Exception exception)
{
FileUtils.WriteLog(exception?.ToString(), _LogFilePath);
}
}
else
{
var logMessage = $"SendDBStatusToTool ContractStatus ist null";
FileUtils.WriteLog(logMessage, _LogFilePath);
}