@{ /****************************************************************************** // MARECHAI: Master repository of computing history artifacts information // ---------------------------------------------------------------------------- // // Filename : Index.razor // Author(s) : Natalia Portillo // // --[ Description ] ---------------------------------------------------------- // // Lists all companies or companies by country // // --[ 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 "/companies" @page "/companies/country/{CountryId:int}" @page "/companies/{StartingCharacter}" @inherits OwningComponentBase @inject IStringLocalizer L @inject IWebHostEnvironment Host @if (_companies is null) {

@L["Loading..."]

return; }

@if (CountryId.HasValue) { @string.Format(L["Companies founded in {0}."], L[_countryName]) if (File.Exists(System.IO.Path.Combine(Host.WebRootPath, "assets/flags/countries", CountryId + ".svg"))) { }
} @if (_character.HasValue) { @string.Format(L["Companies which name starts with {0}."], _character)
} @if (_companies.Any()) {

@string.Format(L["{0} companies found in the database."], _companies.Count())
@foreach (var company in _companies) { @if (company.LastLogo != null && File.Exists(Path.Combine(Host.WebRootPath, "assets/logos", company.LastLogo + ".svg"))) { } @company.Name
}

} else {

@L["There are no companies in the database."]

}

@code { [Parameter] public int? CountryId { get; set; } [Parameter] public string StartingCharacter { get; set; } List _companies; string _countryName; 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) _companies = await Service.GetCompaniesByLetterAsync(_character.Value); if (CountryId.HasValue && _companies is null) { _countryName = await Service.GetCountryNameAsync(CountryId.Value); if (_countryName != null) { _companies = await Service.GetCompaniesByCountryAsync(CountryId.Value); } else CountryId = null; } _companies ??= await Service.GetCompaniesAsync(); } }