public List <SearchCallLogResult> Search(SearchCallLogCriteria cr) { if (!cr.CanSearch()) { return(null); } using (var ctx = new NovaAlertContext()) { var query = BuildCallLogSearchQuery(cr, ctx); var list = new List <SearchCallLogResult>(); List <CallLogDb> dbList; if (cr.NumOfRecords > 0) { dbList = query.OrderByDescending(det => det.StartTime).Skip(cr.StartIndex).Take(cr.NumOfRecords).ToList(); } else { dbList = query.ToList(); } foreach (var call in dbList) { var result = new SearchCallLogResult(); Mapper.Map <CallLogDb, SearchCallLogResult>(call, result); list.Add(result); } return(list); } }
private static IQueryable <CallLogDb> BuildCallLogSearchQuery(SearchCallLogCriteria cr, NovaAlertContext ctx) { var query = ctx.CallLogDbs.Include("Details").Where(c => c.DeletedDate == null); if (cr.CallType > 0) { query = query.Where(c => c.CallType == cr.CallType); } if (cr.ChannelId.HasValue) { query = query.Where(c => c.Details.Any(det => det.ChannelId == cr.ChannelId.Value)); } if (!string.IsNullOrEmpty(cr.UnitName)) { query = query.Where(c => c.Details.Any(det => det.UnitName != null && det.UnitName.Contains(cr.UnitName))); } if (cr.StartDate.HasValue) { query = query.Where(c => SqlFunctions.DateDiff("day", c.StartTime, cr.StartDate.Value) <= 0); } if (cr.EndDate.HasValue) { query = query.Where(c => SqlFunctions.DateDiff("day", c.StartTime, cr.EndDate.Value) >= 0); } return(query); }
public uint Count(SearchCallLogCriteria cr) { if (!cr.CanSearch()) { return(0); } using (var ctx = new NovaAlertContext()) { var query = BuildCallLogSearchQuery(cr, ctx); return((uint)query.Count()); } }
uint INovaAlertConfigService.CountCallLog(SearchCallLogCriteria cr) { return(CallLogDal.Instance.Count(cr)); }
List <SearchCallLogResult> INovaAlertConfigService.SearchCallLog(SearchCallLogCriteria cr) { return(CallLogDal.Instance.Search(cr)); }
public CallLogSearchContract(SearchCallLogCriteria cr) { this.Criteria = cr; }