using OrpaonVision.Core.Configuration;
using OrpaonVision.Core.Configuration.Contracts;
using OrpaonVision.Core.Results;
namespace OrpaonVision.ConfigApp.Configuration.Services;
///
/// 规则配置应用服务。
///
public sealed class RuleConfigurationAppService : IRuleConfigurationAppService
{
private readonly IRuleConfigurationStore _ruleConfigurationStore;
///
/// 构造函数。
///
public RuleConfigurationAppService(IRuleConfigurationStore ruleConfigurationStore)
{
_ruleConfigurationStore = ruleConfigurationStore;
}
///
public Task SaveDraftAsync(RuleConfigurationDraftDto draft, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.SaveDraft(draft));
}
///
public Task> PublishAsync(string productTypeCode, string publishedBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.Publish(productTypeCode, publishedBy));
}
///
public Task> GetLatestPublishedVersionAsync(string productTypeCode, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetLatestPublishedVersion(productTypeCode));
}
///
public Task> CompareVersionsAsync(string productTypeCode, string sourceVersionNo, string targetVersionNo, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.CompareVersions(productTypeCode, sourceVersionNo, targetVersionNo));
}
///
public Task> RollbackToVersionAsync(string productTypeCode, string targetVersionNo, string rolledBackBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.RollbackToVersion(productTypeCode, targetVersionNo, rolledBackBy));
}
///
public Task DisableVersionAsync(string productTypeCode, string versionNo, string disabledBy, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.DisableVersion(productTypeCode, versionNo, disabledBy));
}
///
public Task> GetVersionDetailAsync(string productTypeCode, string versionNo, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetVersionDetail(productTypeCode, versionNo));
}
///
public Task>> GetVersionPagedListAsync(string productTypeCode, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetVersionPagedList(productTypeCode, pageIndex, pageSize));
}
///
public Task>> GetRecentAuditsAsync(string productTypeCode, int take = 20, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
return Task.FromResult(_ruleConfigurationStore.GetRecentAudits(productTypeCode, take));
}
}