| | |
| | | ) : |
| | | IRequestHandler<ImportEnterpriseEmployeesCommand, ImportEnterpriseEmployeesCommandResult>, |
| | | IRequestHandler<EditEnterpriseEmployeeCommand, Guid>, |
| | | IRequestHandler<InviteElectronSignCommand, Guid>, |
| | | IRequestHandler<InviteElectronSignCommand, int>, |
| | | IRequestHandler<PersonalUserElectronSignCommand, PersonalUserElectronSignCommandResult>, |
| | | IRequestHandler<EnterpriseUserElectronSignCommand, EnterpriseUserElectronSignCommandResult>, |
| | | IRequestHandler<StopElectronSignCommand, Guid> |
| | | IRequestHandler<StopElectronSignCommand, int> |
| | | { |
| | | private readonly IMediator mediator = mediator; |
| | | private readonly IRepository<EnterpriseEmployee> rep = rep; |
| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<Guid> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken) |
| | | public async Task<int> Handle(InviteElectronSignCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var entity = await rep.AsQueryable() |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id) |
| | | .FirstOrDefaultAsync(); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "灵工"); |
| | | if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, "已邀请"); |
| | | if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "已签约"); |
| | | |
| | | await mediator.Send(new CheckContractTemplateCommand |
| | | { |
| | | Id = request.ContractTemplateId |
| | | }, cancellationToken); |
| | | |
| | | var entities = await rep.AsQueryable() |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id)) |
| | | .ToListAsync(); |
| | | foreach (var id in request.Ids) |
| | | { |
| | | var entity = entities.FirstOrDefault(it => it.Id == id); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "灵工"); |
| | | if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s400, $"已邀请{entity.Name}"); |
| | | if (entity.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"已签约{entity.Name}"); |
| | | entity.ContractTemplateId = request.ContractTemplateId; |
| | | entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Wait; |
| | | entity.UserSignContractTime = null; |
| | |
| | | // Type = EnumEnterpriseCostType.ElectronSign |
| | | //}); |
| | | await rep.UpdateAsync(entity); |
| | | return entity.Id; |
| | | } |
| | | return entities.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<Guid> Handle(StopElectronSignCommand request, CancellationToken cancellationToken) |
| | | public async Task<int> Handle(StopElectronSignCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var entity = await rep.AsQueryable() |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Id == request.Id) |
| | | .FirstOrDefaultAsync(); |
| | | var entities = await rep.AsQueryable() |
| | | .Include(it => it.Contracts) |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && request.Ids.Contains(it.Id)) |
| | | .ToListAsync(); |
| | | foreach (var id in request.Ids) |
| | | { |
| | | var entity = entities.FirstOrDefault(it => it.Id == id); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "灵工"); |
| | | if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, "未签约"); |
| | | if (entity.UserSignContractStatus != EnumTaskUserSignContractStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s400, $"未签约{entity.Name}"); |
| | | entity.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; |
| | | entity.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; |
| | | await rep.UpdateAsync(entity); |
| | | |
| | | var contract = await repEnterpriseEmployeeContract.AsQueryable() |
| | | var contract = entity.Contracts |
| | | .OrderByDescending(it => it.CreatedTime) |
| | | .Where(it => it.EnterpriseEmployeeId == entity.Id) |
| | | .FirstOrDefaultAsync(); |
| | | if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, "合同"); |
| | | .FirstOrDefault(); |
| | | if (contract == null) throw Oops.Oh(EnumErrorCodeType.s404, $"与{entity.Name}的合同"); |
| | | contract.UserSignContractStatus = EnumTaskUserSignContractStatus.Stop; |
| | | contract.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Stop; |
| | | await repEnterpriseEmployeeContract.UpdateAsync(contract); |
| | | } |
| | | |
| | | var taskUsers = await repTaskInfoUser.AsQueryable() |
| | | .Where(it => it.EnterpriseEmployeeId == entity.Id && it.HireStatus == EnumTaskUserHireStatus.Pass) |
| | | .Where(it => |
| | | it.HireStatus == EnumTaskUserHireStatus.Pass |
| | | && request.Ids.Contains(it.EnterpriseEmployeeId)) |
| | | .ToListAsync(); |
| | | if (taskUsers.IsNotNull()) |
| | | { |
| | |
| | | await repTaskInfoUser.UpdateAsync(taskUsers); |
| | | } |
| | | |
| | | return entity.Id; |
| | | return entities.Count; |
| | | } |
| | | } |
| | | } |