shoc-backend/SeaHaven.Services/Helpers/WorkOrderNumberRules.cs

30 lines
1 KiB
C#
Raw Normal View History

using System.Globalization;
namespace SeaHaven.Services.Helpers
{
public static class WorkOrderNumberRules
{
private const int MaximumLength = 11;
private const int MinimumProvisionalDigits = 5;
public static bool IsProvisional(string? woNumber)
=> !string.IsNullOrWhiteSpace(woNumber)
&& woNumber.Trim().StartsWith("SH", StringComparison.OrdinalIgnoreCase);
public static string FormatProvisional(long seed)
{
if (seed < 1)
throw new ArgumentOutOfRangeException(nameof(seed), "Provisional WO number seed must be positive.");
var digits = seed.ToString(CultureInfo.InvariantCulture)
.PadLeft(MinimumProvisionalDigits, '0');
var provisional = $"SH{digits}";
if (provisional.Length > MaximumLength)
throw new ArgumentOutOfRangeException(nameof(seed), "Provisional WO number exceeds the supported length.");
return provisional;
}
}
}