using FlexJobApi.Core; using Furion.DatabaseAccessor; using Mapster; using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.UserServer.Application { /// /// 电子签配置查询处理器 /// public class ElectronSignSettingQueryHandler( IRepository rep, IRepository repEnterpriseElectronSignSetting ) : IRequestHandler> { private readonly IRepository rep = rep; private readonly IRepository repEnterpriseElectronSignSetting = repEnterpriseElectronSignSetting; /// /// 查询已启用的电子签配置 /// /// /// /// public async Task> Handle(GetEnabledElectronSignSettingsQuery request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var q = rep.AsQueryable().AsNoTracking(); if (request.All != true) { q = q.Where(it => !it.IsDisabled); } if (logier.Type == EnumUserType.Enterprise) { request.EnterpriseId = logier.EnterpriseId; } if (request.EnterpriseId.HasValue) { var accesses = await repEnterpriseElectronSignSetting.AsQueryable() .Where(it => it.EnterpriseId == request.EnterpriseId) .Select(it => it.ElectronSignAccess) .ToListAsync(); q = q.Where(it => accesses.Contains(it.Access)); } return await q .ProjectToType() .ToListAsync(); } } }