You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SAE-2.01/MCTG/ConsoleApp/SearcherRecipe.cs

90 lines
2.4 KiB

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