diff --git a/Marechai/Areas/Admin/Views/CompanyLogos/Edit.cshtml b/Marechai/Areas/Admin/Views/CompanyLogos/Edit.cshtml deleted file mode 100644 index a44a4ab9..00000000 --- a/Marechai/Areas/Admin/Views/CompanyLogos/Edit.cshtml +++ /dev/null @@ -1,43 +0,0 @@ -@model Marechai.Database.Models.CompanyLogo - -@{ - ViewData["Title"] = "Edit"; -} -

Edit

-

Company logo

-
-
-
-
-
-
- -
- - -
-
- - - - -
-
- - - - -
- -
-
-
\ No newline at end of file diff --git a/Marechai/Marechai.csproj b/Marechai/Marechai.csproj index 6e8b7810..92ab17b2 100644 --- a/Marechai/Marechai.csproj +++ b/Marechai/Marechai.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 3.0.99.1269 + 3.0.99.1275 Canary Islands Computer Museum Copyright © 2003-2020 Natalia Portillo Canary Islands Computer Museum Website diff --git a/Marechai/Pages/Admin/Details/Company.razor b/Marechai/Pages/Admin/Details/Company.razor index 2d9f7c4a..79db29d1 100644 --- a/Marechai/Pages/Admin/Details/Company.razor +++ b/Marechai/Pages/Admin/Details/Company.razor @@ -337,9 +337,10 @@ @foreach (var logo in _logos) { + bool logoFound = File.Exists(Path.Combine(Host.WebRootPath, "assets/logos", logo.Guid + ".svg")); - @if (File.Exists(Path.Combine(Host.WebRootPath, "assets/logos", logo.Guid + ".svg"))) + @if (logoFound) { @@ -364,8 +365,11 @@ } - @L["Change year"] - + @if (logoFound) + { + + } + } @@ -373,19 +377,62 @@ } - + @L["Delete logo"] - + @string.Format(@L["Are you sure you want to delete the company logo introduced in {0}?"], _currentLogo?.Year) - + + + + + + + @L["Change logo year"] + + + + @if (_currentLogo != null) + { +
+ + + + + +
+ + @L["Year logo came in use"] + @L["Unknown (logo year)"] + @if (!_unknownLogoYear) + { + + + + @L["Please enter a valid year."] + + + + } + + } +
+ + + @if (_currentLogo != null) + { + + } + +
+
diff --git a/Marechai/Pages/Admin/Details/Company.razor.cs b/Marechai/Pages/Admin/Details/Company.razor.cs index 43baa7d8..0ebd963d 100644 --- a/Marechai/Pages/Admin/Details/Company.razor.cs +++ b/Marechai/Pages/Admin/Details/Company.razor.cs @@ -17,9 +17,11 @@ namespace Marechai.Pages.Admin.Details List _countries; bool _creating; CompanyLogo _currentLogo; + int? _currentLogoYear; bool _deleteInProgress; bool _editing; Modal _frmDelete; + Modal _frmLogoYear; bool _loaded; List _logos; CompanyViewModel _model; @@ -28,12 +30,15 @@ namespace Marechai.Pages.Admin.Details bool _unknownCountry; bool _unknownFacebook; bool _unknownFounded; + bool _unknownLogoYear; bool _unknownPostalCode; bool _unknownProvince; bool _unknownSold; bool _unknownSoldTo; bool _unknownTwitter; bool _unknownWebsite; + + bool _yearChangeInProgress; [Parameter] public int Id { get; set; } @@ -237,13 +242,13 @@ namespace Marechai.Pages.Admin.Details void ValidateFacebook(ValidatorEventArgs e) => Validators.ValidateString(e, L["Facebook username must be smaller than 256 characters."], 256); - void ShowModal(int itemId) + void ShowDeleteModal(int itemId) { _currentLogo = _logos.FirstOrDefault(n => n.Id == itemId); _frmDelete.Show(); } - void HideModal() => _frmDelete.Hide(); + void HideDeleteModal() => _frmDelete.Hide(); async void ConfirmDelete() { @@ -268,6 +273,55 @@ namespace Marechai.Pages.Admin.Details StateHasChanged(); } - void ModalClosing(ModalClosingEventArgs obj) => _currentLogo = null; + void DeleteModalClosing(ModalClosingEventArgs e) => _currentLogo = null; + + void ShowLogoYearModal(int itemId) + { + _currentLogo = _logos.FirstOrDefault(n => n.Id == itemId); + _currentLogoYear = _currentLogo?.Year; + _unknownLogoYear = _currentLogoYear is null; + _frmLogoYear.Show(); + } + + void HideLogoYearModal() => _frmLogoYear.Hide(); + + async void ConfirmLogoYear() + { + if(_currentLogo is null) + return; + + _yearChangeInProgress = true; + + // Yield thread to let UI to update + await Task.Yield(); + + await CompanyLogosService.ChangeYearAsync(_currentLogo.Id, _unknownLogoYear ? null : _currentLogoYear); + _logos = await CompanyLogosService.GetByCompany(Id); + + _yearChangeInProgress = false; + _frmLogoYear.Hide(); + + // Yield thread to let UI to update + await Task.Yield(); + + // Tell we finished loading + StateHasChanged(); + } + + void LogoYearModalClosing(ModalClosingEventArgs e) + { + _currentLogo = null; + _currentLogoYear = null; + } + + void ValidateLogoYear(ValidatorEventArgs e) + { + if(!(e.Value is int item) || + item <= 1000 || + item > DateTime.UtcNow.Year) + e.Status = ValidationStatus.Error; + else + e.Status = ValidationStatus.Success; + } } } \ No newline at end of file diff --git a/Marechai/Resources/Services/CompaniesService.en.resx b/Marechai/Resources/Services/CompaniesService.en.resx index f7521ea6..20a4f25a 100644 --- a/Marechai/Resources/Services/CompaniesService.en.resx +++ b/Marechai/Resources/Services/CompaniesService.en.resx @@ -162,4 +162,8 @@ Unknown Unknown, referring to another company name + + Unknown + Unknown, referring to a company logo year + \ No newline at end of file diff --git a/Marechai/Resources/Services/CompaniesService.es.resx b/Marechai/Resources/Services/CompaniesService.es.resx index 0a5bff8f..f29e8cfb 100644 --- a/Marechai/Resources/Services/CompaniesService.es.resx +++ b/Marechai/Resources/Services/CompaniesService.es.resx @@ -402,4 +402,48 @@ Por favor introduce una fecha de venta, fusión, bancarrota o renombre válida. Please enter a valid sold/merge/bankruptcy date. + + Desconocido + Unknown, referring to a company logo year + + + Subir nuevo logo + Upload new logo + + + Logos + Logos + + + Logo + Logo + + + Año el logo empezó a usarse + Year logo came in use + + + No se pudo encontrar el archivo del logo + Cannot find logo file + + + Cambiar año + Change year + + + Borrar logo + Delete logo + + + ¿Estás seguro de que quieres borrar el logo que la compañía empezó a utilizar en {0}? + Are you sure you want to delete the company logo introduced in {0}? + + + Cambiar año del logo + Change logo year + + + Por favor introduce un año válido. + Please enter a valid year. + \ No newline at end of file diff --git a/Marechai/Services/CompanyLogosService.cs b/Marechai/Services/CompanyLogosService.cs index 43e4ceaa..0969b6ed 100644 --- a/Marechai/Services/CompanyLogosService.cs +++ b/Marechai/Services/CompanyLogosService.cs @@ -73,5 +73,16 @@ namespace Marechai.Services if(File.Exists(Path.Combine(_webRootPath, "assets/logos/thumbs/png/3x", logo.Guid + ".png"))) File.Delete(Path.Combine(_webRootPath, "assets/logos/thumbs/png/3x", logo.Guid + ".png")); } + + public async Task ChangeYearAsync(int id, int? year) + { + CompanyLogo logo = await _context.CompanyLogos.Where(l => l.Id == id).FirstOrDefaultAsync(); + + if(logo is null) + return; + + logo.Year = year; + await _context.SaveChangesAsync(); + } } } \ No newline at end of file