using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Attributes;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Mapster;
namespace Dlhis.Basic.Organization.Services.Implements;
public class GainfoService : IGainfoService
{
private readonly IGainfoStore _gainfoStore;
private readonly IDbContext _dbContext;
public GainfoService(IGainfoStore gainfoStore, IDbContext dbContext)
{
_gainfoStore = gainfoStore;
_dbContext = dbContext;
}
///
/// 档案分页
///
///
///
public Task> GetPageAsync(GainfoPageRequest request)
{
var page = _gainfoStore.Queryable(request.gainfoStatus)
.Select()
.ToPageListAsync(request);
return page;
}
///
///保存档案号
///
///
///
public async Task SaveAsync(GainfoSaveRequest request)
{
var gainfos = new List();
GainfoEntity aginfoEntity = request.Adapt();
aginfoEntity.Guestno = "F" + Guid.NewGuid().ToString();
gainfos.Add(aginfoEntity);
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos);
}
///
///修改档案号
///
///
///
public async Task UpdateAsync(GainfoSaveRequest request)
{
var gainfo = await _gainfoStore.Queryable(request.GainfoStatus).Where(x => x.Id == request.Id).FirstAsync();
gainfo.ThrowIfNull("档案数据不存在,无法更新");
request.Adapt(gainfo);
var gainfos = new List()
{
gainfo
};
await _gainfoStore.UpdateAsync(request.GainfoStatus, gainfos);
}
///
/// 正式转离职
///
///
///
///
[Transactional]
public async Task DimissionAsync(GainfoDImissionRequest request)
{
var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.Working)
.Where(x => x.Guestno == request.UserId)
.FirstAsync();
gainfo.ThrowIfNull($"该档案不存在");
//添加到离职表
var gainfos = new List
{
gainfo
};
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Leave, gainfos);
//删除原数据
await _gainfoStore.DeleteAsync(GainfoStatusEnumType.Working, gainfos);
}
///
/// 临时转正式
///
///
///
///
public async Task OnboardingAsync(GainfoDImissionRequest request)
{
var gainfo = await _gainfoStore.Queryable(GainfoStatusEnumType.External)
.Where(x => x.Guestno == request.UserId)
.FirstAsync();
gainfo.ThrowIfNull($"该档案不存在");
//添加到正式表
var gainfos = new List
{
gainfo
};
await _gainfoStore.InsertAsync(GainfoStatusEnumType.Working, gainfos);
}
///
/// 获取所有字段
///
///
public List GetAllFields()
{
var entityType = typeof(Gainfofields);
var propertyNames = entityType.GetProperties().Select(p => p.Name).ToList();
return propertyNames;
}
///
/// 获取固定字段数据
///
///
///
public List GetAllFieldData(string fieldName)
{
var columnData = _dbContext.Queryable().Select(fieldName).ToList();
return columnData;
}
//-------------------------------------------help methods ------------------------------------------------
}