From 16549aa1f153a527357ed85b99fa24702e1828bd Mon Sep 17 00:00:00 2001 From: Ibrahim Munir-Zubair Date: Wed, 30 Jun 2021 11:03:56 +0100 Subject: [PATCH] HEEDLS-429 Add case insensitivity to enumeration model binder --- DigitalLearningSolutions.Data/Enums/Enumeration.cs | 8 ++++++-- .../ModelBinders/EnumerationModelBinder.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/DigitalLearningSolutions.Data/Enums/Enumeration.cs b/DigitalLearningSolutions.Data/Enums/Enumeration.cs index 2e46e9ebe0..81f65ba820 100644 --- a/DigitalLearningSolutions.Data/Enums/Enumeration.cs +++ b/DigitalLearningSolutions.Data/Enums/Enumeration.cs @@ -47,10 +47,14 @@ public override bool Equals(object? obj) public static bool TryGetFromIdOrName( string idOrName, - out T enumeration) + out T enumeration, + bool ignoreCase = false + ) where T : Enumeration { - return TryParse(item => item.Name == idOrName, out enumeration) || + var comparison = + ignoreCase ? StringComparison.CurrentCultureIgnoreCase : StringComparison.CurrentCulture; + return TryParse(item => string.Equals(item.Name, idOrName, comparison), out enumeration) || int.TryParse(idOrName, out var id) && TryParse(item => item.Id == id, out enumeration); } diff --git a/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs b/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs index 691eaf7ae6..b806f353fd 100644 --- a/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs +++ b/DigitalLearningSolutions.Web/ModelBinders/EnumerationModelBinder.cs @@ -25,7 +25,7 @@ public Task BindModelAsync(ModelBindingContext bindingContext) { bindingContext.Result = ModelBindingResult.Success(default(T)); } - else if (Enumeration.TryGetFromIdOrName(enumerationName.FirstValue, out var result)) + else if (Enumeration.TryGetFromIdOrName(enumerationName.FirstValue, out var result, true)) { bindingContext.Result = ModelBindingResult.Success(result); }