@using SteUp.Shared.Core.Dto
@using SteUp.Shared.Core.Entities
@using SteUp.Shared.Core.Helpers
@*
Card di elenco (STILE_UI §6.5). Il titolo e' l'entita' — il punto vendita —
non il tipo di record. I conteggi stanno sempre a vista: il rilevatore deve
sapere quanto ha davanti senza contare.
*@
@Ispezione.CodMdep
@Descrizione
@if (!string.IsNullOrWhiteSpace(Indirizzo))
{
@Indirizzo
}
@if (DaInviare > 0)
{
}
@if (Bozze > 0)
{
}
@code
{
[Parameter] public Ispezione Ispezione { get; set; } = new();
[Parameter] public EventCallback OnClick { get; set; }
private bool Tappable => OnClick.HasDelegate;
private PuntoVenditaDto? _puntoVendita;
// Il punto vendita puo' mancare dalla cache di riferimento (primo avvio
// offline): si degrada al codice invece di far fallire la card.
private string Descrizione => _puntoVendita?.Descrizione.IsNullOrEmpty() == false
? _puntoVendita.Descrizione!
: Ispezione.CodMdep;
private string? Indirizzo => _puntoVendita is null
? null
: string.Join(" · ", new[] { _puntoVendita.Indirizzo, _puntoVendita.Citta }
.Where(x => !x.IsNullOrEmpty()));
private int DaInviare => Ispezione.Schede.CountDaInviare();
private int Bozze => Ispezione.Schede.CountBozze();
private string SchedeLabel => Ispezione.Schede.Count == 1
? "1 scheda"
: $"{Ispezione.Schede.Count} schede";
protected override void OnParametersSet()
{
_puntoVendita = SteupDataService.PuntiVenditaList.Find(x =>
x.CodMdep != null && x.CodMdep.EqualsIgnoreCase(Ispezione.CodMdep)
);
}
private Task OnCardClick() =>
Tappable ? OnClick.InvokeAsync(Ispezione) : Task.CompletedTask;
}