mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 14:13:12 +00:00
29 lines
1 KiB
C#
29 lines
1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|