using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Mapster;
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.CommonServer.Application
{
///
/// 字典类别命令处理器
///
public class DictionaryCategoryCommandHandler(
IRepository rep,
IRepository repDictionaryData
) :
IRequestHandler,
IRequestHandler
{
private readonly IRepository rep = rep;
private readonly IRepository repDictionaryData = repDictionaryData;
///
/// 删除数据字典类别
///
///
///
///
public Task Handle(DeleteDictionaryCategoryCommand request, CancellationToken cancellationToken)
{
return DbUtils.DeleteData(request, null, cancellationToken);
}
///
/// 保存数据字典类别
///
///
///
///
[UnitOfWork]
public async Task Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken)
{
var entity = await request.SaveData(
null,
it => it.Id != request.Id && it.Code == request.Code,
(entity) =>
{
if (request.Id.HasValue && entity.Code != request.Code)
{
throw Oops.Oh(EnumErrorCodeType.s400, "编号不可修改");
//var data = repDictionaryData.AsQueryable()
// .Where(it => it.CategoryId == entity.Id)
// .ToList();
//foreach (var item in data)
//{
// item.Code = item.Code.Replace($"{entity.Code}-", $"{request.Code}-");
//}
}
request.Adapt(entity);
},
cancellationToken);
return entity.Id;
}
}
}