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"; /// /// DateTime generic attribute on Product. /// The start of the window during which this product is visible for preordering. /// public const string PreOrderWindowStart = "PreOrderWindowStart"; /// /// DateTime generic attribute on Product. /// The end of the window during which this product is visible for preordering. /// public const string PreOrderWindowEnd = "PreOrderWindowEnd"; // ── Environment flag → AcEnv.IsProdDb (AyCode.Core framework, 2026-07) ── // Egy-forrás keret-állapot (ugyanaz, amit a kliens tükröz). A method-only felület szándékosan megmarad: // nincs property, amit véletlenül bind-olni/szerializálni lehetne. A set-once őr (a szerver DB-je nem // változhat futásidőben) itt marad — az AcEnv-írás előtt. /// /// Set once by the plugin startup after DB-catalog classification. /// A second call with a different value throws — the flag cannot flip at runtime. /// public static void SetIsProd(bool isProd) { if (AcEnv.IsProdDbHydrated && AcEnv.IsProdDb != isProd) throw new InvalidOperationException( $"IsProd is already set to {AcEnv.IsProdDb}; refusing to change it to {isProd}."); AcEnv.SetIsProdDb(isProd); } /// /// True = PROD database. Throws until SetIsProd ran — an uninitialized read must never return a default. /// public static bool IsProd() => AcEnv.IsProdDb; static FruitBankConst() { ProjectId = Guid.Parse(ProjectIdString); ProjectSalt = GenerateProjectSalt(ProjectId.ToString("N")); } } }