♻️ add interface and clean code

pull/35/head
Alexandre AGOSTINHO 2 years ago
parent 473d2c7fd2
commit 1671bb6b8f

@ -19,9 +19,9 @@ namespace ConsoleApp
public Recipe? ResearchOnRecipe() public Recipe? ResearchOnRecipe()
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
SearcherRecipe searcherRecipe = new SearcherRecipe(); SearcherRecipe searcherRecipe = new SearcherRecipe(AllRecipes);
RecipeCollection result = AllRecipes.ResearchByName(sb.ToString()); searcherRecipe.ComputeSearch();
searcherRecipe.UpdateDisplay(sb.ToString(), result); searcherRecipe.UpdateDisplay();
ConsoleKeyInfo cki; ConsoleKeyInfo cki;
@ -41,16 +41,16 @@ namespace ConsoleApp
if (sb.Length > 0) if (sb.Length > 0)
{ {
sb.Remove(sb.Length - 1, 1); sb.Remove(sb.Length - 1, 1);
result = AllRecipes.ResearchByName(sb.ToString()); searcherRecipe.ComputeSearch(sb.ToString());
} }
break; break;
default: default:
sb.Append(cki.KeyChar); sb.Append(cki.KeyChar);
result = AllRecipes.ResearchByName(sb.ToString()); searcherRecipe.ComputeSearch(sb.ToString());
break; break;
} }
searcherRecipe.UpdateDisplay(sb.ToString(), result); searcherRecipe.UpdateDisplay();
} while (cki.Key != ConsoleKey.Enter); } while (cki.Key != ConsoleKey.Enter);

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal interface IMenuDisplay
{
void UpdateDisplay();
int SelectNextLine();
int SelectPrevioustLine();
}
}

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -8,12 +9,12 @@ using Model;
namespace ConsoleApp namespace ConsoleApp
{ {
internal class SearcherRecipe internal class SearcherRecipe : IMenuDisplay
{ {
public int CurrentLine public int CurrentLine
{ {
get => _currentLine; get => _currentLine;
set private set
{ {
_currentLine = value; _currentLine = value;
if (_currentLine > _maxLines) if (_currentLine > _maxLines)
@ -28,28 +29,48 @@ namespace ConsoleApp
} }
} }
public RecipeCollection SearchResult { get; private set; }
public Recipe? CurrentSelected { get; private set; } public Recipe? CurrentSelected { get; private set; }
public string ResearchStr { get; set; }
private RecipeCollection _allRecipes;
private string _researchStr = "";
private int _currentLine = 0; private int _currentLine = 0;
private int _maxLines = 0; private int _maxLines = 0;
public void UpdateDisplay(string researchStr, RecipeCollection researchResult) public SearcherRecipe(RecipeCollection recipes)
{
_allRecipes = recipes;
SearchResult = recipes;
ResearchStr = "";
}
public bool ComputeSearch(string researchStr = "")
{ {
_maxLines = researchResult.Count - 1; ResearchStr = researchStr;
SearchResult = _allRecipes.ResearchByName(ResearchStr.ToLower());
_maxLines = SearchResult.Count - 1;
return SearchResult.Count > 0;
}
public void UpdateDisplay()
{
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.AppendLine("---------------------------------------------------------"); sb.AppendLine("---------------------------------------------------------");
sb.AppendLine($" Research: {researchStr}"); sb.AppendLine($" Research: {ResearchStr}");
sb.AppendLine("---------------------------------------------------------"); sb.AppendLine("---------------------------------------------------------");
for (int i = 0; i < researchResult.Count; i++) for (int i = 0; i < SearchResult.Count; i++)
{ {
if (i == CurrentLine) if (i == CurrentLine)
{ {
CurrentSelected = researchResult[i]; CurrentSelected = SearchResult[i];
sb.Append($">"); sb.Append($">");
} }
sb.AppendLine($" [ {researchResult[i].Id} ]: {researchResult[i].Title} "); sb.AppendLine($" [ {SearchResult[i].Id} ]:\t{SearchResult[i].Title} ");
} }
Console.Clear(); Console.Clear();
Console.WriteLine(sb); Console.WriteLine(sb);

Loading…
Cancel
Save