feat(adm-009): ProvinciaArgentina enum with display mapping
This commit is contained in:
91
src/api/SIGCM2.Domain/Fiscal/ProvinciaArgentina.cs
Normal file
91
src/api/SIGCM2.Domain/Fiscal/ProvinciaArgentina.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
namespace SIGCM2.Domain.Fiscal;
|
||||
|
||||
/// <summary>
|
||||
/// Jurisdicciones fiscales de Argentina: 23 provincias INDEC + Ciudad Autónoma de Buenos Aires.
|
||||
/// Almacenado en BD como VARCHAR(50) (nombre del enum via ToString()).
|
||||
/// </summary>
|
||||
public enum ProvinciaArgentina
|
||||
{
|
||||
BuenosAires,
|
||||
Catamarca,
|
||||
Chaco,
|
||||
Chubut,
|
||||
CiudadAutonomaDeBuenosAires,
|
||||
Cordoba,
|
||||
Corrientes,
|
||||
EntreRios,
|
||||
Formosa,
|
||||
Jujuy,
|
||||
LaPampa,
|
||||
LaRioja,
|
||||
Mendoza,
|
||||
Misiones,
|
||||
Neuquen,
|
||||
RioNegro,
|
||||
Salta,
|
||||
SanJuan,
|
||||
SanLuis,
|
||||
SantaCruz,
|
||||
SantaFe,
|
||||
SantiagoDelEstero,
|
||||
TierraDelFuego,
|
||||
Tucuman
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Extension methods para ProvinciaArgentina: mapping bidireccional con el display name
|
||||
/// (nombre con acentos/espacios) que se usa para presentación en UI.
|
||||
/// </summary>
|
||||
public static class ProvinciaArgentinaExtensions
|
||||
{
|
||||
private static readonly Dictionary<ProvinciaArgentina, string> DisplayNames = new()
|
||||
{
|
||||
[ProvinciaArgentina.BuenosAires] = "Buenos Aires",
|
||||
[ProvinciaArgentina.Catamarca] = "Catamarca",
|
||||
[ProvinciaArgentina.Chaco] = "Chaco",
|
||||
[ProvinciaArgentina.Chubut] = "Chubut",
|
||||
[ProvinciaArgentina.CiudadAutonomaDeBuenosAires] = "Ciudad Autónoma de Buenos Aires",
|
||||
[ProvinciaArgentina.Cordoba] = "Córdoba",
|
||||
[ProvinciaArgentina.Corrientes] = "Corrientes",
|
||||
[ProvinciaArgentina.EntreRios] = "Entre Ríos",
|
||||
[ProvinciaArgentina.Formosa] = "Formosa",
|
||||
[ProvinciaArgentina.Jujuy] = "Jujuy",
|
||||
[ProvinciaArgentina.LaPampa] = "La Pampa",
|
||||
[ProvinciaArgentina.LaRioja] = "La Rioja",
|
||||
[ProvinciaArgentina.Mendoza] = "Mendoza",
|
||||
[ProvinciaArgentina.Misiones] = "Misiones",
|
||||
[ProvinciaArgentina.Neuquen] = "Neuquén",
|
||||
[ProvinciaArgentina.RioNegro] = "Río Negro",
|
||||
[ProvinciaArgentina.Salta] = "Salta",
|
||||
[ProvinciaArgentina.SanJuan] = "San Juan",
|
||||
[ProvinciaArgentina.SanLuis] = "San Luis",
|
||||
[ProvinciaArgentina.SantaCruz] = "Santa Cruz",
|
||||
[ProvinciaArgentina.SantaFe] = "Santa Fe",
|
||||
[ProvinciaArgentina.SantiagoDelEstero] = "Santiago del Estero",
|
||||
[ProvinciaArgentina.TierraDelFuego] = "Tierra del Fuego",
|
||||
[ProvinciaArgentina.Tucuman] = "Tucumán",
|
||||
};
|
||||
|
||||
private static readonly Dictionary<string, ProvinciaArgentina> ByDisplayName =
|
||||
DisplayNames.ToDictionary(kv => kv.Value, kv => kv.Key, StringComparer.Ordinal);
|
||||
|
||||
/// <summary>
|
||||
/// Retorna el nombre con acentos/espacios para presentación en UI y almacenamiento en BD.
|
||||
/// </summary>
|
||||
public static string ToDisplayString(this ProvinciaArgentina provincia)
|
||||
=> DisplayNames[provincia];
|
||||
|
||||
/// <summary>
|
||||
/// Parsea un display name a su valor de enum correspondiente.
|
||||
/// Lanza <see cref="ArgumentException"/> si el nombre no corresponde a ningún valor.
|
||||
/// </summary>
|
||||
public static ProvinciaArgentina FromDisplayString(string displayName)
|
||||
{
|
||||
if (ByDisplayName.TryGetValue(displayName, out var result))
|
||||
return result;
|
||||
|
||||
throw new ArgumentException(
|
||||
$"'{displayName}' no es un nombre de provincia válido. Usá uno de los valores de ProvinciaArgentina.",
|
||||
nameof(displayName));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user