| | |
| | | /// <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); |
| | | } |
| | |
| | | var q = TaskInfoRepository.GetQueryable(rep, true, logier).Where(it => |
| | | it.TaskInfoUsers.Any(tu => |
| | | tu.EnterpriseEmployee.UserId == logier.Id |
| | | && tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Pass |
| | | && tu.ArrangeStatus == EnumTaskUserArrangeStatus.Complete)); |
| | | if (request.Status.HasValue) |
| | | { |
| | |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | q = q.Where(it => |
| | | it.TaskInfoUsers.Any(tu => |
| | | tu.EnterpriseEmployee.UserId == logier.Id |
| | | && (tu.EnterpriseEmployee.HireStatus == EnumTaskUserHireStatus.Wait |
| | | || tu.EnterpriseEmployee.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait))); |
| | | } |
| | | var s = q.Select(it => new GetPersonalHireTaskInfosQueryResultItem |
| | | { |