From b24dbc8fc3e99524f40317a7855501a1df6406e3 Mon Sep 17 00:00:00 2001 From: Gianmarco Date: Fri, 6 Feb 2026 19:30:48 +0100 Subject: [PATCH] Fix registrazione --- .../Components/Pages/Account/Login.razor | 17 ++++- .../Pages/Component_Registrazione.razor | 68 +++++++++++-------- StandManager/Components/Pages/Grazie.razor | 12 +++- .../Components/Pages/Registrazione.razor | 3 +- .../Pages/RegistrazioneInFiera.razor | 10 +-- .../Pages/RegistrazioneSocial.razor | 7 +- .../Model/IscrizioneEventoViewModel.cs | 12 ++-- 7 files changed, 83 insertions(+), 46 deletions(-) diff --git a/StandManager/Components/Pages/Account/Login.razor b/StandManager/Components/Pages/Account/Login.razor index 454dea2..02c5bf7 100644 --- a/StandManager/Components/Pages/Account/Login.razor +++ b/StandManager/Components/Pages/Account/Login.razor @@ -48,6 +48,9 @@ @code { + [SupplyParameterFromQuery] + public string? ReturnUrl { get; set; } + [SupplyParameterFromForm] private LoginModel? model { get; set; } @@ -56,7 +59,10 @@ [CascadingParameter] public HttpContext? httpContext { get; set; } - protected override void OnInitialized() => model ??= new(); + protected override void OnInitialized() + { + model ??= new(); + } /// /// Gestisce il login: controlla le credenziali, crea i claim dell’utente, @@ -87,6 +93,13 @@ var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(identity); await httpContext.SignInAsync(principal); - _navManager.NavigateTo("/management"); + if (!string.IsNullOrWhiteSpace(ReturnUrl)) + { + _navManager.NavigateTo(ReturnUrl, forceLoad: true); + } + else + { + _navManager.NavigateTo("/management"); + } } } diff --git a/StandManager/Components/Pages/Component_Registrazione.razor b/StandManager/Components/Pages/Component_Registrazione.razor index 09dc0dd..6904725 100644 --- a/StandManager/Components/Pages/Component_Registrazione.razor +++ b/StandManager/Components/Pages/Component_Registrazione.razor @@ -51,20 +51,17 @@ -
-
-
@@ -112,7 +109,7 @@
- @if (hasCliente) + @if (cliente) {
@@ -121,7 +118,7 @@
} -
+
@@ -141,8 +138,7 @@
@@ -160,7 +156,8 @@ @code { [Parameter] public InvitoEventoViewModel invito { get; set; } - [Parameter] public bool hasCliente { get; set; } + [Parameter] public string ReturnUrl { get; set; } + [Parameter] public bool cliente { get; set; } [Parameter] public Func? OnSubmitCompletedAsync { get; set; } @@ -204,10 +201,10 @@ inizioEvento = evento?.DataDa ?? DateTime.Now.AddDays(-7); fineEvento = evento?.DataA ?? DateTime.Now.AddDays(7); - if (!hasCliente) + if (!cliente) NoCliente(); else - HasCliente(); + GiaCliente(); } /// @@ -215,26 +212,41 @@ /// private async Task onIscrizioneSave() { - var userId = await MembershipUtils.GetUserId(_auth); - - var model = new IscrizioneEvento() + try { - EventoId = invito.EventoId, - InvitoEventoId = invito.Id, - ClienteId = invito.ClienteId, - DestinazioneId = iscrizione.DestinazioneId, - TipologiaClienteId = iscrizione.TipologiaClienteId, - //IdUtenteCreazione = userId != Guid.Empty ? userId : null - }; + var userId = await MembershipUtils.GetUserId(_auth); - model = iscrizione.Map(model); + if (!cliente) + { + if (iscrizione.ProvinciaId.GetValueOrDefault() == Guid.Empty) throw new Exception("La provincia è obbligatoria"); + if (string.IsNullOrEmpty(iscrizione.Cap)) throw new Exception("Il CAP è obbligatorio"); + if (iscrizione.ComuneId.GetValueOrDefault() == Guid.Empty) throw new Exception("Il comune è obbligatoria"); + } + + var model = new IscrizioneEvento() + { + EventoId = invito.EventoId, + InvitoEventoId = invito.Id, + ClienteId = invito.ClienteId, + DestinazioneId = iscrizione.DestinazioneId, + TipologiaClienteId = iscrizione.TipologiaClienteId, + //IdUtenteCreazione = userId != Guid.Empty ? userId : null + }; - var saved = await _managerService.IscrizioneEventoService.Salva(model); - if (OnSubmitCompletedAsync is not null) - { - await OnSubmitCompletedAsync(this, saved); + model = iscrizione.Map(model); + + var saved = await _managerService.IscrizioneEventoService.Salva(model); + if (OnSubmitCompletedAsync is not null) + { + await OnSubmitCompletedAsync(this, saved); + } + var returnUrl = Uri.EscapeDataString(ReturnUrl ?? "/"); + _navManager.NavigateTo($"/Grazie?ReturnUrl={returnUrl}"); + } + catch (Exception ex) + { + await _dialogService.Alert(ex.Message, "Errore"); } - _navManager.NavigateTo($"/Grazie"); } /// @@ -260,7 +272,7 @@ } - public void HasCliente() + public void GiaCliente() { iscrizione.EsperienzaConDAC = "Si"; } @@ -293,7 +305,7 @@ /// private async Task onCodiceFornitoChanged(string text) { - if (!hasCliente) return; + if (!cliente) return; var codiceFornito = text; invito.CodiceFornito = codiceFornito; diff --git a/StandManager/Components/Pages/Grazie.razor b/StandManager/Components/Pages/Grazie.razor index 24e7f5c..4691063 100644 --- a/StandManager/Components/Pages/Grazie.razor +++ b/StandManager/Components/Pages/Grazie.razor @@ -59,8 +59,18 @@ @code { + [SupplyParameterFromQuery] + public string? ReturnUrl { get; set; } + private void goToHome() { - _navManager.NavigateTo("/registrazione"); + if (!string.IsNullOrWhiteSpace(ReturnUrl) && ReturnUrl.StartsWith("/")) + { + _navManager.NavigateTo(ReturnUrl); + } + else + { + _navManager.NavigateTo("/registrazione"); + } } } \ No newline at end of file diff --git a/StandManager/Components/Pages/Registrazione.razor b/StandManager/Components/Pages/Registrazione.razor index d7e347a..47c6523 100644 --- a/StandManager/Components/Pages/Registrazione.razor +++ b/StandManager/Components/Pages/Registrazione.razor @@ -46,8 +46,7 @@
diff --git a/StandManager/Components/Pages/RegistrazioneInFiera.razor b/StandManager/Components/Pages/RegistrazioneInFiera.razor index b9db8a2..944c873 100644 --- a/StandManager/Components/Pages/RegistrazioneInFiera.razor +++ b/StandManager/Components/Pages/RegistrazioneInFiera.razor @@ -16,7 +16,7 @@ @if (showForm) { - + }
@@ -28,19 +28,19 @@ private bool showForm { get; set; } = false; private InvitoEventoViewModel invito { get; set; } = new InvitoEventoViewModel(); private Component_Registrazione registrazione { get; set; } = new(); - private bool hasCliente { get; set; } + private bool cliente { get; set; } private void onClienteToggleChanged(bool value) { if (!value) { - hasCliente = false; + cliente = false; registrazione.NoCliente(); } else { - hasCliente = true; - registrazione.HasCliente(); + cliente = true; + registrazione.GiaCliente(); } showCodiceCliente = value; diff --git a/StandManager/Components/Pages/RegistrazioneSocial.razor b/StandManager/Components/Pages/RegistrazioneSocial.razor index 4414084..de68a4b 100644 --- a/StandManager/Components/Pages/RegistrazioneSocial.razor +++ b/StandManager/Components/Pages/RegistrazioneSocial.razor @@ -14,9 +14,10 @@
+ OnSubmitCompletedAsync="@((sender, model) => onSubmitCompleted(model))" + ReturnUrl="/registrazione-campagna-socialmedia-dac-expo-tecnocom-2026"/>
@@ -26,7 +27,7 @@ private bool showForm { get; set; } = false; private InvitoEventoViewModel invito { get; set; } = new InvitoEventoViewModel(); private Component_Registrazione registrazione { get; set; } = new(); - private bool hasCliente { get; set; } + private bool cliente { get; set; } private async Task onSubmitCompleted(IscrizioneEvento model) { diff --git a/StandManager/Model/IscrizioneEventoViewModel.cs b/StandManager/Model/IscrizioneEventoViewModel.cs index 9803d56..eff6454 100644 --- a/StandManager/Model/IscrizioneEventoViewModel.cs +++ b/StandManager/Model/IscrizioneEventoViewModel.cs @@ -29,13 +29,13 @@ public class IscrizioneEventoViewModel public string Email { get; set; } [Required(ErrorMessage = "Il numero di telefono è obbigatorio")] public string NumeroTelefono { get; set; } - [Required(ErrorMessage = "La provincia è obbigatoria")] + /*[Required(ErrorMessage = "La provincia è obbigatoria")]*/ public Guid? ProvinciaId { get; set; } public ProvinciaViewModel Provincia { get; set; } - [Required(ErrorMessage = "Il comune è obbigatorio")] + /*[Required(ErrorMessage = "Il comune è obbigatorio")]*/ public Guid? ComuneId { get; set; } public ComuneIstatViewModel Comune { get; set; } - [Required(ErrorMessage = "Il CAP è obbigatorio")] + /*[Required(ErrorMessage = "Il CAP è obbigatorio")]*/ public string Cap { get; set; } [Required(ErrorMessage = "La Ragione Sociale è obbigatoria")] public string RagioneSociale { get; set; } @@ -79,8 +79,10 @@ public class IscrizioneEventoViewModel model.GiornoPresenza = GiornoPresenza.Value; model.Ruolo = (RuoloTipo)RuoloInt; model.TipologiaClienteId = TipologiaClienteId; - model.ComuneId = ComuneId.GetValueOrDefault(); - model.ProvinciaId = ProvinciaId.GetValueOrDefault(); + if (model.ComuneId.GetValueOrDefault() != Guid.Empty) + model.ComuneId = ComuneId.GetValueOrDefault(); + if (model.ProvinciaId.GetValueOrDefault() != Guid.Empty) + model.ProvinciaId = ProvinciaId.GetValueOrDefault(); model.AgenteId = AgenteId; model.CapoareaId = CapoareaId;