57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace VEPROMS.CSLA.Library
 | |
| {
 | |
|     public static class EnumExtensions
 | |
|     {
 | |
|         // Take a flag enum and extract the cleaned string values.
 | |
|         public static List<string> ToComparableStrings(this Enum eNum)
 | |
|             => eNum.ToString()
 | |
|                     .Split(',')
 | |
|                     .Select(str => str.ToCleanString())
 | |
|                     .ToList();
 | |
| 
 | |
|         // Take an individual enum and report the textual value.
 | |
|         public static string ToComparableString(this Enum eNum)
 | |
|             => eNum.ToString()
 | |
|                    .ToCleanString();
 | |
| 
 | |
|         // Take an individual enum and report the integer values as a comma delimited string
 | |
|         public static string ToCommaDelimString(this Enum eNum)
 | |
|         {
 | |
|             string retVal = string.Empty;
 | |
| 
 | |
|             if (!string.IsNullOrEmpty(eNum.ToString()))
 | |
|             {
 | |
|                 foreach (Enum f in Enum.GetValues(eNum.GetType()))
 | |
|                 {
 | |
|                     if (eNum.ToString().Contains(f.ToString()))
 | |
|                     {
 | |
|                         retVal = (string.IsNullOrEmpty(retVal)) ? Convert.ToInt32(f).ToString() : string.Concat(retVal, ",", Convert.ToInt32(f));
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return retVal;
 | |
|         }
 | |
| 
 | |
|         // Remove any spaces due to split and if `_` found change it to space.
 | |
|         public static string ToCleanString(this string str)
 | |
|         {
 | |
|             string retval = str;
 | |
|             // B2022-114: ROs not printing in Word docs.  spaces were removed, but this should only happen in unit designators such
 | |
|             //  as <U-OTHER NAME>.  Keep the code that replaces the '_' with a space.
 | |
|             if (retval.ToUpper().StartsWith("<U-"))
 | |
|             {
 | |
|                 retval = retval.Replace(" ", string.Empty);
 | |
|             }
 | |
|             retval = retval.Replace('_', ' ');
 | |
|             return retval;
 | |
|         }
 | |
|     }
 | |
| }
 |