| | |
| | | /// <returns></returns> |
| | | public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var now = DateTime.Now; |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var model = await TaskInfoRepository.GetQueryable(rep) |
| | | .Where(it => it.Id == request.Id) |
| | |
| | | .CountAsync(it => it.TaskInfoId == model.Id); |
| | | if (logier != null && logier.Type == EnumUserType.Personal) |
| | | { |
| | | model.HireStatus = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() |
| | | var taskUser = await rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() |
| | | .Include(it => it.EnterpriseEmployee) |
| | | .Where(it => it.TaskInfoId == model.Id && it.EnterpriseEmployee.UserId == logier.Id) |
| | | .Select(it => it.EnterpriseEmployee.HireStatus) |
| | | .Select(it => new |
| | | { |
| | | it.Id, |
| | | it.EnterpriseEmployee.HireStatus, |
| | | it.EnterpriseEmployee.UserSignContractStatus |
| | | }) |
| | | .FirstOrDefaultAsync(); |
| | | if (taskUser != null) |
| | | { |
| | | model.HireStatus = taskUser.HireStatus; |
| | | model.ApplyButton = taskUser.HireStatus == EnumTaskUserHireStatus.Wait |
| | | ? GetTaskInfoQueryResultApplyButton.WaitHire |
| | | : taskUser.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait |
| | | ? GetTaskInfoQueryResultApplyButton.WaitSignContract |
| | | : null; |
| | | model.HireButton = now <= model.EndTime |
| | | ? GetTaskInfoQueryResultHireButton.InProcess |
| | | : GetTaskInfoQueryResultHireButton.Completed; |
| | | if (model.HireButton == GetTaskInfoQueryResultHireButton.InProcess && model.BeginTime <= now) |
| | | { |
| | | var submit = await rep.Change<TaskInfoUserSubmit>().AsQueryable().AsNoTracking() |
| | | .AnyAsync(it => it.TaskInfoUserId == taskUser.Id && it.CheckReceiveStatus >= EnumTaskUserSubmitCheckReceiveStatus.Wait); |
| | | if (!submit) |
| | | { |
| | | model.HireButton = GetTaskInfoQueryResultHireButton.ApplyCheckReceive; |
| | | } |
| | | } |
| | | } |
| | | model.IsCollected = await rep.Change<UserTaskCollect>().AsQueryable().AsNoTracking() |
| | | .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id); |
| | | } |