using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using Model; namespace ConsoleApp { internal class SearcherRecipe : IMenuDisplay { public int CurrentLine { get => _currentLine; private set { _currentLine = value; if (_currentLine > _maxLines) { _currentLine = _maxLines; } if (_currentLine < 0) { _currentLine = 0; } return; } } 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 SearcherRecipe(RecipeCollection recipes) { _allRecipes = recipes; SearchResult = recipes; ResearchStr = ""; } public bool ComputeSearch(string researchStr = "") { 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("---------------------------------------------------------"); for (int i = 0; i < SearchResult.Count; i++) { if (i == CurrentLine) { CurrentSelected = SearchResult[i]; sb.Append($">"); } sb.AppendLine($" [ {SearchResult[i].Id} ]:\t{SearchResult[i].Title} "); } Console.Clear(); Console.WriteLine(sb); } public int SelectNextLine() { return ++CurrentLine; } public int SelectPrevioustLine() { return --CurrentLine; } } }