using System.Diagnostics; using System.Security.Claims; using Blazorise; using Blazorise.DataGrid; using Gremlin_BlazorServer.Data.EntityClasses; using Gremlin_BlazorServer.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; namespace Gremlin_BlazorServer.Pages; public partial class CustomDescriptions { private IList? customDescriptions; private CustomDescription? selectedCustomDescription; [CascadingParameter] private Task? AuthenticationStateTask { get; set; } protected override async Task OnInitializedAsync() { if (AuthenticationStateTask != null) { ClaimsPrincipal user = (await AuthenticationStateTask).User; if (user.Identity is { IsAuthenticated: true }) customDescriptions = await GenericController.GetAllAsync(); await base.OnInitializedAsync(); } } private void OnSelectedCustomDescriptionChanged(CustomDescription newSelectedCustomDescription) => selectedCustomDescription = newSelectedCustomDescription; private async Task OnImportCustomDescriptions(FileChangedEventArgs fileChangedEventArgs) { try { foreach (IFileEntry? file in fileChangedEventArgs.Files) { using MemoryStream stream = new(); await file.WriteToStreamAsync(stream); _ = stream.Seek(0, SeekOrigin.Begin); using StreamReader reader = new(stream); string fileContent = await reader.ReadToEndAsync(); GenericImporter.ImportCsv(fileContent); } } catch (Exception exception) { Console.WriteLine(exception.Message); } StateHasChanged(); } private static Task OnRowInsertedAsync(SavedRowItem> customDescription) { CustomDescription newCustomDescription = ResolveCustomDescriptionAsync(customDescription.Item); int count = GenericController.Insert(newCustomDescription); Console.WriteLine($"Inserted {count} properties for new custom description {newCustomDescription.ProductNumber}#{newCustomDescription.OptionNumber}: {newCustomDescription.Heading}"); return Task.CompletedTask; } private static Task OnRowUpdatedAsync(SavedRowItem> customDescription) { CustomDescription newCustomDescription = ResolveCustomDescriptionAsync(customDescription.Item); int count = GenericController.Update(customDescription.Item); Console.WriteLine($"Updated {count} properties for custom description {newCustomDescription.ProductNumber}#{newCustomDescription.OptionNumber}: {newCustomDescription.Heading}"); return Task.CompletedTask; } private static async Task OnRowRemovedAsync(CustomDescription customDescription) { int count = await GenericController.RemoveAsync(customDescription); Console.WriteLine($"Removed {count} properties and custom description {customDescription.ProductNumber}#{customDescription.OptionNumber}: {customDescription.Heading}"); } private static CustomDescription ResolveCustomDescriptionAsync(CustomDescription newCustomDescription) { // IList products = await GenericController.GetAllAsync(p => p.ProductNumber == newCustomDescription.ProductNumber); // if (products is not null && products.Count > 0) // newCustomDescription.ProductId = products[0].ProductId; // else // Debug.WriteLine($"Found no product with ProductId {newCustomDescription.ProductNumber}"); newCustomDescription.DataModificationByUser = "Gremlin Blazor Server GUI"; newCustomDescription.DataVersionNumber++; return newCustomDescription; } }