Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }