From 7b5973330f4840fb97bf09486f49264df9ced632 Mon Sep 17 00:00:00 2001 From: Mattia Rizzioli Date: Tue, 2 Dec 2025 09:39:44 +0100 Subject: [PATCH] fix griglia clienti --- .../Components/Layout/MainLayout.razor | 8 + .../Components/Pages/Management/Clienti.razor | 187 ++++++++++++++++++ StandManager/Components/Pages/_Imports.razor | 0 3 files changed, 195 insertions(+) create mode 100644 StandManager/Components/Pages/Management/Clienti.razor create mode 100644 StandManager/Components/Pages/_Imports.razor diff --git a/StandManager/Components/Layout/MainLayout.razor b/StandManager/Components/Layout/MainLayout.razor index 39d7ba8..ab795c3 100644 --- a/StandManager/Components/Layout/MainLayout.razor +++ b/StandManager/Components/Layout/MainLayout.razor @@ -66,6 +66,14 @@ Utenti + diff --git a/StandManager/Components/Pages/Management/Clienti.razor b/StandManager/Components/Pages/Management/Clienti.razor new file mode 100644 index 0000000..f216e83 --- /dev/null +++ b/StandManager/Components/Pages/Management/Clienti.razor @@ -0,0 +1,187 @@ +@page "/management/clienti" +@using Microsoft.EntityFrameworkCore +@using StandManager.Domain.Entita +@using StandManager.Service.Interfaces +@inject IManagerService _managerService + +

Clienti

+ + + +@inject IManagerService _managerService + +

Clienti

+ +@*BOZZA NEW VERSION*@ +@* + + + @* Colonna comandi con toolbar Aggiungi + pulsanti Modifica/Elimina *@ +@* + + + + + + + + + + + + + + + + + + + + + + +@code { + RadzenDataGrid? grid; + + List clienti = new(); + Cliente? clienteSelezionato; + Cliente? clienteInInserimento; // per distinguere "nuovo" da "esistente" + + protected override async Task OnInitializedAsync() + { + // Prima avevi IQueryable. Ora usiamo List per gestire facilmente CRUD in memoria + var query = await _managerService.ClienteService.RicercaQueryable(x => x.Eliminato == false); + clienti = await query.ToListAsync(); + + clienteSelezionato = clienti.FirstOrDefault(); + } + + // ========= COMANDI UI (toolbar + pulsanti riga) ========== + + async Task AddRow() + { + // crea un nuovo cliente in edit + clienteInInserimento = new Cliente(); + clienti.Insert(0, clienteInInserimento); + await grid!.InsertRow(clienteInInserimento); + } + + async Task EditRow(Cliente cliente) + { + clienteInInserimento = null; // non è un "nuovo", è edit di esistente + await grid!.EditRow(cliente); + } + + async Task SaveRow(Cliente cliente) + { + // Chiude la modalità edit a livello UI + await grid!.UpdateRow(cliente); + + // Persistenza su DB + if (clienteInInserimento == cliente) + { + // INSERIMENTO + // TODO: sostituisci con il tuo metodo reale + // await _managerService.ClienteService.Inserisci(cliente); + // await _managerService.UnitOfWork.SalvaAsync(); + + clienteInInserimento = null; + } + else + { + // UPDATE + // TODO: sostituisci con il tuo metodo reale + // await _managerService.ClienteService.Aggiorna(cliente); + // await _managerService.UnitOfWork.SalvaAsync(); + } + } + + void CancelEdit(Cliente cliente) + { + if (clienteInInserimento == cliente) + { + // se annullo l'inserimento, tolgo la riga fittizia + clienti.Remove(cliente); + clienteInInserimento = null; + } + + grid!.CancelEditRow(cliente); + } + + async Task DeleteRow(Cliente cliente) + { + // Persistenza su DB + // TODO: soft-delete o hard-delete a seconda della tua logica: + // cliente.Eliminato = true; + // await _managerService.ClienteService.Aggiorna(cliente); + // await _managerService.UnitOfWork.SalvaAsync(); + + clienti.Remove(cliente); + await grid!.Reload(); + } +} + *@ + +@*OLD VERSION*@ + + + + + + + + + + + + +@code { + IQueryable clienti; + IList clientiSelected; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + clienti = await _managerService.ClienteService.RicercaQueryable(x => x.Eliminato == false); + + clientiSelected = new List() { clienti.FirstOrDefault() }; + } +} + + diff --git a/StandManager/Components/Pages/_Imports.razor b/StandManager/Components/Pages/_Imports.razor new file mode 100644 index 0000000..e69de29