125 lines
4.2 KiB
Plaintext
125 lines
4.2 KiB
Plaintext
@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
|
|
|
|
<HeaderLayout Title="Ispezione" BackTo="Indietro" Back="true"/>
|
|
|
|
<div class="container content pb-safe-area ispezione">
|
|
<InspectionCard Ispezione="SteupDataService.InspectionPageState.Ispezione"/>
|
|
|
|
@if (!SchedeGrouped.IsNullOrEmpty())
|
|
{
|
|
<MudExpansionPanels MultiExpansion="true">
|
|
@foreach (var group in SchedeGrouped)
|
|
{
|
|
<MudExpansionPanel Class="expansion-panel" Expanded="true" Text="@group.Key.Descrizione">
|
|
<TitleContent>
|
|
<div class="header-scheda-group">
|
|
<div class="title">
|
|
<MudText Typo="Typo.h6"><b>@group.Key.Descrizione</b></MudText>
|
|
<MudChip T="string" Size="Size.Small" Color="Color.Default">
|
|
@($"{group.Value.Count} sched{(group.Value.Count == 1 ? "a" : "e")}")
|
|
</MudChip>
|
|
</div>
|
|
<div class="action-scheda-group">
|
|
<MudIconButton Variant="Variant.Filled" Icon="@Icons.Material.Rounded.Add"
|
|
Color="Color.Warning" Size="Size.Medium"
|
|
OnClick="@(() => CreateNewScheda(group.Key))"/>
|
|
</div>
|
|
</div>
|
|
</TitleContent>
|
|
<ChildContent>
|
|
@foreach (var scheda in group.Value)
|
|
{
|
|
<SchedaCard Scheda="scheda" OnSchedaDeleted="OnSchedaDeleted"
|
|
OnSchedaModified="OnSchedaModified"
|
|
CodMdep="@SteupDataService.InspectionPageState.Ispezione.CodMdep"
|
|
Data="@SteupDataService.InspectionPageState.Ispezione.Data"/>
|
|
}
|
|
</ChildContent>
|
|
</MudExpansionPanel>
|
|
}
|
|
</MudExpansionPanels>
|
|
}
|
|
</div>
|
|
|
|
@code {
|
|
private List<Scheda> SchedeList { get; set; } = [];
|
|
private Dictionary<JtbFasiDto, List<Scheda>> 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,
|
|
true,
|
|
new Scheda { Reparto = jtbFasi }
|
|
);
|
|
|
|
if (modal is {Canceled: false}) LoadSchede();
|
|
}
|
|
|
|
void IDisposable.Dispose()
|
|
{
|
|
NewScheda.OnNewScheda -= LoadSchede;
|
|
}
|
|
|
|
} |