/// <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); } }
/// <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(); } }
/// <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); } }