@page "/attivita" @rendermode @(InteractiveServer) @inject MockAttivitaService MockService
@if (!_attivita.Any()) { } else {
@foreach (var item in AttivitaOrdinata) { }
}
@code { List _attivita = []; AttivitaItem? _attivitaSelezionata; bool _chiusuraVisible; bool _allegatiVisible; AttivitaItem? _dragSource; IEnumerable AttivitaOrdinata => _attivita.OrderBy(a => a.Priorita switch { PrioritaAttivita.Emergenza => 0, PrioritaAttivita.Alta => 1, _ => 2 }) .ThenBy(a => a.Ordine); protected override void OnInitialized() { _attivita = MockService.GetAttivitaOggi(); } void ApriChiusura(AttivitaItem item) { _attivitaSelezionata = item; _chiusuraVisible = true; } void ApriAllegati(AttivitaItem item) { _attivitaSelezionata = item; _allegatiVisible = true; } void OnConfermaChiusura((AttivitaItem item, StatoAttivita stato) args) { var idx = _attivita.IndexOf(args.item); if (idx >= 0) _attivita[idx] = args.item with { Stato = args.stato }; _chiusuraVisible = false; } void OnDragStart(AttivitaItem item) { if (!item.IsLocked) _dragSource = item; } void OnDrop(AttivitaItem target) { if (_dragSource is null || _dragSource == target || target.IsLocked) return; var srcIdx = _attivita.IndexOf(_dragSource); var tgtIdx = _attivita.IndexOf(target); if (srcIdx < 0 || tgtIdx < 0) return; _attivita.RemoveAt(srcIdx); _attivita.Insert(tgtIdx, _dragSource); for (int i = 0; i < _attivita.Count; i++) _attivita[i] = _attivita[i] with { Ordine = i }; _dragSource = null; } void FineViaggio() { // TODO: generare e inviare PDF/CSV via email } }