using EgwProxy.SqlDb.Controllers; using EgwProxy.SqlDb.DbModels; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Text; using static System.Net.Mime.MediaTypeNames; namespace EgwProxy.SqlDb.Test { internal class Program { #region Protected Methods /// /// legge conf in formato stringa /// /// /// protected static string ReadSetting(string key) { string answ = ""; try { answ = $"{ConfigurationManager.AppSettings[key]}" ?? ""; } catch (Exception exc) { Console.Write("Eccezione in ReadSettings"); Console.Write(exc.Message); } return answ; } #endregion Protected Methods #region Private Fields /// /// Helper separatore dash /// private const string separator = "------------------------"; #endregion Private Fields #region Private Methods /// /// Programma principale /// /// private static void Main(string[] args) { Console.WriteLine(separator); Console.WriteLine("Test DB Client"); Console.WriteLine(separator); Console.WriteLine(); string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; string BaseDirectory = System.IO.Path.GetDirectoryName(exePath); string testFile = Path.Combine(BaseDirectory, ReadSetting("testFile")); string connStr = ""; DbController dbClient = new DbController(connStr); if (!string.IsNullOrEmpty(testFile)) { Console.WriteLine(separator); Console.WriteLine($"Mode json ({testFile})"); Console.WriteLine(separator); Console.WriteLine(); if (File.Exists(testFile)) { var rawData = File.ReadAllText(testFile); if (!string.IsNullOrEmpty(rawData)) { TestSetup testConf = new TestSetup(); try { testConf = JsonConvert.DeserializeObject(rawData); } catch { } // setup server connStr = $"data source={testConf.server};initial catalog={testConf.dbName};persist security info=True;user id={testConf.user};password={testConf.password};MultipleActiveResultSets=True;App={testConf.app}"; dbClient = new DbController(connStr); serverTest(dbClient); // eseguo per ogni step foreach (var item in testConf.steps) { Console.WriteLine($"------ Step {item.id} | {item.description} ------"); StringBuilder sb = new StringBuilder(); sb.AppendLine(separator); switch (item.action) { case stepType.getSyncState: var currTab = dbClient.SyncStateGetAll(); if (currTab != null && currTab.Count > 0) { foreach (var syncRec in currTab) { sb.AppendLine($"{syncRec.TableName} | {syncRec.LastIdx} | {syncRec.Note} | {syncRec.LastUpdate}"); } } else { sb.AppendLine("Error: Table empty/missing!"); } sb.AppendLine(separator); break; case stepType.resetPodl: sb.AppendLine("Inizio reset PODL"); var dbRes = dbClient.ResetPODLMes(); if (dbRes.Count == 0) { sb.AppendLine("Pulizia eseguita!"); } else { sb.AppendLine("Problemi con svuotamento tab PODL"); } sb.AppendLine(separator); break; case stepType.setNewPodl: sb.AppendLine($"Inizio inserimento {item.paramList.Count} rec"); // creo una lista di PODL da processare... List CurrPodlReq = new List(); foreach (var podl in item.paramList) { int idxPodl = 0; int.TryParse(podl, out idxPodl); MesPODLReqModel newRec = new MesPODLReqModel() { Attivabile = true, CodArticolo = "ART000000", IdxMacchina = "SIMUL_01", IdxODL = 0, IdxPromessa = idxPodl, NumPezzi = 1 }; CurrPodlReq.Add(newRec); sb.AppendLine($"Aggiunto PODL{podl:0000000}"); } // chiamo procedura insert PODL bool fatto = dbClient.PodlWriteReq(CurrPodlReq); sb.AppendLine($"Records Aggiunti!"); sb.AppendLine(separator); break; case stepType.dbMigrateAndSync: try { var esitoMigrate = dbClient.forceMigrate(); sb.Append($"Migration: {esitoMigrate}"); } catch (Exception exc) { sb.AppendLine($"eccezione in migrate:{Environment.NewLine}{exc}"); } break; #if false case stepType.createDir: if (item.paramList != null && item.paramList.Count > 0) { string dir2check = item.paramList[0]; var preTest = dbClient.dirExists(dir2check); if (preTest) { esitoStep = "Error: Folder already exists!"; } else { var dirCreate = dbClient.createDir(dir2check); esitoStep = dirCreate ? $"Directory {dir2check} created!" : $"Error: {dir2check} NOT created!"; } } else { esitoStep = "Error: missing parameter!"; } break; case stepType.delDir: if (item.paramList != null && item.paramList.Count > 0) { string dir2check = item.paramList[0]; var preTest = dbClient.dirExists(dir2check); if (preTest) { var dirDelete = dbClient.deleteDir(dir2check); esitoStep = dirDelete ? $"Directory {dir2check} deleted!" : $"Error: {dir2check} NOT deleted!"; } else { esitoStep = "Error: Folder doesn't exists, delete not possible!"; } } else { esitoStep = "Error: missing parameter!"; } break; case stepType.delFile: if (item.paramList != null && item.paramList.Count > 0) { string file2check = item.paramList[0]; var preTest = dbClient.fileExists(file2check); if (preTest) { var dirDelete = dbClient.deleteFile(file2check); esitoStep = dirDelete ? $"File {file2check} deleted!" : $"Error: {file2check} NOT deleted!"; } else { esitoStep = "Error: File doesn't exists, delete not possible!"; } } else { esitoStep = "Error: missing parameter!"; } break; case stepType.downloadDir: if (item.paramList != null && item.paramList.Count > 1) { string dir2check = item.paramList[0]; string localDir = Path.Combine(BaseDirectory, item.paramList[1]); var preTest = dbClient.dirExists(dir2check); if (preTest) { var dirDelete = dbClient.getDir(localDir, dir2check); esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!"; } else { esitoStep = "Error: Folder doesn't exists, download not possible!"; } } else { esitoStep = "Error: missing parameters!"; } break; case stepType.downloadFile: if (item.paramList != null && item.paramList.Count > 1) { string dir2check = item.paramList[0]; string localDir = Path.Combine(BaseDirectory, item.paramList[1]); var preTest = dbClient.dirExists(dir2check); if (preTest) { var dirDelete = dbClient.getDir(localDir, dir2check); esitoStep = dirDelete ? $"Directory {dir2check} downloaded!" : $"Error: {dir2check} NOT downloaded!"; } else { esitoStep = "Error: Folder doesn't exists, download not possible!"; } } else { esitoStep = "Error: missing parameters!"; } break; case stepType.uploadDir: if (item.paramList != null && item.paramList.Count > 1) { string remoteDir = item.paramList[0]; string localDir = Path.Combine(BaseDirectory, item.paramList[1]); var dirUploaded = dbClient.sendDir(localDir, remoteDir); esitoStep = dirUploaded ? $"Directory {remoteDir} uploaded!" : $"Error: {remoteDir} NOT uploaded!"; } else { esitoStep = "Error: missing parameters!"; } break; case stepType.uploadFile: if (item.paramList != null && item.paramList.Count > 1) { string remotePath = item.paramList[0]; string localPath = Path.Combine(BaseDirectory, item.paramList[1]); var fileUploaded = dbClient.sendFile(localPath, remotePath); esitoStep = fileUploaded ? $"File {remotePath} uploaded!" : $"Error: {remotePath} NOT uploaded!"; } else { esitoStep = "Error: missing parameters!"; } break; case stepType.listContent: if (item.paramList != null && item.paramList.Count > 0) { string remoteDir = item.paramList[0]; var preTest = dbClient.dirExists(remoteDir); if (preTest) { var listResult = dbClient.listDir(remoteDir, false); Console.WriteLine($"Content of dir {remoteDir}:"); foreach (var itemList in listResult) { Console.WriteLine(itemList); } } else { esitoStep = "Error: Folder doesn't exists, list not possible!"; } } else { esitoStep = "Error: missing parameter!"; } break; #endif default: break; } string esitoStep = sb.ToString(); Console.WriteLine(esitoStep); Console.WriteLine($"------ Done Step {item.id} ------"); Console.WriteLine(); Console.WriteLine("Press a key to continue..."); Console.ReadKey(); } } } } } private static void serverTest(DbController dbClient) { Console.WriteLine(separator); string testServer = dbClient.serverOk(); Console.WriteLine($"Test connessione: esito {testServer}"); Console.WriteLine(separator); Console.WriteLine(); } #endregion Private Methods } }