using DocumentFormat.OpenXml.Vml.Office; using Hotline.Application.Snapshot.Contracts; using Hotline.Caching.Interfaces; using Hotline.Orders; using Hotline.Settings; using Hotline.Share.Dtos.Snapshot; using Hotline.Share.Tools; using Hotline.Snapshot; using Hotline.Snapshot.IRepository; using Hotline.ThirdAccountDomainServices; using Hotline.Tools; using Mapster; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XF.Domain.Dependency; using XF.Domain.Exceptions; using XF.Domain.Repository; namespace Hotline.Application.Snapshot; public class SnapshotUserApplication : ISnapshotUserApplication, IScopeDependency { private readonly ICitizenRepository _citizenRepository; private readonly ISystemDicDataCacheManager _dicData; private readonly IRepository _safetyTypeRepository; public SnapshotUserApplication(ICitizenRepository citizenRepository, ISystemDicDataCacheManager dicData, IRepository safetyTypeRepository) { _citizenRepository = citizenRepository; _dicData = dicData; _safetyTypeRepository = safetyTypeRepository; } public async Task AddCitizenRelationSafetyType(AddCitizenRelationSafetyTypeInDto dto, CancellationToken token) { dto.ValidateObject(); var safeType = new SafetyType { Id = dto.SafetyTypeId }; foreach (var item in dto.CitizenIds) { safeType.Citizens.Add(new Citizen { Id = item }); } _safetyTypeRepository.AddNav(safeType); } public ISugarQueryable GetCitizenRelationSafetyType(CitizenRelationSafetyTypeInDto dto) { var query = _citizenRepository.Queryable() .LeftJoin((citizen, relation) => citizen.Id == relation.CitizenId) .LeftJoin((citizen, relation, safety) => relation.SafetyTypeId == safety.Id) .WhereIF(dto.SafetyTypeId.NotNullOrEmpty(), (citizen, relation, safety) => safety.Id == dto.SafetyTypeId) .Select((citizen, relation, safety) => new CitizenRelationSafetyTypeOutDto { CitizenId = citizen.Id, CitizenName = citizen.Name, PhoneNumber = citizen.PhoneNumber, SafetyTypeName = safety.Name, SafetyTypeId = safety.Id }); return query; } }