dotnet-geo-management/Svrnty.GeoManagement.Abstractions/ServiceCollectionExtensions.cs
Mathias Beaulieu-Duncan c6e6b29905
All checks were successful
Publish NuGet Packages / build-and-publish (push) Successful in 29s
refactor Country to CountryCode to better reflect the value it contain
2025-10-08 11:35:23 -04:00

68 lines
2.3 KiB
C#

using Svrnty.GeoManagement.Abstractions.Abstractions;
using Svrnty.GeoManagement.Abstractions.Models;
namespace Svrnty.GeoManagement.Abstractions;
public static class ServiceCollectionExtensions
{
public static void To(this IAddress address, IAddress toAddress)
{
toAddress.Line1 = address.Line1;
toAddress.Line2 = address.Line2;
toAddress.City = address.City;
toAddress.PostalCode = address.PostalCode;
toAddress.CountryCode = address.CountryCode;
toAddress.Subdivision = address.Subdivision;
}
public static void From(this IAddress address, IAddress fromAddress)
{
address.Line1 = fromAddress.Line1;
address.Line2 = fromAddress.Line2;
address.City = fromAddress.City;
address.PostalCode = fromAddress.PostalCode;
address.CountryCode = fromAddress.CountryCode;
address.Subdivision = fromAddress.Subdivision;
}
public static string GetFormattedAddress(this IAddress address, FormattedAddressType formatType = FormattedAddressType.Full)
{
return formatType switch
{
FormattedAddressType.Full => FormatFullOneLine(address),
FormattedAddressType.Compact => FormatCompactOneLine(address),
FormattedAddressType.MultiLine => FormatMultiLine(address),
_ => FormatFullOneLine(address)
};
}
private static string FormatFullOneLine(IAddress address)
{
if (string.IsNullOrWhiteSpace(address.Line2))
{
return $"{address.Line1}, {address.City}, {address.Subdivision} {address.PostalCode}, {address.CountryCode}";
}
return $"{address.Line2}, {address.Line1}, {address.City}, {address.Subdivision} {address.PostalCode}, {address.CountryCode}";
}
private static string FormatCompactOneLine(IAddress address)
{
if (string.IsNullOrWhiteSpace(address.Line2))
{
return $"{address.Line1}, {address.City}, {address.Subdivision}";
}
return $"{address.Line2}, {address.Line1}, {address.City}, {address.Subdivision}";
}
private static string FormatMultiLine(IAddress address)
{
if (string.IsNullOrWhiteSpace(address.Line2))
{
return $"{address.Line1}\n{address.City}, {address.Subdivision} {address.PostalCode}\n{address.CountryCode}";
}
return $"{address.Line2}, {address.Line1}\n{address.City}, {address.Subdivision} {address.PostalCode}\n{address.CountryCode}";
}
}