namespace SimpleAdmin.Application;
/// 合同模板主档案;具体 DOCX 文件、变量与适用范围均挂在此档案下。
public class OnboardingContractTemplateService : DbRepository, IOnboardingContractTemplateService
{
public async Task> Page(OnboardingContractTemplatePageInput input)
{
return await Context.Queryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.TemplateName), it => it.TemplateName.Contains(input.TemplateName) || it.TemplateCode.Contains(input.TemplateName))
.WhereIF(!string.IsNullOrWhiteSpace(input.ContractType), it => it.ContractType == input.ContractType)
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.TemplateName)
.ToPagedListAsync(input.PageNum, input.PageSize);
}
public async Task Detail(BaseIdInput input) => await GetByIdAsync(input.Id) ?? throw Oops.Bah("合同模板不存在");
public async Task Add(OnboardingContractTemplateAddInput input)
{
await EnsureCodeUnique(input.TemplateCode, 0);
await InsertAsync(input.Adapt());
}
public async Task Edit(OnboardingContractTemplateEditInput input)
{
await Detail(new BaseIdInput { Id = input.Id });
await EnsureCodeUnique(input.TemplateCode, input.Id);
await UpdateAsync(input.Adapt());
}
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0) return;
if (await Context.Queryable().AnyAsync(it => input.Ids.Contains(it.TemplateId))) throw Oops.Bah("模板已有版本,不能删除");
if (await Context.Queryable().AnyAsync(it => input.Ids.Contains(it.TemplateId))) throw Oops.Bah("模板已配置适用范围,不能删除");
if (await Context.Queryable().AnyAsync(it => input.Ids.Contains(it.TemplateId))) throw Oops.Bah("模板已生成入职合同,不能删除");
await DeleteByIdsAsync(input.Ids.Cast