using MapsterMapper; using SqlSugar; using XF.Domain.Authentications; using XF.Domain.Dependency; using XF.Domain.Exceptions; using XF.Domain.Repository; using Hotline.Repository.SqlSugar.Extensions; using Hotline.Share.Dtos.Special; namespace Hotline.Application.SpecialNumber { public class SpecialNumberApplication : ISpecialNumberApplication, IScopeDependency { #region 注册 private readonly IRepository _specialNumberRepository; private readonly ISessionContext _sessionContext; private readonly IMapper _mapper; public SpecialNumberApplication( IRepository specialNumberRepository, ISessionContext sessionContext, IMapper mapper) { _specialNumberRepository = specialNumberRepository; _sessionContext = sessionContext; _mapper = mapper; } #endregion #region 特殊号码 #region 特殊号码 - 列表 /// /// 特殊号码 - 列表 /// /// /// public async Task<(int, IList)> QueryAllSpecialNumberListAsync(SpecialNumberDto dto, CancellationToken cancellationToken) { var typeSpliceName = string.Empty; //单表分页 var (total, temp) = await _specialNumberRepository.Queryable() .WhereIF(!string.IsNullOrEmpty(dto.PhoneNumber), x => x.PhoneNumber.Contains(dto.PhoneNumber)) .WhereIF(!string.IsNullOrEmpty(dto.Notes), x => x.Notes.Contains(dto.Notes)) .WhereIF(dto.CreationTimeStart.HasValue, x => x.CreationTime >= dto.CreationTimeStart) .WhereIF(dto.CreationTimeEnd.HasValue, x => x.CreationTime <= dto.CreationTimeEnd) .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //创建时间升序 .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //创建时间降序 .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.CreationTime, OrderByType.Desc) //创建时间降序 .ToPagedListAsync(dto.PageIndex, dto.PageSize, cancellationToken); return (total, _mapper.Map>(temp)); //return (total, temp); } #endregion #region 特殊号码 - 新增 /// /// 新增 /// /// /// /// public async Task AddSpecialNumberAsync(AddSpecialNumberDto dto, CancellationToken cancellationToken) { var data = _mapper.Map(dto); var any = await _specialNumberRepository.Queryable().Where(x => x.PhoneNumber == dto.PhoneNumber).AnyAsync(); if (any) throw UserFriendlyException.SameMessage("特殊号码已存在!"); data.InitId(); return await _specialNumberRepository.AddAsync(data, cancellationToken); } #endregion #region 特殊号码 - 修改 /// /// 修改 /// /// /// /// public async Task UpdateSpecialNumberAsync(UpdateSpecialNumberDto dto, CancellationToken cancellationToken) { var data = await _specialNumberRepository.GetAsync(dto.Id); if (data == null) throw UserFriendlyException.SameMessage("特殊号码查询失败"); var any = await _specialNumberRepository.Queryable().Where(x => x.PhoneNumber == dto.PhoneNumber && x.Id != dto.Id).AnyAsync(); if (any) throw UserFriendlyException.SameMessage("特殊号码已存在!"); data.PhoneNumber = dto.PhoneNumber; data.Notes = dto.Notes; await _specialNumberRepository.UpdateAsync(data, cancellationToken); } #endregion #region 特殊号码 - 删除 /// /// 删除 /// /// /// /// public async Task RemoveSpecialNumberAsync(DelSpecialNumberDto dto, CancellationToken cancellationToken) { var data = await _specialNumberRepository.GetAsync(dto.Id); if (data == null) throw UserFriendlyException.SameMessage("特殊号码查询失败"); await _specialNumberRepository.RemoveAsync(data, false, cancellationToken); } #endregion #region 特殊号码 - 详情 /// /// 详情 /// /// /// public async Task GetSpecialNumberAsync(string Id, CancellationToken cancellationToken) { var data = await _specialNumberRepository.Queryable() .FirstAsync(x => x.Id == Id, cancellationToken); if (data == null) return new(); return _mapper.Map(data); } #endregion #region 特殊号码 - 详情 /// /// 详情 /// /// /// public async Task GetSpecialNumberByAsync(string PhoneNumber, CancellationToken cancellationToken) { var data = await _specialNumberRepository.Queryable() .FirstAsync(x => x.PhoneNumber == PhoneNumber, cancellationToken); if (data == null) return new(); return _mapper.Map(data); } #endregion #endregion } }