/// <summary> /// Метод возвращающий List объектов по фильтру /// </summary> /// <param name="filters">Фильтр данных</param> /// <param name="page">Элемент для вывода информации о страницах на UI</param> /// <returns>List<Event></returns> public List <Event> Get(FilterEvent filters, ref DataPage dataPage) { using (DataBaseModel context = new DataBaseModel()) { IQueryable <Event> query = from t in context.Events select t; if (filters.StartDate > filters.FinishDate) { filters.StartDate = DateTime.MinValue; filters.FinishDate = DateTime.MaxValue; } if (filters.StartDate != DateTime.MinValue) { query = query.Where(t => t.Time >= filters.StartDate); } if (filters.FinishDate != DateTime.MaxValue) { DateTime dateTime = filters.FinishDate.AddDays(1); query = query.Where(t => t.Time <= dateTime); } if (!String.IsNullOrEmpty(filters.Message)) { query = query.Where(t => t.Message.Contains(filters.Message)); } dataPage.sizeAll = query.Select(t => t).Count(); //Всего записей в таблице БД по данному фильтру query = query.OrderBy(t => t.Time).Skip(filters.Page * dataPage.pageSizeMax).Take(dataPage.pageSizeMax).Select(t => t); //Выборка из n записей соответствующих выбранной странице List <Event> myList = query.ToList(); return(myList); } }
/// <summary> /// Стандартная инициализация /// </summary> private void InitializeDB() { try { DataBaseModel context = new DataBaseModel(); //Создадим контекст подвязки к БД context.Database.Initialize(false); //Запустить инициализацию базы данных Console.WriteLine("Инициализация выполнена\n" + context.Database.Connection.ConnectionString); } catch (Exception exception) { // Если при создании БД возникла ошибка, отобразим ее в окне отладчика //MessageBox.Show("Инициализация не выполнена.Ошибка: " + excaption.Message); //Exceptions.Add(excaption); Console.WriteLine("Инициализация не выполнена.Ошибка: " + exception.Message); } }
/// <summary> /// Удаляет записи, которые хранятся больше определенного времени в таблице "Исключения" /// </summary> public void RemoveExceptOfLifeTime() { DateTime today = DateTime.Now; DateTime DaysEarlier = today.AddDays(-_lifeTimeInDays); using (DataBaseModel context = new DataBaseModel()) { try { List <Except> exceptForClearning = (from t in context.Exceptions where t.Time < DaysEarlier select t).ToList(); context.Exceptions.RemoveRange(exceptForClearning); context.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); } } }
/// <summary> /// Обновление записи Квитирования в таблице "Аварии" /// </summary> /// <param name="id">Запись по Id в таблице</param> public void AddAlarmConfirm(int id) { using (DataBaseModel context = new DataBaseModel()) { try { Alarm alr = context.Alarms.Find(id); if (alr != null) { alr.TimeConfirm = DateTime.Now; context.Alarms.AddOrUpdate(alr); } context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
/// <summary> /// Обновление "время нормализации" в таблице "Аварии" /// </summary> /// <param name="message">Сообщение ранее добавленное в таблицу</param> /// <param name="timeWrite">Время создания записи</param> public void AddAlarmNormalize(string message, DateTime timeWrite) { if (!String.IsNullOrEmpty(message)) { using (DataBaseModel context = new DataBaseModel()) { try { DateTime todayStart = timeWrite; DateTime start = todayStart.AddDays(-1); DateTime todayFinish = timeWrite; DateTime stop = todayFinish.AddDays(1); List <Alarm> alarms = context.Alarms.Where(e => e.Time >= start & e.Time <= stop & e.Message == message & e.TimeNormalize == null).ToList(); if (alarms == null) { return; } DateTime time = DateTime.MinValue; Alarm alarm = alarms[0]; foreach (Alarm alr in alarms) { if (alr.Time > time) { time = alr.Time; alarm = alr; } } alarm.TimeNormalize = DateTime.Now; context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
/// <summary> /// Оставляет допустимое кол-во записей в таблице "Исключения" /// </summary> public void RemoveExceptOfCount() { using (DataBaseModel context = new DataBaseModel()) { int count = context.Exceptions.Count(); if (count >= _maxCount) { int dif = count - _maxCount; try { List <Except> exceptForClearning = context.Exceptions.Take(dif).OrderBy(t => t.Time).ToList(); context.Exceptions.RemoveRange(exceptForClearning); context.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); } } } }
/// <summary> /// Добавление записи в таблицу "Исключения" /// </summary> /// <param name="ex">Объект исключения</param> public void AddException(Exception ex) { using (DataBaseModel context = new DataBaseModel()) { try { Except exept = new Except() { Time = DateTime.Now, Message = ex.Message?.ToString() ?? String.Empty, ClassException = ex.TargetSite?.DeclaringType.ToString() ?? String.Empty, MethodException = ex.TargetSite?.Name.ToString() ?? String.Empty }; context.Exceptions.Add(exept); context.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); } } }
/// <summary> /// Добавление записи в БД, в таблицу "События" /// </summary> /// <param name="message">Сообщение, которое необходимо зарегистрировать</param> public void AddEvent(string message) { if (!String.IsNullOrEmpty(message)) { using (DataBaseModel context = new DataBaseModel()) { try { var evt = new Event() { Time = DateTime.Now, Message = message }; context.Events.Add(evt); context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
/// <summary> /// Добавление записи в таблицу "Аварии" /// </summary> /// <param name="message">Сообщение, которое необходимо зерегистрировать</param> /// <param name="time">Время добавления записи</param> public void AddAlarm(DateTime time, string message) { if (!String.IsNullOrEmpty(message)) { using (DataBaseModel context = new DataBaseModel()) { try { var alr = new Alarm() { Time = time, Message = message }; context.Alarms.Add(alr); context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }