using AyCode.Core.Consts;
using AyCode.Core.Loggers;
namespace FruitBank.Common;
public static class FruitBankConstClient
{
public static string DefaultLocale = "en-US";
// A nop szerver base URL-je. Induláskor a host tölti fel az appsettings "AyCode:Urls:BaseUrl"-ből
// (ld. Program.cs / MauiProgram.cs). Az fbHub ÉS a loggerHub is EBBŐL az egy értékből származik (+/fbHub, +/loggerHub).
// Default: null — ha nincs beállítva, az OLVASÁS exception-t dob, nem megy tovább csendben hiányzó/rossz URL-lel.
// A környezet-váltás az appsettings-ben történik:
// dev: https://localhost:59579 | prod: https://shop.fruitbank.hu | test: https://fruitbank.mangoweb.hu | android: http://10.0.2.2:59579
private static string? _baseUrl;
public static string BaseUrl
{
get => !string.IsNullOrWhiteSpace(_baseUrl)
? _baseUrl
: throw new InvalidOperationException("FruitBankConstClient.BaseUrl nincs beállítva — a host indulásakor hidratáld az appsettings 'AyCode:Urls:BaseUrl' értékéből (Program.cs / MauiProgram.cs).");
set => _baseUrl = value;
}
// A szerver-környezet (PROD/DEV) — az érték KIZÁRÓLAG a szerver IsProdEnvironment() válaszából jöhet
// (a szerver a DB-katalógusból sorolja be magát, fail-closed módon), URL-alakból/configból SOHA.
// Az EGYETLEN értékadási pont: FruitBankSignalRClient (kapcsolat-felépüléskor hidratál, ld. EnsureEnvironmentAsync).
// Hidratálatlan olvasás → exception (fail fast); sikertelen lekérdezés → marad hidratálatlan (fail closed).
private static bool? _isProd;
public static bool IsProd
=> _isProd ?? throw new InvalidOperationException(
"FruitBankConstClient.IsProd nincs hidratálva — a FruitBankSignalRClient a kapcsolat felépülésekor tölti fel a szerver IsProdEnvironment() válaszából (await client.EnsureEnvironmentAsync()).");
public static void SetIsProd(bool isProd) => _isProd = isProd;
/// True, ha az IsProd már hidratált — kapu-logikához (első-connect await) és a push-összevetéshez.
public static bool IsProdHydrated => _isProd != null;
public static string DefaultHubName = "fbHub";
public static string LoggerHubName = "loggerHub";
public static bool SignalRSerializerDiagnosticLog = false;
public static long SignalRKeepAliveIntervalSecond = 60;
public static long SignarlRTimeoutIntervalSecond = 180;
public const string PalletDbTableName = "fbPallet";
public const string FilesDbTableName = "fbFiles";
public const string PartnerDbTableName = "fbPartner";
public const string PartnerDepotDbTableName = "fbPartnerDepot";
public const string EkaerHistoryDbTableName = "fbEkaerHistory";
public const string EkaerHistoryMappingDbTableName = "fbEkaerHistoryMapping";
public const string OrderItemPalletDbTableName = "fbOrderItemPallet";
public const string ShippingDbTableName = "fbShipping";
public const string ShippingItemDbTableName = "fbShippingItem";
public const string ShippingItemPalletDbTableName = "fbShippingItemPallet";
public const string ShippingDocumentDbTableName = "fbShippingDocument";
public const string ShippingDocumentToFilesDbTableName = "fbShippingDocumentToFiles";
public const string StockQuantityHistoryExtDbTableName = "fbStockQuantityHistoryExt";
public const string StockTakingDbTableName = "fbStockTaking";
public const string StockTakingItemDbTableName = "fbStockTakingItem";
public const string StockTakingItemPalletDbTableName = "fbStockTakingItemPallet";
public const string CustomerCreditDbTableName = "fbCustomerCredit";
public const string PreOrderDbTableName = "fbPreOrder";
public const string PreOrderItemDbTableName = "fbPreOrderItem";
public const string CargoPartnerDbTableName = "fbCargoPartner";
public const string CargoTruckDbTableName = "fbCargoTruck";
public const string OrderDraftDbTableName = "fbOrderDraft";
public const string OrderDraftItemDbTableName = "fbOrderDraftItem";
public const string ExternalUserPartnerMapDbTableName = "fbExternalUserPartnerMapping";
public const string ProductTextMappingDbTableName = "fbProductTextMapping";
public const string DomainDescription = "This is a nopCommerce plugin developed for FruitBank, a fruit and vegetable wholesaler. The plugin manages supplier inbound delivery (receiving), warehouse weighing (net/gross/pallet/tare weights), and inventory stocktaking. The business logic is centered around FruitBank's requirement for precise physical measurement and quantity tracking.";
//public static Guid[] DevAdminIds = new Guid[2] { Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"), Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7") };
//public static Guid[] SysAdmins = new Guid[3]
//{
// Guid.Parse("dcf451d2-cc4c-4ac2-8c1f-da00041be1fd"),
// Guid.Parse("4cbaed43-2465-4d99-84f1-c8bc6b7025f7"),
// Guid.Parse("540271f6-c604-4c16-8160-d5a7cafedf00")
//};
//public static Dictionary SysAccounts = new Dictionary
//{
// { "SystemEmailSender", Guid.Parse("5e13e051-4fd6-4a30-a371-75cc785cfb84")},
//};
public static string WelcomeEmailTemplateName = "WelcomeEmailTemplate";
public static string NewTransferEmailTemplateName = "NewTransferEmailTemplate";
public static string TransferModifiedEmailTemplateName = "TramsferModifiedEmailTemplate";
public static string ForgotPasswordEmailTemplateName = "ForgotPasswordEmailTemplate";
public static string GeneralEmailTemplateName = "GeneralEmailTemplate";
public static List WelcomeEmailParameters = new List()
{
"UserName",
"SettingBaseUrl",
"UserId",
"Token"
};
public static List ForgotPasswordEmailParameters = new List()
{
//string userName, string settingBaseUrl, string userId, string token
"UserName",
"SettingBaseUrl",
"UserId",
"Token"
};
public static List NewTransferEmailParameters = new List()
{
//string userName, string fromAddress, string toAddress, string appointment,
//string fullname,string passengerCount, string luggageCount, string settingBaseUrl, string transferId
"UserName",
"FromAddress",
"ToAddress",
"Appointment",
"FullName",
"PassengerCount",
"LuggageCount",
"SettingBaseUrl",
"TransferId"
};
public static List GeneralEmailParameters = new List()
{
//string userName, string settingBaseUrl, string userId, string token
"UserName",
"MessageBody",
"SettingBaseUrl",
"UserId"
};
#if RELEASE
public static string SystemEmailAddress = "test@touriam.com";
public static LogLevel DefaultLogLevelClient = LogLevel.Debug;
#else
public static string SystemEmailAddress = "test@touriam.com";
public static LogLevel DefaultLogLevelClient = LogLevel.Detail;
#endif
}