Example #1
0
        /// <summary>
        /// DT_ALARMテーブルからメール送信済みの最新DtAlarmを取得する
        /// </summary>
        /// <param name="alarmDefId">アラーム定義ID</param>
        /// <returns>取得したデータ</returns>
        public DtAlarm ReadLatestMailSentDtAlarm(string alarmDefId)
        {
            DtAlarm model = null;

            try
            {
                _logger.EnterJson("{0}", new { alarmDefId });

                DBAccessor.Models.DtAlarm entity = null;
                _dbPolly.Execute(() =>
                {
                    using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings))
                    {
                        entity = db.DtAlarm.Where(x => x.AlarmDefId == alarmDefId && x.HasMail == true).OrderByDescending(x => x.CreateDatetime).FirstOrDefault();
                    }
                });

                model = entity?.ToModelExcludedDtEquipment();
                return(model);
            }
            catch (Exception e)
            {
                throw new RmsException("DT_ALARMテーブルのSelectに失敗しました。", e);
            }
            finally
            {
                _logger.LeaveJson("{0}", model);
            }
        }
Example #2
0
        /// <summary>
        /// アラームをDBに登録する
        /// </summary>
        /// <param name="messageId">メッセージID</param>
        /// <param name="hasMail">メールありフラグ</param>
        /// <param name="alarmInfo">アラーム情報</param>
        /// <param name="equipment">機器データ</param>
        /// <returns>成功した場合true、失敗した場合falseを返す</returns>
        public bool RegistAlarmInfo(string messageId, bool hasMail, AlarmInfo alarmInfo, DtEquipment equipment)
        {
            try
            {
                _logger.EnterJson("{0}", new { messageId, hasMail, alarmInfo, equipment });

                var dtAlarm = new DtAlarm
                {
                    EquipmentSid     = equipment.Sid,
                    TypeCode         = alarmInfo.TypeCode,
                    ErrorCode        = alarmInfo.ErrorCode,
                    AlarmLevel       = alarmInfo.AlarmLevel,
                    AlarmTitle       = alarmInfo.AlarmTitle,
                    AlarmDescription = alarmInfo.AlarmDescription,
                    AlarmDatetime    = DateTime.Parse(alarmInfo.AlarmDatetime, null, DateTimeStyles.RoundtripKind),
                    AlarmDefId       = alarmInfo.AlarmDefId,
                    EventDatetime    = DateTime.Parse(alarmInfo.EventDatetime, null, DateTimeStyles.RoundtripKind),
                    HasMail          = hasMail,
                    MessageId        = messageId
                };

                _dtAlarmRepository.CreateDtAlarm(dtAlarm);
                return(true);
            }
            catch (RmsException e)
            {
                var dtAlarm = new
                {
                    EquipmentSid     = equipment?.Sid,
                    TypeCode         = alarmInfo?.TypeCode,
                    ErrorCode        = alarmInfo?.ErrorCode,
                    AlarmLevel       = alarmInfo?.AlarmLevel,
                    AlarmTitle       = alarmInfo?.AlarmTitle,
                    AlarmDescription = alarmInfo?.AlarmDescription,
                    AlarmDatetime    = alarmInfo?.AlarmDatetime,
                    AlarmDefId       = alarmInfo?.AlarmDefId,
                    EventDatetime    = alarmInfo?.EventDatetime,
                    HasMail          = hasMail,
                    MessageId        = messageId
                };

                // アラームデータ保存失敗(基本設計書 5.3.4 エラー処理)
                _logger.Error(e, nameof(Resources.OP_ALR_ALR_009), new object[] { JsonConvert.SerializeObject(dtAlarm), messageId });
                return(false);
            }
            finally
            {
                _logger.Leave();
            }
        }
Example #3
0
        /// <summary>
        /// 引数に指定したDtAlarmをDT_ALARMテーブルへ登録する
        /// </summary>
        /// <param name="inData">登録するデータ</param>
        /// <returns>処理結果</returns>
        public DtAlarm CreateDtAlarm(DtAlarm inData)
        {
            DtAlarm model = null;

            try
            {
                _logger.EnterJson("{0}", inData);

                DBAccessor.Models.DtAlarm entity = new DBAccessor.Models.DtAlarm();
                entity.CopyExcludingEquipmentFrom(inData);

                // バリデーション
                Validator.ValidateObject(entity, new ValidationContext(entity, null, null));

                _dbPolly.Execute(() =>
                {
                    entity.CreateDatetime = _timeProvider.UtcNow;

                    using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings))
                    {
                        var dbdata = db.DtAlarm.Add(entity).Entity;
                        db.SaveChanges();
                        model = dbdata.ToModelExcludedDtEquipment();
                    }
                });

                return(model);
            }
            catch (ValidationException e)
            {
                throw new RmsParameterException(e.ValidationResult.ErrorMessage, e);
            }
            catch (Exception e)
            {
                throw new RmsException("DT_ALARMテーブルへのInsertに失敗しました。", e);
            }
            finally
            {
                _logger.LeaveJson("{0}", model);
            }
        }