62 lines
2.3 KiB
C#
62 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using AyCode.Core.Consts;
|
|
|
|
namespace FruitBank.Common.Server
|
|
{
|
|
public class FruitBankConst : AcConst
|
|
{
|
|
public static string ProjectIdString = "aad53443-2ee2-4650-8a99-97e907265e4e";
|
|
|
|
public static string MeasuringRoleSystemName = "Measuring";
|
|
public static string MeasuringRevisorRoleSystemName = "MeasuringRevisor";
|
|
public static string IsMeasureableAttributeName = "IsMeasurable";
|
|
|
|
/// <summary>
|
|
/// DateTime generic attribute on Product.
|
|
/// The start of the window during which this product is visible for preordering.
|
|
/// </summary>
|
|
public const string PreOrderWindowStart = "PreOrderWindowStart";
|
|
|
|
/// <summary>
|
|
/// DateTime generic attribute on Product.
|
|
/// The end of the window during which this product is visible for preordering.
|
|
/// </summary>
|
|
public const string PreOrderWindowEnd = "PreOrderWindowEnd";
|
|
|
|
// ── Environment flag — method-only surface on purpose: no property to bind/serialize/read accidentally ──
|
|
|
|
private static bool? _isProd;
|
|
|
|
/// <summary>
|
|
/// Set once by the plugin startup after DB-catalog classification.
|
|
/// A second call with a different value throws — the flag cannot flip at runtime.
|
|
/// </summary>
|
|
public static void SetIsProd(bool isProd)
|
|
{
|
|
if (_isProd.HasValue && _isProd.Value != isProd)
|
|
throw new InvalidOperationException(
|
|
$"IsProd is already set to {_isProd.Value}; refusing to change it to {isProd}.");
|
|
|
|
_isProd = isProd;
|
|
}
|
|
|
|
/// <summary>
|
|
/// True = PROD database. Throws until SetIsProd ran — an uninitialized read must never return a default.
|
|
/// </summary>
|
|
public static bool IsProd()
|
|
=> _isProd ?? throw new InvalidOperationException(
|
|
"IsProd has not been initialized — SetIsProd must run at startup before any read.");
|
|
|
|
static FruitBankConst()
|
|
{
|
|
ProjectId = Guid.Parse(ProjectIdString);
|
|
ProjectSalt = GenerateProjectSalt(ProjectId.ToString("N"));
|
|
}
|
|
}
|
|
|
|
}
|