From 1671bb6b8fba300891c6074ce6377cf6fc72d17b Mon Sep 17 00:00:00 2001 From: Alexandre Agostinho Date: Sat, 6 May 2023 18:44:56 +0200 Subject: [PATCH] :recycle: add interface and clean code --- MCTG/ConsoleApp/ConsoleMenu.cs | 12 +++++----- MCTG/ConsoleApp/IMenuDisplay.cs | 15 ++++++++++++ MCTG/ConsoleApp/SearcherRecipe.cs | 39 ++++++++++++++++++++++++------- 3 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 MCTG/ConsoleApp/IMenuDisplay.cs diff --git a/MCTG/ConsoleApp/ConsoleMenu.cs b/MCTG/ConsoleApp/ConsoleMenu.cs index 5b561ee..37279c4 100644 --- a/MCTG/ConsoleApp/ConsoleMenu.cs +++ b/MCTG/ConsoleApp/ConsoleMenu.cs @@ -19,9 +19,9 @@ namespace ConsoleApp public Recipe? ResearchOnRecipe() { StringBuilder sb = new StringBuilder(); - SearcherRecipe searcherRecipe = new SearcherRecipe(); - RecipeCollection result = AllRecipes.ResearchByName(sb.ToString()); - searcherRecipe.UpdateDisplay(sb.ToString(), result); + SearcherRecipe searcherRecipe = new SearcherRecipe(AllRecipes); + searcherRecipe.ComputeSearch(); + searcherRecipe.UpdateDisplay(); ConsoleKeyInfo cki; @@ -41,16 +41,16 @@ namespace ConsoleApp if (sb.Length > 0) { sb.Remove(sb.Length - 1, 1); - result = AllRecipes.ResearchByName(sb.ToString()); + searcherRecipe.ComputeSearch(sb.ToString()); } break; default: sb.Append(cki.KeyChar); - result = AllRecipes.ResearchByName(sb.ToString()); + searcherRecipe.ComputeSearch(sb.ToString()); break; } - searcherRecipe.UpdateDisplay(sb.ToString(), result); + searcherRecipe.UpdateDisplay(); } while (cki.Key != ConsoleKey.Enter); diff --git a/MCTG/ConsoleApp/IMenuDisplay.cs b/MCTG/ConsoleApp/IMenuDisplay.cs new file mode 100644 index 0000000..11622df --- /dev/null +++ b/MCTG/ConsoleApp/IMenuDisplay.cs @@ -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(); + } +} diff --git a/MCTG/ConsoleApp/SearcherRecipe.cs b/MCTG/ConsoleApp/SearcherRecipe.cs index 321c14c..771f47d 100644 --- a/MCTG/ConsoleApp/SearcherRecipe.cs +++ b/MCTG/ConsoleApp/SearcherRecipe.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; @@ -8,12 +9,12 @@ using Model; namespace ConsoleApp { - internal class SearcherRecipe + internal class SearcherRecipe : IMenuDisplay { public int CurrentLine { get => _currentLine; - set + private set { _currentLine = value; if (_currentLine > _maxLines) @@ -28,28 +29,48 @@ namespace ConsoleApp } } + public RecipeCollection SearchResult { 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 _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(); sb.AppendLine("---------------------------------------------------------"); - sb.AppendLine($" Research: {researchStr}"); + sb.AppendLine($" Research: {ResearchStr}"); sb.AppendLine("---------------------------------------------------------"); - for (int i = 0; i < researchResult.Count; i++) + for (int i = 0; i < SearchResult.Count; i++) { if (i == CurrentLine) { - CurrentSelected = researchResult[i]; + CurrentSelected = SearchResult[i]; sb.Append($">"); } - sb.AppendLine($" [ {researchResult[i].Id} ]: {researchResult[i].Title} "); + sb.AppendLine($" [ {SearchResult[i].Id} ]:\t{SearchResult[i].Title} "); } Console.Clear(); Console.WriteLine(sb);