public IEnumerable <EventNote> GetEventNotes(int pageNumber, int pageSize, EventNotesModelFilter filter, out int totalRecords) { using (var adapter = PersistenceLayer.GetDataAccessAdapter()) { var linqMetaData = new LinqMetaData(adapter); var query = (from en in linqMetaData.EventNote select en); if (filter != null) { if (filter.HealthPlanId > 0) { var eventIds = (from ea in linqMetaData.EventAccount where ea.AccountId == filter.HealthPlanId select ea.EventId); var eventNoteIds = (from enl in linqMetaData.EventNotesLog where eventIds.Contains(enl.EventId) select enl.EventNoteId); query = (from q in query where eventNoteIds.Contains(q.Id) select q); } if (filter.FromDate.HasValue || filter.ToDate.HasValue) { var eventIds = (from e in linqMetaData.Events where (filter.FromDate.HasValue || e.EventDate >= filter.FromDate) && (filter.ToDate.HasValue || e.EventDate <= filter.ToDate) select e.EventId); var eventNoteIds = (from enl in linqMetaData.EventNotesLog where eventIds.Contains(enl.EventId) select enl.EventNoteId); query = (from q in query where eventNoteIds.Contains(q.Id) select q); } if (filter.PodId > 0) { var eventIds = (from e in linqMetaData.Events join ep in linqMetaData.EventPod on e.EventId equals ep.EventId join p in linqMetaData.PodDetails on ep.PodId equals p.PodId where p.PodId == filter.PodId select e.EventId); var eventNoteIds = (from enl in linqMetaData.EventNotesLog where eventIds.Contains(enl.EventId) select enl.EventNoteId); query = (from q in query where eventNoteIds.Contains(q.Id) select q); } } totalRecords = query.Count(); var finalQuery = query.OrderByDescending(x => x.DateCreated).TakePage(pageNumber, pageSize).ToArray(); return(Mapper.Map <IEnumerable <EventNoteEntity>, IEnumerable <EventNote> >(finalQuery)); } }
public ActionResult ManageEventNotes(EventNotesModelFilter filter = null, int pageNumber = 1) { int totalRecords; filter = filter ?? new EventNotesModelFilter(); var listModel = _eventService.GetEventNotes(pageNumber, _pageSize, filter, out totalRecords) ?? new EventNotesListModel(); listModel.Filter = filter; var currentAction = ControllerContext.RouteData.Values["action"].ToString(); Func <int, string> urlFunc = pn => Url.Action(currentAction, new { pageNumber = pn, filter.FromDate, filter.ToDate, filter.HealthPlanId, filter.PodId }); listModel.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc); return(View(listModel)); }