|
@@ -6,6 +6,7 @@ using Hotline.Share.Dtos.CallCenter;
|
|
|
using Hotline.Share.Dtos.TrCallCenter;
|
|
|
using Hotline.Share.Enums.CallCenter;
|
|
|
using SqlSugar;
|
|
|
+using XF.Domain.Authentications;
|
|
|
using XF.Domain.Dependency;
|
|
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
|
|
@@ -13,8 +14,15 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
|
{
|
|
|
public class TrCallRecordRepository : BaseRepository<TrCallRecord>, ITrCallRecordRepository, IScopeDependency
|
|
|
{
|
|
|
- public TrCallRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider) : base(uow, dataPermissionFilterBuilder, serviceProvider)
|
|
|
+ private readonly ISessionContext _sessionContext;
|
|
|
+
|
|
|
+ public TrCallRecordRepository(
|
|
|
+ ISugarUnitOfWork<HotlineDbContext> uow,
|
|
|
+ IDataPermissionFilterBuilder dataPermissionFilterBuilder,
|
|
|
+ IServiceProvider serviceProvider,
|
|
|
+ ISessionContext sessionContext) : base(uow, dataPermissionFilterBuilder, serviceProvider)
|
|
|
{
|
|
|
+ _sessionContext = sessionContext;
|
|
|
}
|
|
|
|
|
|
public async Task<List<BiCallDto>> GetQueryCalls(DateTime beginDate, DateTime endDate, string? Line)
|
|
@@ -241,7 +249,7 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
|
}
|
|
|
|
|
|
|
|
|
- public ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto, bool bindOrder)
|
|
|
+ public ISugarQueryable<TrCallRecord> GetCallList(GetCallListDto dto)
|
|
|
{
|
|
|
return Db.Queryable<TrCallRecord>()
|
|
|
.Includes(x => x.Order)
|
|
@@ -252,42 +260,32 @@ namespace Hotline.Repository.SqlSugar.CallCenter
|
|
|
.WhereIF(dto.CallDirection != null, x => x.CallDirection == dto.CallDirection)
|
|
|
.WhereIF(dto.OnState != null, x => x.OnState == dto.OnState)
|
|
|
.WhereIF(dto.EndBy != null, x => x.EndBy == dto.EndBy)
|
|
|
-
|
|
|
.WhereIF(dto.BeginIvrTimeStart.HasValue, x => x.BeginIvrTime >= dto.BeginIvrTimeStart)
|
|
|
.WhereIF(dto.BeginIvrTimeEnd.HasValue, x => x.BeginIvrTime <= dto.BeginIvrTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.EndIvrTimeStart.HasValue, x => x.EndIvrTime >= dto.EndIvrTimeStart)
|
|
|
.WhereIF(dto.EndIvrTimeEnd.HasValue, x => x.EndIvrTime <= dto.EndIvrTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.BeginQueueTimeStart.HasValue, x => x.BeginQueueTime >= dto.BeginQueueTimeEnd)
|
|
|
.WhereIF(dto.BeginQueueTimeEnd.HasValue, x => x.BeginQueueTime <= dto.BeginQueueTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.EndQueueTimeStart.HasValue, x => x.EndQueueTime >= dto.EndQueueTimeStart)
|
|
|
.WhereIF(dto.EndQueueTimeEnd.HasValue, x => x.EndQueueTime <= dto.EndQueueTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.AnsweredTimeStart.HasValue, x => x.AnsweredTime >= dto.AnsweredTimeStart)
|
|
|
.WhereIF(dto.AnsweredTimeEnd.HasValue, x => x.AnsweredTime <= dto.AnsweredTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.OverTimeStart.HasValue, x => x.OverTime >= dto.OverTimeStart)
|
|
|
.WhereIF(dto.OverTimeEnd.HasValue, x => x.OverTime <= dto.OverTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.BeginRingTimeStart.HasValue, x => x.BeginRingTime >= dto.BeginRingTimeStart)
|
|
|
.WhereIF(dto.BeginRingTimeEnd.HasValue, x => x.BeginRingTime <= dto.BeginRingTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.EndRingTimeStart.HasValue, x => x.EndRingTimg >= dto.EndRingTimeStart)
|
|
|
.WhereIF(dto.EndRingTimeEnd.HasValue, x => x.EndRingTimg <= dto.EndRingTimeEnd)
|
|
|
-
|
|
|
.WhereIF(dto.CallTimeStart.HasValue, x => x.CreatedTime >= dto.CallTimeStart)
|
|
|
.WhereIF(dto.CallTimeEnd.HasValue, x => x.CreatedTime <= dto.CallTimeEnd)
|
|
|
-
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.OrderNo), x => x.Order.No.Contains(dto.OrderNo))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Order.Title.Contains(dto.Title))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Gateway), x => x.Gateway.Contains(dto.Gateway))
|
|
|
.WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true, d => d.Sensitive != null && SqlFunc.JsonArrayLength(d.Sensitive) > 0)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), d => SqlFunc.JsonArrayAny(d.Sensitive, dto.SensitiveWord))
|
|
|
.WhereIF(dto.IsAiAnswered == true, x => string.IsNullOrEmpty(x.UserId) == true && x.BeginIvrTime.HasValue && x.EndIvrTime.HasValue)
|
|
|
-
|
|
|
.WhereIF(dto.PhoneTypes != null, x => x.PhoneTypes == dto.PhoneTypes)
|
|
|
+ .WhereIF(dto.QuerySelf.HasValue && dto.QuerySelf == true, x => x.UserId == _sessionContext.UserId)
|
|
|
.OrderByDescending(x => x.CreatedTime);
|
|
|
}
|
|
|
|