From 04192a2ef2691c5296f230a0cbc9757faf87ec14 Mon Sep 17 00:00:00 2001 From: Alexandre Agostinho Date: Wed, 24 May 2023 16:34:59 +0200 Subject: [PATCH] new main menu working --- MCTG/ConsoleApp/Menu/MainMenu.cs | 28 +++++++++++++++----- MCTG/ConsoleApp/MenuManager.cs | 13 +++++----- MCTG/ConsoleApp/Program.cs | 39 +++++++--------------------- MCTG/Model/Managers/MasterManager.cs | 3 +-- 4 files changed, 38 insertions(+), 45 deletions(-) diff --git a/MCTG/ConsoleApp/Menu/MainMenu.cs b/MCTG/ConsoleApp/Menu/MainMenu.cs index 5f32956..bdd75db 100644 --- a/MCTG/ConsoleApp/Menu/MainMenu.cs +++ b/MCTG/ConsoleApp/Menu/MainMenu.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using ConsoleApp.Menu.Core; +using Model.Managers; namespace ConsoleApp.Menu { @@ -14,12 +15,25 @@ namespace ConsoleApp.Menu /// internal class MainMenu : Menu { - public MainMenu(DataManager dataMgr) - : base("Main menu", - new Selector( - new SearcherRecipe(new RecipeCollection("search", dataMgr.Data[nameof(Recipe)].Cast().ToArray())), "Recipe search"), - new Selector( - new ConnectionMenu(), "Connection")) - { } + public MainMenu(MasterManager masterManager) + : base("Main menu") + { + _allSelectors.Add(new Selector( + new SearcherRecipe(masterManager.DataMgr.GetRecipes("search")), "Recipe search")); + + _allSelectors.Add(MasterManager.CurrentConnectedUser is null ? + new Selector(new ConnectionMenu(), "Connection") + : new Selector(new PlainText("User profile"), "User profile")); + } + + protected override List> SearchInSelection() + { + List> selectors = base.SearchInSelection(); + + if (MasterManager.CurrentConnectedUser == null) + return selectors.Except(selectors.Where(s => s.Line == "User profile")).ToList(); + else + return selectors.Except(selectors.Where(s => s.Line == "Connection")).ToList(); + } } } diff --git a/MCTG/ConsoleApp/MenuManager.cs b/MCTG/ConsoleApp/MenuManager.cs index 7fb9a70..4d34b2e 100644 --- a/MCTG/ConsoleApp/MenuManager.cs +++ b/MCTG/ConsoleApp/MenuManager.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using ConsoleApp.Menu.Core; +using Model.Managers; namespace ConsoleApp { @@ -19,7 +20,7 @@ namespace ConsoleApp /// /// The manager that contains usefull data taken from the model. /// - public DataManager DataManager { get; private set; } + public MasterManager MasterMgr { get; private set; } /// /// Each menu called are push in this stack. Then, to return back, we pop this stack to retrive the previous menu. @@ -31,11 +32,11 @@ namespace ConsoleApp /// /// Constructor of the MenuManager class. This constructor allows you to give the first menu of the call stack, wich is usefull for testing. /// - /// The data manager needed by the menus inside. + /// The data manager needed by the menus inside. /// The starting menu, the first that will be push on the call stack. - public MenuManager(DataManager dataManager, IMenu firstMenu) + public MenuManager(MasterManager masterManager, IMenu firstMenu) { - DataManager = dataManager; + MasterMgr = masterManager; MenuCallStack = new Stack(); MenuCallStack.Push(firstMenu); @@ -44,8 +45,8 @@ namespace ConsoleApp /// /// Constructor of the MenuManager class. /// - /// The data manager needed by the menus inside. - public MenuManager(DataManager dataManager) : this(dataManager, new MainMenu(dataManager)) + /// The data manager needed by the menus inside. + public MenuManager(MasterManager masterManager) : this(masterManager, new MainMenu(masterManager)) { } #endregion diff --git a/MCTG/ConsoleApp/Program.cs b/MCTG/ConsoleApp/Program.cs index 5094043..1a4e3b9 100644 --- a/MCTG/ConsoleApp/Program.cs +++ b/MCTG/ConsoleApp/Program.cs @@ -4,43 +4,22 @@ using ConsoleApp.Menu; using DataPersistence; using System.Linq; using System.Text; - - +using Model.Managers; Console.WriteLine("Hello, World!\n\n"); -DataManager dataMgr = new DataManager(new Stubs()); -//DataManager dataMgr = new DataManager(new DataContractXML()); -//DataManager dataMgr = new DataManager(new DataContractJSON()); - -dataMgr.Serializer = new DataContractXML(); -//dataMgr.Serializer = new DataContractJSON(); - -// /!\ here is an absolute path I put for testing purpose. It will only work on my computer so don't forget to change it whene you test. -//dataMgr.Export(rc[2], "C:\\Users\\alex6\\Downloads\\recipe2.json"); -//dataMgr.Import("C:\\Users\\alex6\\Downloads\\recipe2.json"); +MasterManager masterMgr = new MasterManager(new Stubs()); +//MasterMgr masterMgr = new MasterMgr(new DataContractXML()); +//MasterMgr masterMgr = new MasterMgr(new DataContractJSON()); -PasswordManager passwordManager = new PasswordManager(); -//RecipeCollection rc = new RecipeCollection("All recipes", dataMgr.Data[nameof(Recipe)].Cast().ToArray()); -RecipeCollection rc = dataMgr.GetRecipes("All recipes"); -//RecipeCollection rc = new RecipeCollection("All recipes", dataMgr.GetFromData().ToArray()); +masterMgr.DataMgr.Serializer = new DataContractXML(); +//masterMgr.Serializer = new DataContractJSON(); -User user = dataMgr.GetUsers().Last(); - -//rc[0].AddReview(new Review(user, 1, "bonne recette !1")); -//rc[0].AddReview(new Review(user, 1, "bonne recette !2")); -//rc[0].AddReview(new Review(user, 4, "bonne recette !3")); -//rc[0].AddReview(new Review(user, 5, "bonne recette !4")); -//rc[0].AddReview(new Review(user, 3, "bonne recette !5")); -//rc[0].AddReview(new Review(user, 2, "bonne recette !6")); -//rc[0].AddReview(new Review(user, 2, "peut etre pas ducoup !")); -//rc[1].AddReview(new Review(user, 2, "Mais celle-ci oui !")); - -dataMgr.Save(); - -MenuManager menuMgr = new MenuManager(dataMgr); +masterMgr.DataMgr.Save(); +MenuManager menuMgr = new MenuManager(masterMgr); menuMgr.Loop(); + Console.ReadKey(); diff --git a/MCTG/Model/Managers/MasterManager.cs b/MCTG/Model/Managers/MasterManager.cs index 9f39d9f..edb4090 100644 --- a/MCTG/Model/Managers/MasterManager.cs +++ b/MCTG/Model/Managers/MasterManager.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; @@ -19,8 +20,6 @@ namespace Model.Managers public MasterManager(IDataManager dataManager) { DataMgr = new DataManager(dataManager); - Recipes = DataMgr.GetRecipes("all recipes"); - Users = DataMgr.GetUsers(); CurrentConnectedUser = null; }