From 7694fc1e088af4d6b03412273f80b0c922a9e1f3 Mon Sep 17 00:00:00 2001 From: Florian Edlmayer Date: Thu, 6 Nov 2025 14:39:45 +0100 Subject: [PATCH] =?UTF-8?q?ValidateProfiles=20gemacht,=20Link=20zu=20Profi?= =?UTF-8?q?les=20wenn=20Jahrgang=20und=20fachrichtung=20fehlt=20und=20bei?= =?UTF-8?q?=20save=20wieder=20zur=C3=BCck=20zum=20Event=20gemacht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Details.razor | 84 ++++++++++++++++++- 1 file changed, 81 insertions(+), 3 deletions(-) diff --git a/Client/Modules/SZUAbsolventenverein.Module.EventRegistration/Details.razor b/Client/Modules/SZUAbsolventenverein.Module.EventRegistration/Details.razor index 9030036..17d5051 100644 --- a/Client/Modules/SZUAbsolventenverein.Module.EventRegistration/Details.razor +++ b/Client/Modules/SZUAbsolventenverein.Module.EventRegistration/Details.razor @@ -1,12 +1,18 @@ -@using Oqtane.Modules.Controls +@using Oqtane +@using Oqtane.Modules.Controls @using SZUAbsolventenverein.Module.EventRegistration.Services @using SZUAbsolventenverein.Module.EventRegistration.Models +@using System.Text.RegularExpressions @namespace SZUAbsolventenverein.Module.EventRegistration @inherits ModuleBase @inject IEventRegistrationService EventRegistrationService @inject NavigationManager NavigationManager @inject IStringLocalizer Localizer +@inject IStringLocalizer SharedLocalizer +@inject IUserService UserService +@inject IProfileService ProfileService +@inject ISettingService SettingService

Anmeldung zum Event

@@ -71,6 +77,9 @@ private Response _response; private bool? Status; + private List _profiles = new List(); + private Dictionary _settings; + private async Task SendResponse(bool response) { if(_response == null) @@ -91,18 +100,45 @@ private async void Zusage() { - await SendResponse(true); + if(ValidateProfiles()) + { + await SendResponse(true); + } else + { + var currentPathAndQuery = new Uri(NavigationManager.Uri).PathAndQuery; + var encodedReturnUrl = Uri.EscapeDataString(currentPathAndQuery); + var link = $"/profile?tab=Profile&returnurl={encodedReturnUrl}"; + + AddModuleMessage(string.Format(SharedLocalizer["ProfileRequired"], $"Vervollständige hier dein Profil mit deinem Jahrgang und deiner Fachrichtung: Link zum Profil"), MessageType.Warning); + } } private async void Absage() { - await SendResponse(false); + if(ValidateProfiles()) + { + await SendResponse(false); + } else + { + var currentPathAndQuery = new Uri(NavigationManager.Uri).PathAndQuery; + var encodedReturnUrl = Uri.EscapeDataString(currentPathAndQuery); + var link = $"/profile?tab=profile&returnurl={encodedReturnUrl}"; + + AddModuleMessage(string.Format(SharedLocalizer["ProfileRequired"], $"Vervollständige hier dein Profil mit deinem Jahrgang und deiner Fachrichtung: {link}"), MessageType.Warning); + } } protected override async Task OnInitializedAsync() { try { + _profiles = await ProfileService.GetProfilesAsync(PageState.Site.SiteId); + var user = await UserService.GetUserAsync(PageState.User.UserId, PageState.Site.SiteId); + if (user != null) + { + _settings = user.Settings; + } + _id = Int32.Parse(PageState.QueryString["id"]); Event currentEvent; @@ -128,4 +164,46 @@ AddModuleMessage(Localizer["Message.LoadError"], MessageType.Error); } } + + + private bool ValidateProfiles() + { + foreach (Profile profile in _profiles) + { + var value = GetProfileValue(profile.Name, string.Empty); + if (string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(profile.DefaultValue)) + { + _settings = SettingService.SetSetting(_settings, profile.Name, profile.DefaultValue); + } + if (!profile.IsPrivate || UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) + { + if (profile.IsRequired && string.IsNullOrEmpty(value)) + { + AddModuleMessage(string.Format(SharedLocalizer["ProfileRequired"], profile.Title), MessageType.Warning); + return false; + } + if (!string.IsNullOrEmpty(profile.Validation)) + { + Regex regex = new Regex(profile.Validation); + bool valid = regex.Match(value).Success; + if (!valid) + { + AddModuleMessage(string.Format(SharedLocalizer["ProfileInvalid"], profile.Title), MessageType.Warning); + return false; + } + } + } + } + return true; + } + + private string GetProfileValue(string SettingName, string DefaultValue) + { + string value = SettingService.GetSetting(_settings, SettingName, DefaultValue); + if (value.Contains("]")) + { + value = value.Substring(value.IndexOf("]") + 1); + } + return value; + } }