| | |
| | | IRepository<EnterpriseEmployee> rep |
| | | ) : |
| | | IRequestHandler<GetEnterpriseEmployeesQuery, GetEnterpriseEmployeesQueryResult>, |
| | | IRequestHandler<GetEnterpriseEmployeeQuery, GetEnterpriseEmployeeQueryResult> |
| | | IRequestHandler<GetEnterpriseEmployeeQuery, GetEnterpriseEmployeeQueryResult>, |
| | | IRequestHandler<GetPersonalUserElectronSignsQuery, GetPersonalUserElectronSignsQueryResult>, |
| | | IRequestHandler<GetPersonalUserElectronSignQuery, GetPersonalUserElectronSignQueryResult> |
| | | { |
| | | private readonly IRepository<EnterpriseEmployee> rep = rep; |
| | | |
| | |
| | | } |
| | | if (request.HireStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.HireStatus == request.HireStatus); |
| | | q = q.Where(it => it.TaskInfoUsers.Any(tu => tu.HireStatus == request.HireStatus)); |
| | | } |
| | | if (request.IsReal.HasValue) |
| | | { |
| | |
| | | } |
| | | if (request.UserSignContractStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); |
| | | if (logier.ClientType == EnumClientType.Wxmp) |
| | | { |
| | | switch (request.UserSignContractStatus.Value) |
| | | { |
| | | case EnumTaskUserSignContractStatus.Wait: |
| | | q = q.Where(it => it.UserSignContractStatus == null || it.UserSignContractStatus == request.UserSignContractStatus); |
| | | break; |
| | | case EnumTaskUserSignContractStatus.Pass: |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass); |
| | | break; |
| | | case EnumTaskUserSignContractStatus.Stop: |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); |
| | | break; |
| | | default: |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus); |
| | | } |
| | | } |
| | | if (request.EnterpriseSignContractStatus.HasValue) |
| | | { |
| | |
| | | var s = q.Select(it => new GetEnterpriseEmployeesQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | Avatar = it.User.Avatar, |
| | | Name = it.Name, |
| | | Identity = it.Identity, |
| | | Gender = it.Gender, |
| | | Age = it.Age, |
| | | ContactPhoneNumber = it.ContactPhoneNumber, |
| | | UserIsReal = it.User.IsReal, |
| | | UserIsReal = it.User.IsReal == true, |
| | | RealMethod = it.User.RealMethod, |
| | | PersonalIdentityCode = it.User.PersonalIdentityCode, |
| | | PersonalIdentityContent = it.User.PersonalIdentity.Content, |
| | | EducationalBackgroundCode = it.User.EducationalBackgroundCode, |
| | | EducationalBackgroundContent = it.User.EducationalBackground.Content, |
| | | TaskCount = it.User.EnterpriseEmployees.Where(ee => ee.HireStatus == EnumTaskUserHireStatus.Pass).Sum(ee => ee.TaskInfoUsers.Count()), |
| | | TaskCount = it.User.EnterpriseEmployees.SelectMany(ee => ee.TaskInfoUsers).Count(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass), |
| | | WorkSeniority = it.User.WorkSeniority, |
| | | WorkExperience = it.User.WorkExperience, |
| | | HireStatus = it.HireStatus, |
| | | HireStatus = it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Pass) |
| | | ? EnumTaskUserHireStatus.Pass |
| | | : it.TaskInfoUsers.Any(tu => tu.HireStatus == EnumTaskUserHireStatus.Refuse) |
| | | ? EnumTaskUserHireStatus.Refuse |
| | | : EnumTaskUserHireStatus.Wait, |
| | | UserSignContractStatus = it.UserSignContractStatus, |
| | | HireTime = it.HireTime, |
| | | HireTime = it.TaskInfoUsers |
| | | .OrderBy(tu => tu.HireTime) |
| | | .Where(tu => tu.HireTime.HasValue) |
| | | .Select(tu => tu.HireTime) |
| | | .FirstOrDefault(), |
| | | UserRealTime = it.User.RealTime, |
| | | UserSignContractTime = it.UserSignContractTime, |
| | | EnterpriseSignContractStatus = it.EnterpriseSignContractStatus, |
| | | EnterpriseSignContractTime = it.EnterpriseSignContractTime |
| | | EnterpriseSignContractTime = it.EnterpriseSignContractTime, |
| | | ContractUrl = it.ContractUrl, |
| | | }); |
| | | return await request.PageModel.GetPagedListAsync<GetEnterpriseEmployeesQueryResult, GetEnterpriseEmployeesQueryResultItem>(s, cancellationToken); |
| | | } |
| | |
| | | .Select(it => it.CreatedTime as DateTimeOffset?) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | } |
| | | |
| | | |
| | | return model; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询个人用户签约列表 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<GetPersonalUserElectronSignsQueryResult> Handle(GetPersonalUserElectronSignsQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserId == logier.Id); |
| | | if (request.UserSignContractStatus.HasValue) |
| | | { |
| | | if (request.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass) |
| | | { |
| | | q = q.Where(it => it.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass); |
| | | } |
| | | else |
| | | { |
| | | q = q.Where(it => it.UserSignContractStatus == request.UserSignContractStatus.Value); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | q = q.Where(it => |
| | | it.UserSignContractStatus == EnumTaskUserSignContractStatus.Wait |
| | | || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Pass && it.EnterpriseSignContractStatus == EnumTaskUserSignContractStatus.Pass |
| | | || it.UserSignContractStatus == EnumTaskUserSignContractStatus.Stop); |
| | | } |
| | | var s = q.Select(it => new GetPersonalUserElectronSignsQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | EnterpriseName = it.Enterprise.EnterpriseName, |
| | | UserSignContractStatus = it.UserSignContractStatus, |
| | | }); |
| | | return await request.PageModel.GetPagedListAsync<GetPersonalUserElectronSignsQueryResult, GetPersonalUserElectronSignsQueryResultItem>(s, cancellationToken); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询个人用户签约详情 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<GetPersonalUserElectronSignQueryResult> Handle(GetPersonalUserElectronSignQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = rep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserId == logier.Id); |
| | | if (request.Id.HasValue) |
| | | { |
| | | q = q.Where(it => it.Id == request.Id); |
| | | } |
| | | |
| | | if (request.Code.IsNotNull()) |
| | | { |
| | | q = q.Where(it => it.ContractTemplate.Code == request.Code); |
| | | } |
| | | |
| | | var model = await q.GetDetail<EnterpriseEmployee, GetPersonalUserElectronSignQueryResult>(); |
| | | return model; |
| | | } |
| | | } |