using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using CoreAgent.Domain.Entities;
using CoreAgent.Domain.Interfaces;
using Microsoft.Extensions.Logging;
namespace CoreAgent.Infrastructure.Services
{
///
/// 网络配置服务实现
///
public class NetworkConfigurationService : INetworkConfigurationService
{
private readonly INetworkConfigurationRepository _repository;
private readonly ILogger _logger;
///
/// 构造函数
///
/// 网络配置仓储
/// 日志记录器
public NetworkConfigurationService(
INetworkConfigurationRepository repository,
ILogger logger)
{
_repository = repository;
_logger = logger;
}
///
/// 创建网络配置
///
public async Task<(bool Success, NetworkConfiguration Configuration)> CreateAsync(
string configKey,
string ragConfig,
List coreOrImsConfigs,
string apn,
List band,
string comment = null)
{
try
{
_logger.LogInformation("开始创建网络配置,配置键:{ConfigKey}", configKey);
_logger.LogDebug("创建网络配置参数 - RAN配置:{RagConfig}, APN:{Apn}, 频段:{Band}, 说明:{Comment}",
ragConfig, apn, string.Join(",", band), comment);
// 检查配置键是否已存在
_logger.LogInformation("检查配置键是否存在:{ConfigKey}", configKey);
var existingConfig = await _repository.GetByConfigKeyAsync(configKey);
if (existingConfig != null)
{
_logger.LogWarning("配置键已存在,创建失败:{ConfigKey}", configKey);
return (false, null);
}
_logger.LogInformation("开始创建新的网络配置:{ConfigKey}", configKey);
var config = await _repository.CreateAsync(configKey, ragConfig, coreOrImsConfigs, apn, band, comment);
_logger.LogInformation("网络配置创建成功:{ConfigKey}", configKey);
_logger.LogDebug("网络配置详情 - RAN配置:{RagConfig}, APN:{Apn}, 频段:{Band}, 说明:{Comment}",
config.RagConfig, config.Apn, string.Join(",", config.Band), config.Comment);
return (true, config);
}
catch (Exception ex)
{
_logger.LogError(ex, "创建网络配置失败,配置键:{ConfigKey},错误信息:{ErrorMessage}",
configKey, ex.Message);
return (false, null);
}
}
///
/// 保存网络配置
///
public Task SaveAsync(NetworkConfiguration configuration)
{
return _repository.SaveAsync(configuration);
}
///
/// 删除网络配置
///
public Task DeleteAsync(string configKey)
{
return _repository.DeleteAsync(configKey);
}
///
/// 获取所有网络配置
///
public Task> GetAllAsync()
{
return _repository.GetAllAsync();
}
///
/// 根据配置键获取网络配置
///
public Task GetByConfigKeyAsync(string configKey)
{
return _repository.GetByConfigKeyAsync(configKey);
}
}
}