예제 #1
0
            public ALARM_OBJECT(AdminAlarm.AlarmDbEventArgs ev)
                : this(INDEX_STATES_ALARM.REGISTRED)
            {
                Console.WriteLine(@"ALARM_OBJECT::ctor (id_comp=" + ev.m_id_comp + @", dtReg=" + ev.m_dtRegistred + @") - _state=" + _state.ToString() + @"...");

                init(ev.m_dtRegistred.GetValueOrDefault());
            }
예제 #2
0
        /// <summary>
        /// Зарегистрировать событие от БД
        /// </summary>
        /// <param name="ev">Аргумент события</param>
        /// <returns>Результат регистрации (см. пред. обработчик для 'TecViewAlarm.AlarmTecViewEventArgs')</returns>
        public INDEX_ACTION Registred(AdminAlarm.AlarmDbEventArgs ev, MODE mode)
        {
            INDEX_ACTION iRes     = INDEX_ACTION.NOTHING;
            ALARM_OBJECT alarmObj = find(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault());

            lock (this)
            {
                try
                {
                    if (alarmObj == null)
                    {//Только, если объект события сигнализации НЕ создан
                        // создать объект события сигнализации
                        alarmObj = new ALARM_OBJECT(ev);
                        _dictAlarmObject.Add(new KeyValuePair <int, DateTime>(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault()), alarmObj);
                        alarmObj.Fixed(ev.m_dtFixed);
                        alarmObj.Confirmed(ev.m_dtConfirm);

                        if (mode == MODE.ADMIN)
                        {
                            if (alarmObj.IsNotify() == true)
                            {
                                alarmObj.Fixing();
                                iRes = INDEX_ACTION.NEW;
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        alarmObj.Fixed(ev.m_dtFixed);
                        alarmObj.Confirmed(ev.m_dtConfirm);

                        if (mode == MODE.SERVICE)
                        {
                            //if (alarmObj.CONFIRMED == true)
                            //    if (TECComponent.Mode(ev.m_id_comp) == FormChangeMode.MODE_TECCOMPONENT.TG)
                            //        iRes = INDEX_ACTION.CONFIRMED_TG;
                            //    else
                            //        ;
                            //else
                            if (alarmObj.IsAutoConfirming() == true)
                            {
                                // если объект не подтвержден длительное время
                                iRes = INDEX_ACTION.AUTO_CONFIRMING;
                            }
                            else
                            if ((alarmObj.IsAutoFixing(ALARM_OBJECT.INDEX_DATETIME_REGISTRED.LAST) == true) ||
                                ((TECComponent.Mode(ev.m_id_comp) == FormChangeMode.MODE_TECCOMPONENT.TG) &&
                                 (alarmObj.IsAutoFixing(ALARM_OBJECT.INDEX_DATETIME_REGISTRED.FIRST) == true)))
                            {
                                // если объект не зафиксирован длительное время
                                iRes = INDEX_ACTION.AUTO_FIXING;
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        if (mode == MODE.ADMIN)
                        {
                            if (alarmObj.IsNotify() == true)
                            {
                                alarmObj.Fixing();
                                iRes = INDEX_ACTION.RETRY;
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        {
                            ;     // при 'VIEW' ничего не делать
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.Logg().Exception(e, @"DictAlarmObject::Registred (" + ev.GetType().Name + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }

            return(iRes);
        }
예제 #3
0
        /// <summary>
        /// Зарегистрировать событие от БД
        /// </summary>
        /// <param name="ev">Аргумент события</param>
        /// <returns>Результат регистрации (см. пред. обработчик для 'TecViewAlarm.AlarmTecViewEventArgs')</returns>
        public INDEX_ACTION Registred(AdminAlarm.AlarmDbEventArgs ev)
        {
            INDEX_ACTION iRes     = INDEX_ACTION.NOTHING;
            ALARM_OBJECT alarmObj = find(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault());

            lock (this)
            {
                try
                {
                    if (alarmObj == null)
                    {//Только, если объект события сигнализации НЕ создан
                        // создать объект события сигнализации
                        alarmObj = new ALARM_OBJECT(ev);
                        _dictAlarmObject.Add(new KeyValuePair <int, DateTime>(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault()), alarmObj);
                        alarmObj.Fixed(ev.m_dtFixed);
                        alarmObj.Confirmed(ev.m_dtConfirm);

                        if (alarmObj.IsNotify() == true)
                        {
                            iRes = INDEX_ACTION.NEW;
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        alarmObj.Fixed(ev.m_dtFixed);
                        alarmObj.Confirmed(ev.m_dtConfirm);

                        if ((alarmObj.CONFIRMED == false) &&
                            ((alarmObj.FIXED == true) && ((DateTime.UtcNow - ev.m_dtFixed.GetValueOrDefault()).TotalMilliseconds > AdminAlarm.MSEC_ALARM_EVENTRETRY))
                            )
                        {
                            // если объект не подтвержден длительное время
                            iRes = INDEX_ACTION.AUTO_CONFIRMING;
                        }
                        else
                        if ((alarmObj.FIXED == false) &&
                            ((DateTime.UtcNow - ev.m_dtRegistred.GetValueOrDefault()).TotalMilliseconds > AdminAlarm.MSEC_ALARM_EVENTRETRY)
                            )
                        {
                            // если объект не зафиксирован длительное время
                            iRes = INDEX_ACTION.AUTO_FIXING;
                        }
                        else
                        if (alarmObj.IsNotify() == true)
                        {
                            iRes = INDEX_ACTION.RETRY;
                        }
                        else
                        {
                            ;
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET, @"DictAlarmObject::Registred (" + ev.GetType().Name + @") - ...");
                }
            }

            return(iRes);
        }
예제 #4
0
 public ALARM_OBJECT(AdminAlarm.AlarmDbEventArgs ev)
     : this(INDEX_STATES_ALARM.REGISTRED)
 {
     init(ev.m_dtRegistred.GetValueOrDefault());
 }