@using SteUp.Shared.Components.Layout
@using SteUp.Shared.Components.SingleElements.Card
@using SteUp.Shared.Core.Dto
@using SteUp.Shared.Core.Enum
@using SteUp.Shared.Core.Interface.LocalDb
@inject IIspezioniService IspezioniService
@*
Scelta del punto vendita: schermata intera, non un riquadro. L'elenco e'
lungo e si scorre in piedi: serve tutto lo spazio e un campo di ricerca
grande quanto il pollice.
*@
@if (!FilterText.IsNullOrEmpty())
{
}
@if (FilteredList is null)
{
@for (var i = 0; i < 4; i++)
{
}
}
else if (FilteredList.Count == 0)
{
Nessun punto vendita
Nessun risultato per "@FilterText".
Azzera la ricerca
}
else
{
}
@code {
[CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = null!;
private List? FilteredList { get; set; }
private string? FilterText { get; set; }
private bool _busy;
private string? Conteggio => FilteredList is null
? null
: FilteredList.Count == 1 ? "1 punto vendita" : $"{FilteredList.Count} punti vendita";
// I codici su cui il rilevatore ha gia' un'ispezione aperta oggi. Si legge
// una volta sola: toccare una di quelle righe riapre l'ispezione esistente
// invece di crearne una nuova, e la riga deve poterlo dire.
private HashSet _aperteOggi = [];
private void Cancel() => MudDialog.Cancel();
private bool HaIspezioneOggi(PuntoVenditaDto pv) =>
pv.CodMdep is not null && _aperteOggi.Contains(pv.CodMdep);
protected override async Task OnInitializedAsync()
{
ApplyFilters();
var oggi = DateTime.Today;
var ispezioni = await IspezioniService.GetAllIspezioni(UserSession.User.Username);
_aperteOggi = ispezioni
.Where(x => x.Data.Date == oggi && x.Stato != StatusEnum.Completata && x.CodMdep is not null)
.Select(x => x.CodMdep!)
.ToHashSet(StringComparer.OrdinalIgnoreCase);
StateHasChanged();
}
private void OnFilterInput(ChangeEventArgs e)
{
FilterText = e.Value?.ToString();
ApplyFilters();
}
private void ClearFilter()
{
FilterText = null;
ApplyFilters();
}
private void ApplyFilters()
{
var source = SteupDataService.PuntiVenditaList;
FilteredList = (FilterText.IsNullOrEmpty()
? source
: source.FindAll(x =>
(x.Indirizzo != null && x.Indirizzo.ContainsIgnoreCase(FilterText!)) ||
(x.Descrizione != null && x.Descrizione.ContainsIgnoreCase(FilterText!)) ||
(x.CodMdep != null && x.CodMdep.ContainsIgnoreCase(FilterText!)) ||
(x.Citta != null && x.Citta.ContainsIgnoreCase(FilterText!)) ||
(x.Cap != null && x.Cap.ContainsIgnoreCase(FilterText!)) ||
(x.Provincia != null && x.Provincia.ContainsIgnoreCase(FilterText!))))
.OrderBy(x => x.CodMdep)
.ToList();
StateHasChanged();
}
}