mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-03 22:33:19 +00:00
Locations store State as either a two-letter postal code or a full state name (the location list filter expands codes to both forms via UsStateCodes.ExpandStorageValues, and dev fixtures carry State = "indiana"). DashboardRegions.Resolve only matched the two-letter key, so every location stored as a full name fell into Unmapped/Other and the East/Central/West/ California bars undercounted. Normalise the stored value through a new UsStateCodes.ToCode, which accepts a code or a full name and returns the canonical postal code, before the zone lookup. Extend the region test with full-name storage forms and add an invariant asserting every US state and its full-name form resolves to a canonical bucket.
85 lines
2.5 KiB
C#
85 lines
2.5 KiB
C#
using SeaHaven.DataServices.Interfaces;
|
|
|
|
namespace SeaHaven.Services.Helpers;
|
|
|
|
public static class DashboardRegions
|
|
{
|
|
public static readonly IReadOnlyList<string> Names =
|
|
["East", "Central", "West", "California", "Unmapped/Other"];
|
|
|
|
public static string Resolve(string? state)
|
|
{
|
|
var code = UsStateCodes.ToCode(state);
|
|
if (code is null)
|
|
return "Unmapped/Other";
|
|
|
|
return StateToRegion.TryGetValue(code, out var region)
|
|
? region
|
|
: "Unmapped/Other";
|
|
}
|
|
|
|
public static IReadOnlyDictionary<string, int> Count(
|
|
IReadOnlyList<DashboardWorkOrder> workOrders)
|
|
{
|
|
var counts = Names.ToDictionary(name => name, _ => 0, StringComparer.Ordinal);
|
|
foreach (var workOrder in workOrders)
|
|
counts[Resolve(workOrder.LocationState)]++;
|
|
|
|
return counts;
|
|
}
|
|
|
|
private static readonly IReadOnlyDictionary<string, string> StateToRegion =
|
|
new Dictionary<string, string>(StringComparer.Ordinal)
|
|
{
|
|
["CT"] = "East",
|
|
["DE"] = "East",
|
|
["GA"] = "East",
|
|
["ME"] = "East",
|
|
["MD"] = "East",
|
|
["MA"] = "East",
|
|
["NH"] = "East",
|
|
["NJ"] = "East",
|
|
["NY"] = "East",
|
|
["NC"] = "East",
|
|
["PA"] = "East",
|
|
["RI"] = "East",
|
|
["SC"] = "East",
|
|
["VT"] = "East",
|
|
["VA"] = "East",
|
|
["WV"] = "East",
|
|
["AL"] = "Central",
|
|
["AR"] = "Central",
|
|
["FL"] = "Central",
|
|
["IL"] = "Central",
|
|
["IN"] = "Central",
|
|
["IA"] = "Central",
|
|
["KS"] = "Central",
|
|
["KY"] = "Central",
|
|
["LA"] = "Central",
|
|
["MI"] = "Central",
|
|
["MN"] = "Central",
|
|
["MS"] = "Central",
|
|
["MO"] = "Central",
|
|
["NE"] = "Central",
|
|
["ND"] = "Central",
|
|
["OH"] = "Central",
|
|
["OK"] = "Central",
|
|
["SD"] = "Central",
|
|
["TN"] = "Central",
|
|
["WI"] = "Central",
|
|
["AK"] = "West",
|
|
["AZ"] = "West",
|
|
["CO"] = "West",
|
|
["HI"] = "West",
|
|
["ID"] = "West",
|
|
["MT"] = "West",
|
|
["NV"] = "West",
|
|
["NM"] = "West",
|
|
["OR"] = "West",
|
|
["TX"] = "West",
|
|
["UT"] = "West",
|
|
["WA"] = "West",
|
|
["WY"] = "West",
|
|
["CA"] = "California"
|
|
};
|
|
}
|