using Aop.Api.Domain;
using ApiTools.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 ApiTools.CommonServer.Application
{
///
/// 查询短信配置
///
public class GetSmsSettingQueryHandler(
IRepository rep,
IRepository repSmsLog
) :
IRequestHandler,
IRequestHandler
{
private readonly IRepository rep = rep;
private readonly IRepository repSmsLog = repSmsLog;
///
/// 查询短信配置
///
///
///
///
public async Task Handle(GetSmsSettingQuery request, CancellationToken cancellationToken)
{
var logier = JwtUtils.GetCurrentLogier();
var detail = await rep.AsQueryable().AsNoTracking()
.Where(it => it.ChannelId == logier.ChannelId)
.GetDetail();
detail.Accesses = detail.Accesses.OrderBy(it => it.Sort).ToList();
return detail;
}
public async Task Handle(GetSmsLogsQuery request, CancellationToken cancellationToken)
{
var q = repSmsLog.AsQueryable().AsNoTracking();
if (request.CreatedTimeBegin.HasValue && request.CreatedTimeEnd.HasValue)
{
q = q.Where(it => request.CreatedTimeBegin <= it.CreatedTime && it.CreatedTime <= request.CreatedTimeEnd);
}
if (request.ChannelCreatedUserIds.IsNotNull())
{
q = q.Where(it => it.ChannelCreatedUserId.HasValue && request.ChannelCreatedUserIds.Contains(it.ChannelCreatedUserId.Value));
}
if (request.TraceId.IsNotNull())
{
q = q.Where(it => it.TraceId == request.TraceId);
}
if (request.Access.HasValue)
{
q = q.Where(it => it.Access == request.Access);
}
if (request.PhoneNumber.IsNotNull())
{
q = q.Where(it => it.PhoneNumber == request.PhoneNumber);
}
if (request.TemplateCode.IsNotNull())
{
q = q.Where(it => it.TemplateCode == request.TemplateCode);
}
if (request.TemplateParam.IsNotNull())
{
q = q.Where(it => it.TemplateParam.Contains(request.TemplateParam));
}
if (request.IsUsed.HasValue)
{
q = q.Where(it => it.IsUsed == request.IsUsed);
}
if (request.Status.HasValue)
{
q = q.Where(it => it.Status == request.Status);
}
var s = q.ProjectToType();
var list = await request.PageModel.GetPagedListAsync(s, cancellationToken);
return list;
}
}
}