using SPMS.Application.DTOs.AppConfig; using SPMS.Application.Interfaces; using SPMS.Domain.Interfaces; namespace SPMS.Application.Services; public class AppConfigService : IAppConfigService { private readonly IAppConfigRepository _appConfigRepository; public AppConfigService(IAppConfigRepository appConfigRepository) { _appConfigRepository = appConfigRepository; } public async Task GetTermsAsync() { var config = await _appConfigRepository.GetByKeyAsync("terms_url"); return new AppConfigResponseDto { Url = config?.ConfigValue }; } public async Task GetPrivacyAsync() { var config = await _appConfigRepository.GetByKeyAsync("privacy_url"); return new AppConfigResponseDto { Url = config?.ConfigValue }; } public async Task GetAppVersionAsync(AppVersionRequestDto request) { var latestVersion = await _appConfigRepository.GetByKeyAsync("latest_version"); var minVersion = await _appConfigRepository.GetByKeyAsync("min_version"); var forceUpdate = await _appConfigRepository.GetByKeyAsync("force_update"); var updateUrlKey = request.Platform?.ToLowerInvariant() == "ios" ? "update_url_ios" : "update_url_android"; var updateUrl = await _appConfigRepository.GetByKeyAsync(updateUrlKey); return new AppVersionResponseDto { LatestVersion = latestVersion?.ConfigValue, MinVersion = minVersion?.ConfigValue, IsForceUpdate = string.Equals(forceUpdate?.ConfigValue, "true", StringComparison.OrdinalIgnoreCase), UpdateUrl = updateUrl?.ConfigValue }; } public async Task GetAppSettingsAsync() { var configs = await _appConfigRepository.GetAllAsync(); var configDict = configs.ToDictionary(c => c.ConfigKey, c => c.ConfigValue); return new AppSettingsResponseDto { MinAppVersion = configDict.GetValueOrDefault("min_version"), IsMaintenance = string.Equals(configDict.GetValueOrDefault("maintenance_mode"), "true", StringComparison.OrdinalIgnoreCase), MaintenanceMsg = configDict.GetValueOrDefault("maintenance_message"), CsEmail = configDict.GetValueOrDefault("cs_email"), CsPhone = configDict.GetValueOrDefault("cs_phone") }; } public async Task GetMaintenanceAsync() { var maintenanceMode = await _appConfigRepository.GetByKeyAsync("maintenance_mode"); var maintenanceMessage = await _appConfigRepository.GetByKeyAsync("maintenance_message"); var maintenanceEndTime = await _appConfigRepository.GetByKeyAsync("maintenance_end_time"); return new MaintenanceResponseDto { IsMaintenance = string.Equals(maintenanceMode?.ConfigValue, "true", StringComparison.OrdinalIgnoreCase), MaintenanceMsg = maintenanceMessage?.ConfigValue, EstimatedEndTime = maintenanceEndTime?.ConfigValue }; } }