zhengyiming
4 天以前 844ef8147c4e61c22d5aa40deab4b026638e1781
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Queries/TaskCheckReceiveQueryHandler.cs
@@ -36,18 +36,23 @@
        /// <returns></returns>
        public async Task<GetCheckReceiveTasksQueryResult> Handle(GetCheckReceiveTasksQuery request, CancellationToken cancellationToken)
        {
            var now = DateTime.Now;
            var logier = JwtUtils.GetCurrentLogier();
            var q = repTaskInfo.AsQueryable().AsNoTracking()
                .OrderBy(it => it.CreatedTime)
                .AsQueryable();
                .Where(it => it.BeginTime <= now.Date && now.Date <= it.EndTime);
            if (logier.Type == EnumUserType.Personal)
            {
                q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.EnterpriseEmployee.UserId == logier.Id));
                q = q.Where(it => it.TaskInfoUsers.Any(tu =>
                    tu.EnterpriseEmployee.UserId == logier.Id
                    && tu.ArrangeStatus == EnumTaskUserArrangeStatus.Complete));
            }
            else if (logier.Type == EnumUserType.Enterprise)
            {
                q = q.Where(it => it.EnterpriseId == logier.EnterpriseId);
                q = q.Where(it =>
                    it.EnterpriseId == logier.EnterpriseId
                    && it.Status == EnumTaskStatus.Complete);
            }
            if (request.Keywords.IsNotNull())
            {
@@ -69,6 +74,7 @@
                }
                q = q.Where(it =>
                    (logier.Type == EnumUserType.Enterprise ? it.EnterpriseId == logier.EnterpriseId : true)
                    && it.BeginTime.Date <= request.Date.Value && request.Date.Value <= it.EndTime.Date
                    && it.TaskInfoUsers.Any(tu =>
                        (logier.Type == EnumUserType.Personal ? tu.EnterpriseEmployee.UserId == logier.Id : true)
                        && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit
@@ -214,17 +220,31 @@
            var s = q.Select(it => new GetCheckReceiveTaskUserSubmitsQueryResultItem
            {
                Id = it.Id,
                Date = it.Date,
                CreatedTime = it.CreatedTime,
                Files = it.Files.Select(f => f.File).ToList(),
                CheckReceiveStatus = it.CheckReceiveStatus,
                CheckReceiveTime = it.CheckReceiveTime,
            });
            var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>(s, cancellationToken);
            result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking()
                .Where(it => it.Id == request.Id)
                .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>();
            result.ObjectData.EnterpriseEmployeeUser.IsBindBankCard = await repTaskInfo.Change<UserBankCard>().AsQueryable().AsNoTracking()
                .AnyAsync(it => it.UserId == result.ObjectData.EnterpriseEmployeeUser.Id);
            if (request.Id.HasValue)
            {
                result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking()
                    .Where(it => it.Id == request.Id)
                    .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>();
            }
            else if (request.TaskInfoId.HasValue)
            {
                result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking()
                    .Where(it => it.TaskInfoId == request.TaskInfoId)
                    .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>();
            }
            if (result.ObjectData != null)
            {
                result.ObjectData.EnterpriseEmployeeUser.IsBindBankCard = await repTaskInfo.Change<UserBankCard>()
                    .AsQueryable().AsNoTracking()
                    .AnyAsync(it => it.UserId == result.ObjectData.EnterpriseEmployeeUser.Id);
            }
            return result;
        }