using Step.Model.DatabaseModels; using Step.Model.DTOModels; using System; using System.Collections.Generic; using System.Data.Entity; using System.Diagnostics; using System.Linq; namespace Step.Database.Controllers { public class AlarmsController : IDisposable { private DatabaseContext dbCtx; public AlarmsController() { // Initialize database context dbCtx = new DatabaseContext(); } public void Dispose() { // Clear database context dbCtx.Dispose(); } public List GetPaginated(int page, int pageSize) { Stopwatch st = new Stopwatch(); st.Start(); DateTime l = DateTime.Parse("2013/01/01"); var paginated = dbCtx.AlarmOccurrences.Include("AlarmDescription").OrderBy(x => x.AlarmOccurrenceId) .Where(x => x.TimeStamp < DateTime.Today && x.TimeStamp > l) .Skip(page * pageSize) .Take(pageSize) .ToList(); Console.WriteLine(st.ElapsedMilliseconds); st.Stop(); return paginated; } public List GetPaginatedWithFilter(int page, int pageSize, DateTime startDate, DateTime endDate, List userIds) { var occurrences = dbCtx .AlarmOccurrences .OrderBy(x => x.AlarmOccurrenceId) .Where(x => x.TimeStamp >= startDate && x.TimeStamp <= endDate // && userIds.Any(y => x.Users.Select(z => z.UserId).Any(z => z == y)) ) .Skip(page * pageSize) .Take(pageSize) .Include("AlarmDescription") .ToList(); //var ids = occurrences.Select(x => x.Id).ToList(); //var users = dbCtx.AlarmUsers.Where(x => ids.Contains(x.AlarmOccurrenceId) && userIds.Contains(x.UserId)).ToList(); return occurrences .Select(x => (DTOAlarmHistoricModel)x) .ToList(); } public void InsertNewOccurrences(List alarms) { dbCtx.AlarmOccurrences.AddRange(alarms); dbCtx.SaveChanges(); } public void InsertNewNcAlarmDescriptions(List descriptions) { foreach (var desc in descriptions) { // Check if description exists already var dbDesc = dbCtx.AlarmDescriptions.Where(x => x.AlarmId == desc.AlarmId).FirstOrDefault(); // If not add if (dbDesc == null) dbCtx.AlarmDescriptions.Add(desc); } dbCtx.SaveChanges(); } public void InsertNewAlarmUser(List loggedUser) { dbCtx.AlarmUsers.AddRange(loggedUser); dbCtx.SaveChanges(); } } }