namespace BankSampahApp.Services; /// /// Interface untuk centralized configuration management /// public interface IAppConfigurationService { /// /// Gets application configuration with fallback /// /// Type of configuration value /// Configuration key /// Default value if key not found /// Configuration value or default T GetValue(string key, T defaultValue); /// /// Gets application name from configuration /// string ApplicationName { get; } /// /// Gets whether detailed exceptions should be shown /// bool ShowDetailedExceptions { get; } /// /// Gets cache configuration settings /// CacheSettings CacheSettings { get; } /// /// Gets statistics configuration settings /// StatisticsSettings StatisticsSettings { get; } /// /// Gets development configuration settings /// DevelopmentSettings DevelopmentSettings { get; } } /// /// Cache configuration settings /// public class CacheSettings { public TimeSpan FeaturesExpiration { get; set; } = TimeSpan.FromHours(1); public TimeSpan StatisticsExpiration { get; set; } = TimeSpan.FromMinutes(30); public TimeSpan StatisticsSlidingExpiration { get; set; } = TimeSpan.FromMinutes(5); public TimeSpan PrivacyPageExpiration { get; set; } = TimeSpan.FromHours(1); } /// /// Statistics configuration settings /// public class StatisticsSettings { public int BaseUsers { get; set; } = 1000; public decimal BaseWaste { get; set; } = 15.0m; public int BaseRewards { get; set; } = 890; public decimal BaseEnvironmentImpact { get; set; } = 95.0m; public double GrowthFactorMultiplier { get; set; } = 0.001; public double MaxGrowthFactor { get; set; } = 1.5; } /// /// Development configuration settings /// public class DevelopmentSettings { public bool DetailedExceptions { get; set; } = false; public bool EnablePerformanceMetrics { get; set; } = false; public int SimulatedDelayMs { get; set; } = 0; }