75 lines
3.0 KiB
C#
75 lines
3.0 KiB
C#
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<AppConfigResponseDto> GetTermsAsync()
|
|
{
|
|
var config = await _appConfigRepository.GetByKeyAsync("terms_url");
|
|
return new AppConfigResponseDto { Url = config?.ConfigValue };
|
|
}
|
|
|
|
public async Task<AppConfigResponseDto> GetPrivacyAsync()
|
|
{
|
|
var config = await _appConfigRepository.GetByKeyAsync("privacy_url");
|
|
return new AppConfigResponseDto { Url = config?.ConfigValue };
|
|
}
|
|
|
|
public async Task<AppVersionResponseDto> 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<AppSettingsResponseDto> 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<MaintenanceResponseDto> 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
|
|
};
|
|
}
|
|
}
|