Esempio n. 1
0
 public void Validate(AlarmLog obj)
 {
     if (!obj.Title.IsValidLength(1, 200)) throw new Exception(Resources.Error_AlarmLogTitleInvalid);
     if (!obj.Note.IsValidLength(-1, 500)) throw new Exception(Resources.Error_AlarmLogNoteInvalid);
 }
Esempio n. 2
0
        /// <summary>
        /// Check sensor value and auto add alarm log if it is out of range.
        /// Non auto save changed to database, you must call entityConntext.SaveChanges() to save changed.
        /// </summary>
        /// <param name="sensorValue"></param>
        /// <returns></returns>
        public bool CheckAlarm(SensorValue sensorValue)
        {
            var sensor = sensorValue.Sensor;
            if (sensor.AlarmEnabled)
            {
                if ((sensor.MinValue != null && sensor.MinValue > sensorValue.CalcValue) || (sensor.MaxValue != null && sensor.MaxValue < sensorValue.CalcValue))
                {
                    if (sensor.AlarmFlag)
                    {
                        var lastAlarm =
                           sensor.AlarmLogs.LastOrDefault(
                               ent => !ent.IsEnded && ent.StartAlarmDatetime <= sensorValue.MeaTime);
                        if (lastAlarm == null || lastAlarm.CalcValue == sensorValue.CalcValue)
                        {
                            return false;
                        }
                    }
                    // Add Alarm
                    var alarm = new AlarmLog();
                    alarm.SensorID = sensor.SensorID;
                    // Set project ID
                    alarm.ProjectID = sensor.ProjectID;

                    alarm.CalcValue = sensorValue.CalcValue;
                    alarm.IsEnded = false;
                    alarm.StartAlarmDatetime = sensorValue.MeaTime;
                    alarm.Title = sensor.Logger.Name + " - " + sensor.Name;
                    // Edited by binhpro 23/11/2012
                    decimal range = sensor.MaxValue.Value - sensor.MinValue.Value;
                    if (range == 0) range = sensor.MaxValue.Value;

                    if (alarm.CalcValue < sensor.MinValue && range != 0)
                    {
                        alarm.Title += " - dưới ngưỡng " + Math.Round(Math.Abs((decimal)((sensor.MinValue - alarm.CalcValue) / range * 100)), 0) + " %";
                    }
                    else if (alarm.CalcValue > sensor.MaxValue && range != 0)
                    {
                        alarm.Title += " - vượt ngưỡng " + Math.Round(Math.Abs((decimal)((alarm.CalcValue - sensor.MaxValue) / range * 100)), 0) + " %";
                    }
                    alarm.Title += " - " + alarm.StartAlarmDatetime;
                    // Set Alarm Flag Of Sensor TRUE
                    sensor.AlarmFlag = true;
                    sensor.AlarmLogs.Add(alarm);
                    return true;
                }
                if (sensor.AlarmFlag)
                {
                    // Set Alarm Flag Of Sensor FALSE
                    sensor.AlarmFlag = false;
                    // Close All Alarm Log Before
                    var logs =
                        sensor.AlarmLogs.Where(ent => !ent.IsEnded && ent.StartAlarmDatetime <= sensorValue.MeaTime);
                    foreach (var alarmLog in logs)
                    {
                        alarmLog.IsEnded = true;
                        alarmLog.EndAlarmDatetime = sensorValue.MeaTime;
                    }
                    // entityConntext.SaveChanges();
                }
                return false;
            }
            return false;
        }
Esempio n. 3
0
 public bool Update(AlarmLog obj)
 {
     using (var entityConntext = new GeoViewerEntities())
     {
         SecurityBLL.Current.CheckPermissionThrowException(new string[]
                                                               {
                                                                   SecurityBLL.ROLE_ALARM_EDIT,
                                                                   SecurityBLL.ROLE_ALARM_MANAGE
                                                               });
         Validate(obj);
         obj.LastEditedDate = DateTime.Now;
         obj.LastEditedUser = AppContext.Current.LogedInUser.Username;
         entityConntext.AttachUpdatedObject(obj);
         return entityConntext.SaveChanges() > 0;
     }
 }
Esempio n. 4
0
 public bool Insert(AlarmLog obj)
 {
     using (var entityConntext = new GeoViewerEntities())
     {
         Validate(obj);
         if (AppContext.Current.OpenProject != null) obj.ProjectID = AppContext.Current.OpenProject.ProjectID;
         obj.IsEnded = false;
         entityConntext.AlarmLogs.AddObject(obj);
         return entityConntext.SaveChanges() > 0;
     }
 }
Esempio n. 5
0
 /// <summary>
 /// Create a new AlarmLog object.
 /// </summary>
 /// <param name="alarmLogID">Initial value of the AlarmLogID property.</param>
 /// <param name="sensorID">Initial value of the SensorID property.</param>
 /// <param name="calcValue">Initial value of the CalcValue property.</param>
 /// <param name="isEnded">Initial value of the IsEnded property.</param>
 /// <param name="startAlarmDatetime">Initial value of the StartAlarmDatetime property.</param>
 public static AlarmLog CreateAlarmLog(global::System.Int64 alarmLogID, global::System.Int32 sensorID, global::System.Decimal calcValue, global::System.Boolean isEnded, global::System.DateTime startAlarmDatetime)
 {
     AlarmLog alarmLog = new AlarmLog();
     alarmLog.AlarmLogID = alarmLogID;
     alarmLog.SensorID = sensorID;
     alarmLog.CalcValue = calcValue;
     alarmLog.IsEnded = isEnded;
     alarmLog.StartAlarmDatetime = startAlarmDatetime;
     return alarmLog;
 }
Esempio n. 6
0
 /// <summary>
 /// Deprecated Method for adding a new object to the AlarmLogs EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToAlarmLogs(AlarmLog alarmLog)
 {
     base.AddObject("AlarmLogs", alarmLog);
 }
Esempio n. 7
0
 private void logGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
     if (logGridView.SelectedRows.Count == 0)
     {
         MessageBox.Show(Resources.Warning_NoRecordSelected);
         return;
     }
     _editingLog = AlarmBLL.Current.GetByID(logGridView.SelectedRows[0].Cells["AlarmLogID"].Value.ToInt32TryParse());
     if (_editingLog != null)
     {
         noteTextBox.Text = _editingLog.Note;
         saveButton.Enabled = true;
     }
 }