92 lines
3.6 KiB
C#
92 lines
3.6 KiB
C#
|
|
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));
|
||
|
|
}
|
||
|
|
}
|