new main menu working

pull/48/head
Alexandre AGOSTINHO 2 years ago
parent 34de5e0b85
commit 04192a2ef2

@ -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
/// </summary>
internal class MainMenu : Menu<IMenu>
{
public MainMenu(DataManager dataMgr)
: base("Main menu",
new Selector<IMenu>(
new SearcherRecipe(new RecipeCollection("search", dataMgr.Data[nameof(Recipe)].Cast<Recipe>().ToArray())), "Recipe search"),
new Selector<IMenu>(
new ConnectionMenu(), "Connection"))
{ }
public MainMenu(MasterManager masterManager)
: base("Main menu")
{
_allSelectors.Add(new Selector<IMenu>(
new SearcherRecipe(masterManager.DataMgr.GetRecipes("search")), "Recipe search"));
_allSelectors.Add(MasterManager.CurrentConnectedUser is null ?
new Selector<IMenu>(new ConnectionMenu(), "Connection")
: new Selector<IMenu>(new PlainText("User profile"), "User profile"));
}
protected override List<Selector<IMenu>> SearchInSelection()
{
List<Selector<IMenu>> 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();
}
}
}

@ -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
/// <summary>
/// The manager that contains usefull data taken from the model.
/// </summary>
public DataManager DataManager { get; private set; }
public MasterManager MasterMgr { get; private set; }
/// <summary>
/// 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
/// <summary>
/// Constructor of the MenuManager class. This constructor allows you to give the first menu of the call stack, wich is usefull for testing.
/// </summary>
/// <param name="dataManager">The data manager needed by the menus inside.</param>
/// <param name="masterManager">The data manager needed by the menus inside.</param>
/// <param name="firstMenu">The starting menu, the first that will be push on the call stack.</param>
public MenuManager(DataManager dataManager, IMenu firstMenu)
public MenuManager(MasterManager masterManager, IMenu firstMenu)
{
DataManager = dataManager;
MasterMgr = masterManager;
MenuCallStack = new Stack<IMenu>();
MenuCallStack.Push(firstMenu);
@ -44,8 +45,8 @@ namespace ConsoleApp
/// <summary>
/// Constructor of the MenuManager class.
/// </summary>
/// <param name="dataManager">The data manager needed by the menus inside.</param>
public MenuManager(DataManager dataManager) : this(dataManager, new MainMenu(dataManager))
/// <param name="masterManager">The data manager needed by the menus inside.</param>
public MenuManager(MasterManager masterManager) : this(masterManager, new MainMenu(masterManager))
{ }
#endregion

@ -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<Recipe>("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<Recipe>().ToArray());
RecipeCollection rc = dataMgr.GetRecipes("All recipes");
//RecipeCollection rc = new RecipeCollection("All recipes", dataMgr.GetFromData<Recipe>().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();

@ -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;
}

Loading…
Cancel
Save