12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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<SafetyType> _safetyTypeRepository;
- public SnapshotUserApplication(ICitizenRepository citizenRepository, ISystemDicDataCacheManager dicData, IRepository<SafetyType> safetyTypeRepository)
- {
- _citizenRepository = citizenRepository;
- _dicData = dicData;
- _safetyTypeRepository = safetyTypeRepository;
- }
- public async Task AddCitizenRelationSafetyType(AddCitizenRelationSafetyTypeInDto dto, CancellationToken token)
- {
- dto.ValidateObject();
- var safeType = new SafetyType
- {
- Id = dto.SafetyTypeId,
- Citizens = []
- };
- foreach (var item in dto.CitizenIds)
- {
- safeType.Citizens.Add(new Citizen { Id = item });
- }
- await _safetyTypeRepository.AddNav(safeType)
- .Include(m => m.Citizens)
- .ExecuteCommandAsync();
- }
- public ISugarQueryable<CitizenRelationSafetyTypeOutDto> GetCitizenRelationSafetyType(CitizenRelationSafetyTypeInDto dto)
- {
- var query = _citizenRepository.Queryable()
- .LeftJoin<CitizenRelationSafetyType>((citizen, relation) => citizen.Id == relation.CitizenId)
- .LeftJoin<SafetyType>((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;
- }
- public async Task DeleteCitizenRelationSafetyAsync(DeleteCitizenRelationSafetyTypeInDto dto)
- {
- foreach (var item in dto.Items)
- {
- var citizen = await _citizenRepository.Queryable()
- .Includes(m => m.SafetyTypes)
- .Where(m => m.Id == item.CitizenId)
- .FirstAsync();
- var deleteSafetyType = citizen.SafetyTypes.FirstOrDefault(m => m.Id == item.SafetyTypeId);
- if (deleteSafetyType == null) continue;
- citizen.SafetyTypes.Remove(deleteSafetyType);
- _citizenRepository.UpdateNav(citizen)
- .Include(m => m.SafetyTypes)
- .ExecuteCommand();
- }
- }
- }
|