using ConsoleApp; using Model; using DataPersistence; using FakePersistance; using Managers; namespace ConsoleApp; public static class Program { private static IDataManager _dataManager = new DataDefaultManager(new DataContractXML()); private static IRecipeManager _recipeManager = new RecipeDefaultManager(_dataManager); private static IPasswordManager _passwordManager = new PasswordSHA256Manager(); private static IUserManager _userManager = new UserDefaultManager(_dataManager, _passwordManager); public static MasterManager Master { get; private set; } = new MasterManager(_dataManager, _recipeManager, _userManager); public static void Main(string[] args) { Console.WriteLine("Hello, World!\n\n"); string path = ""; // - path to the save file string strategy = "xml"; // - strategy is 'xml' or 'json' (/!\ this is case sensitive) // Initialize the data serializer IDataSerializer dataSerializer = (strategy == "xml") ? new DataContractXML(path) : new DataContractJSON(path); // Initialize the data manager IDataManager dataManager = (!File.Exists(Path.Combine(path, $"data.{strategy}"))) ? new DataDefaultManager(new Stubs()) : new DataDefaultManager(dataSerializer); // Initialize the other managers IRecipeManager recipeManager = new RecipeDefaultManager(dataManager); IPasswordManager passwordManager = new PasswordSHA256Manager(); IUserManager userManager = new UserDefaultManager(dataManager, passwordManager); // Initialize the master manager Master = new MasterManager(dataManager, recipeManager, userManager); Master.Setup(); MenuManager menuMgr = new MenuManager(Master); menuMgr.Loop(); // Change the data serializer if the one in place is 'Stubs' if (Master.Data as Stubs is not null) { dataManager = new DataDefaultManager(dataSerializer); Master = new MasterManager(dataManager, recipeManager, userManager); } // Save data. Console.Write("[ --SAVE-- ]:\t"); Master.Data.SaveData(); Console.WriteLine("Done."); } }