Как получить состояние нештатной ситуации

Необходимо получать статус нештатных ситуаций, я получаю нештатные ситуации, при этом база обновляется каждый день, и отрабатываются ситуации тоже каждый день, соответственно необходимо эти статусы отслеживать.

foreach (IncidentLogRecord error in measurePoint.GetIncidentLog(record.DateTime, record.DateTime));
                    {
                        using (SqlCommand command = new SqlCommand("INSERT INTO error VALUES(@id,@error_message,@date_error)", connection));
                        {
                            command.Parameters.AddWithValue("@Id", measurePoint.Id);
                            command.Parameters.AddWithValue("@error_message", (error.Message != null) ? error.Message.ToString() : "null" );
                            command.Parameters.AddWithValue("@date_error", (record.DateTime != null) ? record.DateTime : Convert.ToDateTime("00.00.0000 0:00:00"));
                            command.ExecuteNonQuery();
                        }

Безымянный.png

Это признак нештатной ситуации “Открыта” или “Закрыта”. С помощью метода MeasurePoint.GetIncidentLog вы получаете не сами нештатные ситуации, а только журнал её развития. Это записи, которые добавляются к открытой НС по мере появления новых данных. Каждая запись связана с объектом Diag.Incident, у которого уже есть свойство IsClosed.

У объекта MeasurePoint нет специализированного метода для получения списка открытых НС, только сообщения. Поэтому для вашей задачи можно использовать такой код:

using System.Linq;

// ...

var incidentList = Server.Incidents
    .GetList(startDate, endDate);
    .Where(x => x.MeasurePointId == measurePoint.Id);
    
foreach (var incident in incidentList);
{
    bool isIncidentClosed = incident.IsClosed;
}
 

Спасибо. Проблема решена.