From 8bbe8c20b6b376bfe73fa8d8186e253cd351a642 Mon Sep 17 00:00:00 2001 From: Rory& Date: Sun, 22 Sep 2024 20:38:53 +0200 Subject: Changes --- .../PolicyEditorComponents/PolicyEditorModal.razor | 60 +++++++++++++++------- 1 file changed, 41 insertions(+), 19 deletions(-) (limited to 'MatrixUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor') diff --git a/MatrixUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor b/MatrixUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor index 1bd00d1..fc536c0 100644 --- a/MatrixUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor +++ b/MatrixUtils.Web/Shared/PolicyEditorComponents/PolicyEditorModal.razor @@ -35,39 +35,61 @@ @foreach (var prop in props) { + var isNullable = Nullable.GetUnderlyingType(prop.PropertyType) is not null; @prop.GetFriendlyName() - @if (Nullable.GetUnderlyingType(prop.PropertyType) is not null) { + @if (Nullable.GetUnderlyingType(prop.PropertyType) is null) { * } @{ var getter = prop.GetGetMethod(); var setter = prop.GetSetMethod(); - } - @switch (Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType) { - case Type t when t == typeof(string): - {e}"); setter?.Invoke(PolicyData, [e]); PolicyEvent.TypedContent = PolicyData; StateHasChanged(); })"> - break; - default: -

Unsupported type: @prop.PropertyType

- break; + if (getter is null) { +

Missing property getter: @prop.Name

+ } + else { + switch (Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType) { + case Type t when t == typeof(string): + {e}"); setter?.Invoke(PolicyData, [e]); PolicyEvent.TypedContent = PolicyData; StateHasChanged(); })"> + break; + case Type t when t == typeof(DateTime): + if (!isNullable) { + {e}"); setter?.Invoke(PolicyData, [e]); PolicyEvent.TypedContent = PolicyData; StateHasChanged(); })"> + } + else { + var value = getter?.Invoke(PolicyData, null) as DateTime?; + if (value is null) { + + } + else { + var notNullValue = Nullable.GetValueRefOrDefaultRef(ref value); + Console.WriteLine($"Value: {value?.ToString() ?? "null"}"); + {e}"); setter?.Invoke(PolicyData, [e]); PolicyEvent.TypedContent = PolicyData; StateHasChanged(); })"> + + } + } + + break; + default: +

Unsupported type: @prop.PropertyType

+ break; + } + } } } -
-
-            @PolicyEvent.ToJson(true, false)
-        
+
+ JSON data +
+                @PolicyEvent.ToJson(true, true)
+            
+
Cancel Save - @* Target entity: *@ - @*
*@ - @* Reason: *@ - @* *@ } else {

Policy data is null

@@ -102,7 +124,7 @@ .ToDictionary(x => x.GetCustomAttributes().First(y => !string.IsNullOrWhiteSpace(y.EventName)).EventName, x => x); private StateEventResponse? _policyEvent; - + private string? MappedType { get => _policyEvent?.Type; set { @@ -110,9 +132,9 @@ PolicyEvent.Type = value; PolicyEvent.TypedContent ??= Activator.CreateInstance(PolicyTypes[value]) as PolicyRuleEventContent; PolicyData = PolicyEvent.TypedContent as PolicyRuleEventContent; + PolicyData.Recommendation ??= "m.ban"; } } } - } \ No newline at end of file -- cgit 1.5.1