♻️ refactor classes

pull/35/head
Alexandre AGOSTINHO 2 years ago
parent e1c1b428c2
commit 5e9a7f6860

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>

@ -0,0 +1,60 @@
using ConsoleApp;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
public class ConsoleMenu : Manager
{
public ConsoleMenu(Manager manager)
{
AllRecipes = manager.AllRecipes;
}
public Recipe? ResearchOnRecipe()
{
StringBuilder sb = new StringBuilder();
SearcherRecipe searcherRecipe = new SearcherRecipe();
RecipeCollection result = AllRecipes.ResearchByName(sb.ToString());
searcherRecipe.UpdateDisplay(sb.ToString(), result);
ConsoleKeyInfo cki;
do
{
cki = Console.ReadKey(true);
switch (cki.Key)
{
case ConsoleKey.UpArrow:
searcherRecipe.SelectPrevioustLine();
break;
case ConsoleKey.DownArrow:
searcherRecipe.SelectNextLine();
break;
case ConsoleKey.Backspace:
if (sb.Length > 0)
{
sb.Remove(sb.Length - 1, 1);
result = AllRecipes.ResearchByName(sb.ToString());
}
break;
default:
sb.Append(cki.KeyChar);
result = AllRecipes.ResearchByName(sb.ToString());
break;
}
searcherRecipe.UpdateDisplay(sb.ToString(), result);
} while (cki.Key != ConsoleKey.Enter);
return searcherRecipe.CurrentSelected;
}
}
}

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
public interface IResearchMenu<T>
{
void updateDisplay(string researchStr, T[] researchResult);
}
}

@ -2,6 +2,7 @@
using ConsoleApp;
using Model;
using System.Text;
Console.WriteLine("Hello, World!\n\n");
@ -18,40 +19,9 @@ RecipeCollection? allRecipe = recipeCollections.Find(x => x.Description.Equals("
if (allRecipe == null)
throw new ArgumentException("Load AllRecipe in stub: can't find 'All'.");
StringBuilder sb = new StringBuilder();
ResearchMenuRecipe researchMenu = new ResearchMenuRecipe();
Recipe[] result = allRecipe.ResearchByName(sb.ToString());
researchMenu.UpdateDisplay(sb.ToString(), result);
ConsoleKeyInfo cki;
do
{
cki = Console.ReadKey(true);
switch (cki.Key)
{
case ConsoleKey.UpArrow:
researchMenu.SelectPrevioustLine();
break;
case ConsoleKey.DownArrow:
researchMenu.SelectNextLine();
break;
case ConsoleKey.Backspace:
if (sb.Length > 0)
{
sb.Remove(sb.Length - 1, 1);
result = allRecipe.ResearchByName(sb.ToString());
}
break;
default:
sb.Append(cki.KeyChar);
result = allRecipe.ResearchByName(sb.ToString());
break;
}
researchMenu.UpdateDisplay(sb.ToString(), result);
} while (cki.Key != ConsoleKey.Enter);
Console.WriteLine(researchMenu.ReturnSelected());
Manager manager = new Manager(allRecipe);
ConsoleMenu menu = new ConsoleMenu(manager);
Recipe? recipeRetSearchMenu = menu.ResearchOnRecipe();
Console.WriteLine(recipeRetSearchMenu);

@ -8,43 +8,45 @@ using Model;
namespace ConsoleApp
{
internal class ResearchMenuRecipe
internal class SearcherRecipe
{
internal string displayText = "";
public int CurrentLine
{
get => currentLine;
get => _currentLine;
set
{
currentLine = value;
if (currentLine > maxLines)
_currentLine = value;
if (_currentLine > _maxLines)
{
currentLine = maxLines;
_currentLine = _maxLines;
}
if (currentLine < 0)
if (_currentLine < 0)
{
currentLine = 0;
_currentLine = 0;
}
return;
}
}
private int currentLine = 0;
private int maxLines = 0;
private Recipe? currentSelected;
public void UpdateDisplay(string researchStr, Recipe[] researchResult)
public Recipe? CurrentSelected { get; private set; }
private int _currentLine = 0;
private int _maxLines = 0;
public void UpdateDisplay(string researchStr, RecipeCollection researchResult)
{
maxLines = researchResult.Length - 1;
_maxLines = researchResult.Count - 1;
StringBuilder sb = new StringBuilder();
sb.AppendLine("---------------------------------------------------------");
sb.AppendLine($" Research: {researchStr}");
sb.AppendLine("---------------------------------------------------------");
for (int i = 0; i < researchResult.Length; i++)
for (int i = 0; i < researchResult.Count; i++)
{
if (i == CurrentLine)
{
currentSelected = researchResult[i];
CurrentSelected = researchResult[i];
sb.Append($">");
}
sb.AppendLine($" [ {researchResult[i].Id} ]: {researchResult[i].Title} ");
@ -62,10 +64,5 @@ namespace ConsoleApp
{
return --CurrentLine;
}
public Recipe? ReturnSelected()
{
return currentSelected;
}
}
}

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public interface IReasearch<T>
{
public T ResearchByName(string str);
}
}

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public partial class Manager
{
public RecipeCollection AllRecipes { get; protected set; }
public Manager()
{
AllRecipes = new RecipeCollection(description: "All Recipes");
}
public Manager(RecipeCollection allRecipes)
{
AllRecipes = new RecipeCollection(
description: "All Recipes",
recipes: allRecipes.ToArray());
}
}
}

@ -68,6 +68,13 @@ namespace Model
return recipe;
}
public RecipeCollection ResearchByName(string str)
{
return new RecipeCollection(
description: $"Results of the research: {str}",
recipes: _recipes.FindAll(x => x.Title.ToLower().Contains(str.ToLower())).ToArray());
}
#region IList Methods
public int IndexOf(Recipe item)
{
@ -149,11 +156,6 @@ namespace Model
}
return sb.ToString();
}
public Recipe[] ResearchByName(string str)
{
return _recipes.FindAll(x => x.Title.ToLower().Contains(str.ToLower())).ToArray();
}
#endregion
}
}

Loading…
Cancel
Save