/// <summary> /// Format the sensor values /// </summary> /// <param name="alarmObject"></param> /// <returns></returns> private string FormatCurrentSensorValue(Interface.Alarm.AlarmObject alarmObject, SensorCurrentStatus sensorCurrentStatus) { //Define local variables string sValue; int nDecimals; sValue = sensorCurrentStatus.CurrentValue.ToStr(); nDecimals = 1; switch (((alarmObject.SensorType.ToStr() != string.Empty) && (alarmObject.SensorType.ToStr().Length >= 4)) ? alarmObject.SensorType.Substring(0, 4) : "") { case "TEMP": case "THER": if (alarmObject.IsCelsius) { sValue = Common.FahrenheitToCelsius(alarmObject.Value.ToStr()); } nDecimals = 1; break; case "CONT": case "SECU": sValue = GetContactStateString(alarmObject.UTID, alarmObject.Probe, alarmObject.Value.ToDecimal(), 1); //Language = 1 nDecimals = 0; break; //case "NAFE": //NAFEM Protocol Device Sensor // int index = 0; // foreach (string value in alarmObject.SensorType.Split(':')) // { // aParts[index] = value; // index++; // if (index == 4) // break; // } // dUOM = 0; // if (aParts[1] != "") // dUOM = aParts[1].ToDecimal(); // if (dUOM == Measure.UOMBitMask.ToDecimal()) // { // sUOM = ""; // sValue = GetContactStateString(alarmObject.UTID, alarmObject.Probe, alarmObject.Value.ToDecimal(), 1); //Language = 1 // } // else // sUOM = NAFEMuom2DisplayString(dUOM); // if (dUOM == Measure.UOMcelsius.ToDecimal()) // { // sValue = Common.FahrenheitToCelsius(alarmObject.Value.ToStr()); // sMin = Common.FahrenheitToCelsius(alarmObject.AlarmMinValue.ToStr()); // sMax = Common.FahrenheitToCelsius(alarmObject.AlarmMaxValue.ToStr()); // } // nDecimals = 1; // iUOM = dUOM; // break; case "HUMI": nDecimals = 1; break; case "V5": case "V10": break; default: nDecimals = GetSensorTypeDecimals(alarmObject.SensorType); break; } /* Contact sensor will give the value as "Opened or Closed", before casting the to double, check the value type.*/ double outValue; if (double.TryParse(sValue, out outValue)) { if (sValue != "") { sValue = Microsoft.VisualBasic.Strings.FormatNumber(Double.Parse(sValue), nDecimals); } } return(sValue); }
/// <summary> /// Get format string /// </summary> /// <param name="formatString"></param> /// <param name="alarmObject"></param> /// <returns></returns> public string SubstituteFormatString(string formatString, Interface.Alarm.AlarmObject alarmObject) { string temperatureReading = "Reading OK", sUCOM = "", sValue; decimal dMin, dMax; string[] aValues = new string[4]; /*Set Alarm Values*/ //Check for contact sensor if (AlarmHelper.IsContactSensor(alarmObject.SensorType)) { temperatureReading = (alarmObject.Value == 0) ? "CLOSED" : "OPEN"; } else { temperatureReading = (alarmObject.Value < alarmObject.AlarmMinValue) ? "LOW" : "HIGH"; } dMin = alarmObject.AlarmMinValue; dMax = alarmObject.AlarmMaxValue; sValue = alarmObject.DisplayValue; sUCOM = ""; if (alarmObject.AlarmType == AlarmType.COMMUNICATIONS) { sValue = alarmObject.CurrentAlarmMinutes.ToString(); } else { aValues = FormatSensorValues(alarmObject); if (aValues.Length >= 3) { sValue = aValues[0]; dMin = aValues[1].ToDecimal(); dMax = aValues[2].ToDecimal(); sUCOM = aValues[3]; } } //Substitute values for format string //formatString = formatString.Replace("\\n", Environment.NewLine); //formatString = formatString.Replace("\\n", "\\n"); //formatString = formatString.Replace("\n", Environment.NewLine); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%ID%%", FormatFactoryID(alarmObject.FactoryID), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%NAME%%", alarmObject.ProbeName, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%NAME2%%", alarmObject.ProbeName2, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%TYPE%%", (alarmObject.AlarmType == AlarmType.COMMUNICATIONS.ToInt16()) ? alarmObject.SensorClass : alarmObject.SensorType, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%VALUE%%", sValue, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%MIN%%", dMin.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%MAX%%", dMax.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%UOM%%", sUCOM.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%TIME%%", alarmObject.AlarmTime.ToLocalTime().ToString(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%GMTTIME%%", alarmObject.AlarmTime.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%NOW%%", DateTime.Now.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%GROUP%%", alarmObject.GroupName, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%HOTCOLD%%", temperatureReading, 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%CORF%%", (alarmObject.IsCelsius) ? "C" : "F", 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%THRESHOLD%%", alarmObject.Threshold.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%THRESHOLDMINS%%", alarmObject.CondThresholdMins.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%TimeOutOfRange%%", Common.FormatMinutes(GetCurrentMinInAlarm(alarmObject)), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%AlarmStartTime%%", alarmObject.AlarmStartTime.ToLocalTime().ToString(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%ESCALATION%%", (alarmObject.IsEscalationNotification ? "** ESCALATION NOTIFICATION **" : ((alarmObject.IsFailsafeEscalationNotification) ? "** FAILSAFE ESCALATION NOTIFICATION **" : "")), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%SEVERITY%%", alarmObject.Severity.ToStr(), 1, -1, Constants.vbTextCompare); // Does this put in the actual current value? if (formatString != null) { if (formatString.Contains("%%CURRENTVALUE%%", StringComparison.OrdinalIgnoreCase)) { // Need to hit datbase for current values SensorCurrentStatus sensorCurrentStatus = new SensorCurrentStatus(); try { LogBook.Write("Getting current value and time for sensor"); sensorCurrentStatus.UTID = alarmObject.UTID; sensorCurrentStatus.Probe = alarmObject.Probe; sensorCurrentStatus.Execute(); } catch (Exception ex) { LogBook.Write(ex, "CooperAtkins.NotificationClient.NotificationComposer.NotificationStyle", ErrorSeverity.High); } finally { sensorCurrentStatus.Dispose(); } formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%CURRENTVALUE%%", sensorCurrentStatus.CurrentValue.ToStr(), 1, -1, Constants.vbTextCompare); formatString = Microsoft.VisualBasic.Strings.Replace(formatString, "%%CURRENTVALUETIME%%", sensorCurrentStatus.CurrentTime.ToLocalTime().ToString(), 1, -1, Constants.vbTextCompare); } } return(formatString); }