@page "/ispezione" @using SteUp.Shared.Components.Layout @using SteUp.Shared.Components.SingleElements.Card @using SteUp.Shared.Core.Dto @using SteUp.Shared.Core.Entities @using SteUp.Shared.Core.Interface.LocalDb @using SteUp.Shared.Core.Messages.Scheda @inject NewSchedaService NewScheda @inject IIspezioniService IspezioniService @inject IDialogService Dialog @implements IDisposable
@if (!SchedeGrouped.IsNullOrEmpty()) { @foreach (var group in SchedeGrouped) {
@group.Key.Descrizione @($"{group.Value.Count} sched{(group.Value.Count == 1 ? "a" : "e")}")
@foreach (var scheda in group.Value) { }
}
}
@code { private List SchedeList { get; set; } = []; private Dictionary> SchedeGrouped { get; set; } = []; protected override void OnInitialized() { NewScheda.OnNewScheda += LoadSchede; LoadSchede(); } private void LoadSchede() { var ispezione = SteupDataService.InspectionPageState.Ispezione; InvokeAsync(async () => { SchedeList = await IspezioniService.GetAllSchedeOfIspezioneAsync( ispezione.CodMdep, ispezione.Data, ispezione.Rilevatore ); GroupSchede(); StateHasChanged(); }); } private void GroupSchede() { SchedeGrouped = SchedeList .Where(s => s.Reparto != null) .GroupBy(s => s.CodJfas) .ToDictionary( g => g.First().Reparto!, g => g.ToList() ); } private void OnSchedaModified(Scheda obj) { var index = SchedeList.FindIndex(x => x.Id.Equals(obj.Id)); if (index > 0) SchedeList[index] = obj; GroupSchede(); StateHasChanged(); } private void OnSchedaDeleted(Scheda obj) { SchedeList.Remove(obj); GroupSchede(); StateHasChanged(); } private async Task CreateNewScheda(JtbFasiDto jtbFasi) { var modal = await ModalHelper.OpenFormScheda( Dialog, SteupDataService.InspectionPageState.Ispezione.CodMdep, SteupDataService.InspectionPageState.Ispezione.Data, new Scheda { Reparto = jtbFasi }, true ); if (modal is {Canceled: false}) LoadSchede(); } void IDisposable.Dispose() { NewScheda.OnNewScheda -= LoadSchede; } }