@{ /****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // // Filename : Search.razor // Author(s) : Natalia Portillo // // --[ Description ] ---------------------------------------------------------- // // Consoles search // // --[ License ] -------------------------------------------------------------- // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // ---------------------------------------------------------------------------- // Copyright © 2003-2020 Natalia Portillo *******************************************************************************/ } @page "/consoles/all" @page "/consoles/year/{Year:int}" @page "/consoles/{StartingCharacter}" @inherits OwningComponentBase @inject IStringLocalizer L @if (_consoles is null) { @L["Loading..."] }

@L["Search results:"]

@if (_character.HasValue) { @string.Format(L["Videogame consoles starting with {0}"], _character)
} else if (Year.HasValue) { @string.Format(L["Videogame consoles introduced in {0}"], Year)
} @if (_consoles?.Count > 0) {

@string.Format(L["{0} videogame consoles found in the database."], _consoles.Count)
@foreach (var console in _consoles) { @console.CompanyName @console.Name
}

} else { @if (_character.HasValue) {

@L["There are no videogame consoles found in the database that start with this letter."]

} else if (Year.HasValue) {

@L["There are no videogame consoles found introduced this year."]

} }

@code { [Parameter] public int? Year { get; set; } [Parameter] public string StartingCharacter { get; set; } List _consoles; char? _character; protected override async Task OnInitializedAsync() { _character = null; if (!string.IsNullOrWhiteSpace(StartingCharacter) && StartingCharacter.Length == 1) { _character = StartingCharacter[0]; // ToUpper() if (_character >= 'a' && _character <= 'z') _character -= (char)32; // Check if not letter or number if (_character < '0' || (_character > '9' && _character < 'A') || _character > 'Z') _character = null; } if (_character.HasValue) _consoles = await Service.GetConsolesByLetterAsync(_character.Value); if (Year.HasValue && _consoles is null) _consoles = await Service.GetConsolesByYearAsync(Year.Value); _consoles ??= await Service.GetConsolesAsync(); } }