| | |
| | | /// </summary> |
| | | public class TaskUserCommandHandler( |
| | | IRepository<TaskInfoUser> rep, |
| | | IRepository<UserTaskCollect> repUserTaskCollect |
| | | IRepository<TaskUserCollect> repTaskUserCollect |
| | | ) : |
| | | IRequestHandler<CollectTaskCommand, int>, |
| | | IRequestHandler<ClearTaskCollectCommand, int>, |
| | | IRequestHandler<SetTaskUserHireCommand, Guid>, |
| | | IRequestHandler<SetTaskUserArrangeCommand, Guid> |
| | | { |
| | | private readonly IRepository<TaskInfoUser> rep = rep; |
| | | private readonly IRepository<UserTaskCollect> repUserTaskCollect = repUserTaskCollect; |
| | | private readonly IRepository<TaskUserCollect> repTaskUserCollect = repTaskUserCollect; |
| | | |
| | | /// <summary> |
| | | /// 收藏任务 |
| | |
| | | public async Task<int> Handle(CollectTaskCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var collects = await repUserTaskCollect.AsQueryable().AsNoTracking() |
| | | var collects = await repTaskUserCollect.AsQueryable().AsNoTracking() |
| | | .Where(it => request.Ids.Contains(it.TaskInfoId) && it.UserId == logier.Id) |
| | | .ToListAsync(cancellationToken); |
| | | if (request.IsCollect) |
| | |
| | | var addIds = request.Ids.Where(it => !collects.Any(c => c.TaskInfoId == it)).ToList(); |
| | | foreach (var addId in addIds) |
| | | { |
| | | var entity = new UserTaskCollect |
| | | var entity = new TaskUserCollect |
| | | { |
| | | TaskInfoId = addId, |
| | | UserId = logier.Id |
| | | }; |
| | | await repUserTaskCollect.InsertAsync(entity); |
| | | await repTaskUserCollect.InsertAsync(entity); |
| | | } |
| | | return addIds.Count; |
| | | } |
| | | else |
| | | { |
| | | await repUserTaskCollect.DeleteAsync(collects); |
| | | await repTaskUserCollect.DeleteAsync(collects); |
| | | return collects.Count; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 清空已停止的任务收藏 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<int> Handle(ClearTaskCollectCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var entities = await repTaskUserCollect.AsQueryable() |
| | | .Where(it => it.TaskInfo.ReleaseStatus == EnumTaskReleaseStatus.Stopped && it.UserId == logier.Id) |
| | | .ToListAsync(cancellationToken); |
| | | if (entities.IsNotNull()) |
| | | { |
| | | foreach (var entity in entities) |
| | | { |
| | | await repTaskUserCollect.DeleteAsync(entity); |
| | | } |
| | | } |
| | | return entities.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | it.TaskInfo.EnterpriseId == logier.EnterpriseId |
| | | && it.Id == request.Id) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "该报名信息"); |
| | | if (entity.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "该灵工已录用"); |
| | | entity.EnterpriseEmployee.HireStatus = request.HireStatus; |
| | | if (entity.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass) |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "报名信息"); |
| | | if (entity.HireStatus == EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "灵工已录用"); |
| | | entity.HireStatus = request.HireStatus; |
| | | if (entity.HireStatus == EnumTaskUserHireStatus.Pass) |
| | | { |
| | | entity.EnterpriseEmployee.HireTime = DateTime.Now; |
| | | entity.EnterpriseEmployee.UserSignContractStatus = EnumTaskUserSignContractStatus.Pass; |
| | | entity.EnterpriseEmployee.UserSignContractTime = DateTime.Now; |
| | | entity.EnterpriseEmployee.EnterpriseSignContractStatus = EnumTaskUserSignContractStatus.Pass; |
| | | entity.EnterpriseEmployee.EnterpriseSignContractTime = DateTime.Now; |
| | | |
| | | entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; |
| | | entity.HireTime = DateTime.Now; |
| | | if (entity.EnterpriseEmployee.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Effect) |
| | | { |
| | | entity.ArrangeStatus = EnumTaskUserArrangeStatus.Wait; |
| | | } |
| | | } |
| | | await rep.UpdateAsync(entity); |
| | | return entity.Id; |
| | |
| | | it.TaskInfo.EnterpriseId == logier.EnterpriseId |
| | | && it.Id == request.Id) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "该报名信息"); |
| | | if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "该灵工已安排"); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "报名信息"); |
| | | if (entity.EnterpriseEmployee.EnterpriseSignContractStatus != EnumTaskUserSignContractStatus.Effect) throw Oops.Oh(EnumErrorCodeType.s510, "灵工未签约"); |
| | | if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "灵工已安排"); |
| | | entity.ArrangeStatus = request.ArrangeStatus; |
| | | if (entity.ArrangeStatus == EnumTaskUserArrangeStatus.Complete) |
| | | { |