using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using ZhonTai.Admin.Core.Dto;
using ZhonTai.Admin.Services;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Output;
using NPP.SmartSchedue.Api.Repositories.Personnel;
using NPP.SmartSchedue.Api.Contracts.Domain.Personnel;
using ZhonTai.DynamicApi;
using ZhonTai.DynamicApi.Attributes;
namespace NPP.SmartSchedue.Api.Services.Personnel;
///
/// 人员工作限制服务
///
[DynamicApi(Area = "app")]
public class PersonnelWorkLimitService : BaseService, IPersonnelWorkLimitService, IDynamicApi
{
private readonly PersonnelWorkLimitRepository _personnelWorkLimitRepository;
public PersonnelWorkLimitService(PersonnelWorkLimitRepository personnelWorkLimitRepository)
{
_personnelWorkLimitRepository = personnelWorkLimitRepository;
}
///
/// 查询
///
///
///
public async Task GetAsync(long id)
{
var output = await _personnelWorkLimitRepository.Select
.WhereDynamic(id)
.ToOneAsync();
return output;
}
///
/// 查询分页
///
///
///
[HttpPost]
public async Task> GetPageAsync(PageInput input)
{
var list = await _personnelWorkLimitRepository.Select
.WhereIf(input.Filter?.PersonnelId.HasValue == true, a => a.PersonnelId == input.Filter.PersonnelId)
.Count(out var total)
.OrderByDescending(a => a.Id)
.Page(input.CurrentPage, input.PageSize)
.ToListAsync();
var data = new PageOutput()
{
List = list,
Total = total
};
return data;
}
///
/// 添加
///
///
///
public async Task AddAsync(PersonnelWorkLimitAddInput input)
{
var entity = Mapper.Map(input);
var result = await _personnelWorkLimitRepository.InsertAsync(entity);
return result.Id;
}
///
/// 修改
///
///
///
public async Task UpdateAsync(PersonnelWorkLimitUpdateInput input)
{
var entity = await _personnelWorkLimitRepository.GetAsync(input.Id);
Mapper.Map(input, entity);
await _personnelWorkLimitRepository.UpdateAsync(entity);
}
///
/// 删除
///
///
///
public async Task DeleteAsync(long id)
{
await _personnelWorkLimitRepository.DeleteAsync(id);
}
///
/// 软删除
///
///
///
public async Task SoftDeleteAsync(long id)
{
await _personnelWorkLimitRepository.SoftDeleteAsync(id);
}
///
/// 批量软删除
///
///
///
public async Task BatchSoftDeleteAsync(long[] ids)
{
await _personnelWorkLimitRepository.SoftDeleteAsync(ids);
}
///
/// 获取人员工作限制
///
///
///
public async Task GetPersonnelWorkLimitAsync(long personnelId)
{
return await _personnelWorkLimitRepository.Select
.Where(a => a.PersonnelId == personnelId)
.FirstAsync();
}
///
/// 根据人员ID获取其所有工作限制记录
///
/// 人员ID
/// 人员的所有工作限制记录
public async Task> GetByPersonnelIdAsync(long personnelId)
{
try
{
var workLimitations = await _personnelWorkLimitRepository.Select
.Where(pwl => pwl.PersonnelId == personnelId)
.OrderByDescending(pwl => pwl.CreatedTime)
.ToListAsync();
return workLimitations ?? new List();
}
catch (Exception ex)
{
return new List();
}
}
}