|
@@ -210,8 +210,9 @@ public abstract class DefaultCallApplication : ICallApplication
|
|
|
{
|
|
|
var query = _callNativeRepository.Queryable(includeDeleted: true)
|
|
|
.LeftJoin<Order>((d, o) => d.Id == o.CallId)
|
|
|
- .Where((d, o) => d.GroupId != "0")
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (d, o) => o.No == dto.OrderNo)
|
|
|
+ .LeftJoin<OrderVisit>((d, o, v) => d.Id == v.CallId)
|
|
|
+ // .WhereIF(string.IsNullOrEmpty(dto.ToNo), (d, o, v) => d.GroupId != "0")
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (d, o, v) => o.No == dto.OrderNo)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.FromNo), d => d.FromNo == dto.FromNo)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.ToNo), d => d.ToNo == dto.ToNo)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.UserName), d => d.UserName == dto.UserName)
|
|
@@ -223,32 +224,38 @@ public abstract class DefaultCallApplication : ICallApplication
|
|
|
.WhereIF(dto.Direction != null, d => d.Direction == dto.Direction)
|
|
|
.WhereIF(dto.WaitDurationStart != null && dto.WaitDurationStart > 0, d => d.WaitDuration >= dto.WaitDurationStart)
|
|
|
.WhereIF(dto.WaitDurationEnd != null && dto.WaitDurationEnd > 0, d => d.WaitDuration <= dto.WaitDurationEnd)
|
|
|
- .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == true, (d, o) => string.IsNullOrEmpty(o.Id) == true)
|
|
|
- .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == false, (d, o) => string.IsNullOrEmpty(o.Id) == false)
|
|
|
+ .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == true, (d, o, v) => string.IsNullOrEmpty(o.Id) == true)
|
|
|
+ .WhereIF(dto.IsMissOrder != null && dto.IsMissOrder.Value == false, (d, o, v) => string.IsNullOrEmpty(o.Id) == false)
|
|
|
.OrderByDescending(d => d.Id);
|
|
|
|
|
|
- query = query.WhereIF(dto.Type == 3, (d, o) => d.AnsweredTime == null);
|
|
|
- query = query.WhereIF(dto.Type == 1, (d, o) => d.Direction == ECallDirection.In);
|
|
|
- query = query.WhereIF(dto.Type == 2, (d, o) => d.Direction == ECallDirection.Out);
|
|
|
- var items = await query.Select((d, o) => new CallNativeDto
|
|
|
+ query = query.WhereIF(dto.Type == 3, (d, o, v) => d.AnsweredTime == null);
|
|
|
+ query = query.WhereIF(dto.Type == 1, (d, o, v) => d.Direction == ECallDirection.In && d.AnsweredTime != null);
|
|
|
+ query = query.WhereIF(dto.Type == 2, (d, o, v) => d.Direction == ECallDirection.Out && d.AnsweredTime != null);
|
|
|
+
|
|
|
+ if (dto.Type == 2)
|
|
|
+ {
|
|
|
+ var items = await query.Select((d, o, v) => new CallNativeDto
|
|
|
+ {
|
|
|
+ OrderId = v.OrderId,
|
|
|
+ OrderNo = v.Order.No,
|
|
|
+ Title = v.Order.Title,
|
|
|
+ CallState = d.CallState,
|
|
|
+ IsVisit = !SqlFunc.IsNullOrEmpty(v.Id),
|
|
|
+ IsOrder = !SqlFunc.IsNullOrEmpty(o.Id),
|
|
|
+ }, true)
|
|
|
+ .ToFixedListAsync(dto, cancellationToken);
|
|
|
+ return items;
|
|
|
+ }
|
|
|
+ return await query.Select((d, o, v) => new CallNativeDto
|
|
|
{
|
|
|
OrderId = o.Id,
|
|
|
OrderNo = o.No,
|
|
|
+ CallState = d.CallState,
|
|
|
Title = o.Title,
|
|
|
- Gateway = SqlFunc.Subqueryable<CallNative>()
|
|
|
- .Where(m => m.GroupId == "0" && m.CallNo == d.CallNo)
|
|
|
- .Select(m => m.ToNo)
|
|
|
+ IsVisit = !SqlFunc.IsNullOrEmpty(v.Id),
|
|
|
+ IsOrder = !SqlFunc.IsNullOrEmpty(o.Id),
|
|
|
}, true)
|
|
|
.ToFixedListAsync(dto, cancellationToken);
|
|
|
-
|
|
|
- items.Where(m => m.Gateway != null)
|
|
|
- .ToList().ForEach(m =>
|
|
|
- {
|
|
|
- var toNo = m.Gateway;
|
|
|
- m.Gateway = m.ToNo;
|
|
|
- m.ToNo = toNo;
|
|
|
- });
|
|
|
- return items;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|