| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) |
| | | public async Task<GetTaskInfoQueryResult> Handle(GetTaskInfoQuery request, CancellationToken cancellationToken) |
| | | { |
| | | return TaskInfoRepository.GetQueryable(rep) |
| | | var model = await TaskInfoRepository.GetQueryable(rep) |
| | | .Where(it => it.Id == request.Id) |
| | | .ProjectToType<GetTaskInfoQueryResult>() |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | model.EnterpriseName = await rep.Change<Enterprise>().AsQueryable().AsNoTracking() |
| | | .Where(it => it.EnterpriseAuthId == model.EnterpriseId) |
| | | .Select(it => it.EnterpriseAuth.EnterpriseName) |
| | | .FirstOrDefaultAsync(); |
| | | model.TaskCount = await rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.EnterpriseId == model.EnterpriseId && it.ReleaseStatus == EnumTaskReleaseStatus.Stopped) |
| | | .CountAsync(); |
| | | return model; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | public Task<PagedListQueryResult<GetTaskInfosQueryResultItem>> Handle(GetTaskInfosQuery request, CancellationToken cancellationToken) |
| | | { |
| | | return request.PageModel.GetPagedListAsync<TaskInfo, GetTaskInfosQueryResultItem>( |
| | | q => |
| | | var q = TaskInfoRepository.GetQueryable(rep); |
| | | if (request.Keywords.IsNotNull()) |
| | | { |
| | | q = TaskInfoRepository.GetQueryable(rep); |
| | | return q; |
| | | }); |
| | | q = q.Where(it => it.Name.Contains(request.Keywords)); |
| | | } |
| | | if (request.Time.HasValue) |
| | | { |
| | | q = q.Where(it => it.BeginTime <= request.Time && request.Time <= it.EndTime); |
| | | } |
| | | if (request.CityCode.IsNotNull()) |
| | | { |
| | | q = q.Where(it => it.CityCode == request.CityCode); |
| | | } |
| | | if (request.SettlementCycle.HasValue) |
| | | { |
| | | q = q.Where(it => it.SettlementCycle == request.SettlementCycle); |
| | | } |
| | | if (request.BenefitCodes.IsNotNull()) |
| | | { |
| | | q = q.Where(it => it.Benefits.Any(b => request.BenefitCodes.Contains(b.BenefitCode))); |
| | | } |
| | | if (request.GenderLimit.HasValue) |
| | | { |
| | | q = q.Where(it => it.GenderLimit == request.GenderLimit); |
| | | } |
| | | if (request.Status.HasValue) |
| | | { |
| | | q = q.Where(it => it.Status == request.Status); |
| | | } |
| | | if (request.ReleaseStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.ReleaseStatus == request.ReleaseStatus); |
| | | } |
| | | if (request.RecommendStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.RecommendStatus == request.RecommendStatus); |
| | | } |
| | | var s = from t in q |
| | | join tu in rep.Change<TaskInfoUser>().AsQueryable().AsNoTracking() on t.Id equals tu.TaskInfoId into tug |
| | | select new GetTaskInfosQueryResultItem |
| | | { |
| | | Id = t.Id, |
| | | Name = t.Name, |
| | | Code = t.Code, |
| | | BillingMethod = t.BillingMethod, |
| | | ServiceFee = t.ServiceFee, |
| | | SettlementCycle = t.SettlementCycle, |
| | | GenderLimit = t.GenderLimit, |
| | | UserCount = tug.Count(), |
| | | Status = t.Status, |
| | | BeginTime = t.BeginTime, |
| | | EndTime = t.EndTime, |
| | | ReleaseStatus = t.ReleaseStatus |
| | | }; |
| | | return request.PageModel.GetPagedListAsync(s, cancellationToken); |
| | | } |
| | | } |
| | | } |