From 3a1a4055ce15c55cb073d1326f280c082d26f3df Mon Sep 17 00:00:00 2001 From: Gianmarco Date: Mon, 29 Dec 2025 16:09:21 +0100 Subject: [PATCH] Widget --- StandManager.Domain/Entita/Evento.cs | 7 ++ StandManager.Service/UtenteService.cs | 4 -- StandManager/Components/Pages/Counter.razor | 19 ------ .../Components/Pages/Management/Home.razor | 29 ++++++++- StandManager/Components/Pages/Weather.razor | 64 ------------------- .../Components/Widget/Widget_Clienti.razor | 23 +++++++ .../Components/Widget/Widget_Evento.razor | 20 ++++++ 7 files changed, 78 insertions(+), 88 deletions(-) delete mode 100644 StandManager/Components/Pages/Counter.razor delete mode 100644 StandManager/Components/Pages/Weather.razor create mode 100644 StandManager/Components/Widget/Widget_Clienti.razor create mode 100644 StandManager/Components/Widget/Widget_Evento.razor diff --git a/StandManager.Domain/Entita/Evento.cs b/StandManager.Domain/Entita/Evento.cs index c249fb2..8279503 100644 --- a/StandManager.Domain/Entita/Evento.cs +++ b/StandManager.Domain/Entita/Evento.cs @@ -1,3 +1,4 @@ +using System.ComponentModel.DataAnnotations.Schema; using StandManager.Domain.Entita.Base; namespace StandManager.Domain.Entita; @@ -14,4 +15,10 @@ public class Evento : EntitaBase public DateTime IscrizioneDa { get; set; } public DateTime IscrizioneA { get; set; } + + [InverseProperty(nameof(InvitoEvento.Evento))] + public List InvitoEventoList { get; set; } + + [InverseProperty(nameof(IscrizioneEvento.Evento))] + public List IscrizioneEventoList { get; set; } } diff --git a/StandManager.Service/UtenteService.cs b/StandManager.Service/UtenteService.cs index f082328..d9fedf0 100644 --- a/StandManager.Service/UtenteService.cs +++ b/StandManager.Service/UtenteService.cs @@ -19,9 +19,5 @@ public class UtenteService : TService, IUtenteService public async Task> ListaCapoarea() { return (await _unitOfWork.UtenteRepository.RicercaQueryable(x => x.IsCapoarea, skip:0, take:0)).ToList(); - /*return (await _unitOfWork.UtenteRepository.RicercaQueryable(x => - x.Ruolo.Permessi.Any(y => y.Feature.Type == FeatureType.Capoarea || y.Feature.Type == FeatureType.AdminGlobal), - includi:x => x.Include(y => y.Ruolo).ThenInclude(z => z.Permessi).ThenInclude(u => u.Feature), - skip: 0, take: 0)).ToList();*/ } } diff --git a/StandManager/Components/Pages/Counter.razor b/StandManager/Components/Pages/Counter.razor deleted file mode 100644 index 1a4f8e7..0000000 --- a/StandManager/Components/Pages/Counter.razor +++ /dev/null @@ -1,19 +0,0 @@ -@page "/counter" -@rendermode InteractiveServer - -Counter - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() - { - currentCount++; - } -} diff --git a/StandManager/Components/Pages/Management/Home.razor b/StandManager/Components/Pages/Management/Home.razor index 71e90dd..54b3658 100644 --- a/StandManager/Components/Pages/Management/Home.razor +++ b/StandManager/Components/Pages/Management/Home.razor @@ -1,2 +1,29 @@ @attribute [Authorize] -@page "/management" \ No newline at end of file +@page "/management" +@using StandManager.Components.Widget + +
+ +
+
+
+
+

Management

+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
\ No newline at end of file diff --git a/StandManager/Components/Pages/Weather.razor b/StandManager/Components/Pages/Weather.razor deleted file mode 100644 index 43a1ecb..0000000 --- a/StandManager/Components/Pages/Weather.razor +++ /dev/null @@ -1,64 +0,0 @@ -@page "/weather" -@attribute [StreamRendering] - -Weather - -

Weather

- -

This component demonstrates showing data.

- -@if (forecasts == null) -{ -

Loading...

-} -else -{ - - - - - - - - - - - @foreach (var forecast in forecasts) - { - - - - - - - } - -
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
-} - -@code { - private WeatherForecast[]? forecasts; - - protected override async Task OnInitializedAsync() - { - // Simulate asynchronous loading to demonstrate streaming rendering - await Task.Delay(500); - - var startDate = DateOnly.FromDateTime(DateTime.Now); - var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; - forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = startDate.AddDays(index), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = summaries[Random.Shared.Next(summaries.Length)] - }).ToArray(); - } - - private class WeatherForecast - { - public DateOnly Date { get; set; } - public int TemperatureC { get; set; } - public string? Summary { get; set; } - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - } -} diff --git a/StandManager/Components/Widget/Widget_Clienti.razor b/StandManager/Components/Widget/Widget_Clienti.razor new file mode 100644 index 0000000..a405a87 --- /dev/null +++ b/StandManager/Components/Widget/Widget_Clienti.razor @@ -0,0 +1,23 @@ +
+
+ @(senzaAgente ? "Clienti senza agente" : "Clienti senza capoarea") + @totale +
+
+ +@code { + [Parameter] public bool senzaAgente { get; set; } = false; + + private int totale = 0; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + var clientiSenza = senzaAgente + ? await _managerService.ClienteService.RicercaQueryable(x => x.AgenteId == null) + : await _managerService.ClienteService.RicercaQueryable(x => x.CapoareaId == null); + totale = clientiSenza.Count(); + } + +} \ No newline at end of file diff --git a/StandManager/Components/Widget/Widget_Evento.razor b/StandManager/Components/Widget/Widget_Evento.razor new file mode 100644 index 0000000..b9f949a --- /dev/null +++ b/StandManager/Components/Widget/Widget_Evento.razor @@ -0,0 +1,20 @@ +@using Microsoft.EntityFrameworkCore + +
+
+ Prenotati al prossimo evento + @totale +
+
+@code { + private int totale = 0; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + var nextEvent = await _managerService.EventoService.RicercaPer(x => x.DataDa >= DateTime.Now && x.Eliminato == false, + includi:x => x.Include(y => y.InvitoEventoList), ordinamento:x => x.OrderBy(y => y.DataDa)); + totale = nextEvent.InvitoEventoList.Count(); + } +} \ No newline at end of file