namespace SimpleAdmin.Application;
///
/// 实现入职业务公司业务能力。
///
public class OnboardingCompanyService : DbRepository, IOnboardingCompanyService
{
///
/// 分页查询入职业务公司。
///
public async Task> Page(OnboardingCompanyPageInput input)
{
return await Context.Queryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.CompanyCode), it => it.CompanyCode.Contains(input.CompanyCode))
.WhereIF(!string.IsNullOrWhiteSpace(input.CompanyName), it => it.CompanyName.Contains(input.CompanyName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.CreateTime)
.ToPagedListAsync(input.PageNum, input.PageSize);
}
///
/// 查询全部已启用的入职业务公司。
///
public Task> ListEnabled()
{
return Context.Queryable()
.Where(it => it.Status == "enable")
.OrderBy(it => it.CompanyName)
.ToListAsync();
}
///
/// 查询公司详情。
///
public async Task Detail(BaseIdInput input)
{
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("公司不存在");
}
///
/// 新增入职业务公司。
///
public async Task Add(OnboardingCompanyAddInput input)
{
await EnsureCodeUnique(input.CompanyCode, 0);
await InsertAsync(input.Adapt());
}
///
/// 编辑入职业务公司。
///
public async Task Edit(OnboardingCompanyEditInput input)
{
await Detail(new BaseIdInput { Id = input.Id });
await EnsureCodeUnique(input.CompanyCode, input.Id);
await UpdateAsync(input.Adapt());
}
///
/// 删除未被岗位、任务或员工引用的公司。
///
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0)
return;
var hasPositions = await Context.Queryable()
.AnyAsync(it => input.Ids.Contains(it.CompanyId));
if (hasPositions)
throw Oops.Bah("公司下仍有岗位,不能删除");
var hasTasks = await Context.Queryable()
.AnyAsync(it => input.Ids.Contains(it.CompanyId));
if (hasTasks)
throw Oops.Bah("公司已有入职任务,不能删除");
var hasEmployees = await Context.Queryable()
.AnyAsync(it => input.Ids.Contains(it.CompanyId));
if (hasEmployees)
throw Oops.Bah("公司已有正式员工,不能删除");
await DeleteByIdsAsync(input.Ids.Cast