aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Helpers
diff options
context:
space:
mode:
Diffstat (limited to 'src/Enmarcha.Backend/Helpers')
-rw-r--r--src/Enmarcha.Backend/Helpers/EnumExtensions.cs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/Enmarcha.Backend/Helpers/EnumExtensions.cs b/src/Enmarcha.Backend/Helpers/EnumExtensions.cs
new file mode 100644
index 0000000..4ab3a66
--- /dev/null
+++ b/src/Enmarcha.Backend/Helpers/EnumExtensions.cs
@@ -0,0 +1,22 @@
+using System.ComponentModel;
+using System.Reflection;
+using Microsoft.AspNetCore.Mvc.Rendering;
+
+namespace Enmarcha.Backend.Helpers;
+
+public static class EnumExtensions
+{
+ public static string GetDescription(this Enum value)
+ {
+ var field = value.GetType().GetField(value.ToString());
+ var attr = field?.GetCustomAttribute<DescriptionAttribute>();
+ return attr?.Description ?? value.ToString();
+ }
+
+ public static IEnumerable<SelectListItem> ToSelectList<TEnum>() where TEnum : struct, Enum =>
+ Enum.GetValues<TEnum>().Select(e => new SelectListItem
+ {
+ Value = e.ToString(),
+ Text = e.GetDescription()
+ });
+}