示例#1
0
        private void doWork()
        {
            string name       = "入侵报警主机";                        //资产名称的前缀
            long   deviceCode = Int32.Parse(textBox1.Text);      //资产编号起始
            int    dataCount  = Int32.Parse(AddNumtextBox.Text); //数据生成数量

            string[] sArray  = IpAddresstextBox.Text.Split('.');
            int      Port    = Int32.Parse(PorttextBox.Text);
            int      IPCount = Int32.Parse(sArray[3]);//ip尾号

            AddAlmDevprogressBar.Maximum = dataCount;
            AddAlmDevprogressBar.Step    = 1;

            for (int i = 0; i < dataCount;)
            {
                int           left    = dataCount - i;
                int           count   = left > AddDeviceHelper.ONCE_INSERT ? AddDeviceHelper.ONCE_INSERT : left;
                List <Device> devices = new List <Device>();
                for (int j = 0; j < count; j++, i++)
                {
                    AlarmDevice alarm = new AlarmDevice();
                    alarm.setIp(string.Format("{0}.{1}.{2}.{3}", sArray[0], sArray[1], sArray[2], IPCount++));
                    alarm.setPort(Port.ToString());
                    alarm.setDeviceCode(deviceCode++.ToString());
                    alarm.setDeviceName(name + i.ToString());
                    alarm.setSectorCount(4);//一个报警主机带4个子系统和4个防区
                    alarm.setSubSysCount(4);
                    devices.Add(alarm);

                    AddAlmDevprogressBar.Value += AddAlmDevprogressBar.Step;//让进度条增加一次
                }
                AddDeviceHelper.multiExcute(LoginMysqlFm.getNewDbHelper(), devices);
            }
            MessageBox.Show("添加成功");
        }
示例#2
0
        public void ResetAcknowledge(string acronym)
        {
            Device     device     = QueryDevice(acronym);
            AlarmState alarmState = DataContext.Table <AlarmState>().QueryRecordWhere("State = {0}", "Not Available");

            if (device.ID > 0 && alarmState.ID > 0)
            {
                TableOperations <AlarmDevice> alarmDeviceTable = DataContext.Table <AlarmDevice>();
                AlarmDevice alarmDevice = alarmDeviceTable.QueryRecordWhere("DeviceID = {0}", device.ID);

                if (alarmDevice.ID > 0)
                {
                    alarmDevice.StateID = alarmState.ID;
                    //                         1234567890
                    alarmDevice.DisplayData = "ACK Reset";
                    alarmDeviceTable.UpdateRecord(alarmDevice);
                }
            }
        }
示例#3
0
        public object GetAlarmState(int id)
        {
            dynamic jAlarmState = new JObject();
            AlarmDevice alarmDevice = DataContext.Table<AlarmDevice>().QueryRecordWhere("DeviceID = {0}", id);

            if ((object)alarmDevice != null)
            {
                AlarmState alarmState = DataContext.Table<AlarmState>().QueryRecordWhere("ID = {0}", alarmDevice.StateID);

                if ((object)alarmState != null)
                {
                    jAlarmState.displayData = alarmDevice.DisplayData;
                    jAlarmState.stateName = alarmState.State;
                    jAlarmState.stateColor = alarmState.Color;
                }
            }

            return jAlarmState;
        }
示例#4
0
        public object GetAlarmState(int id)
        {
            dynamic     state       = new JObject();
            AlarmDevice alarmDevice = DataContext.Table <AlarmDevice>().QueryRecordWhere("DeviceID = {0}", id);

            if (alarmDevice is null)
            {
                return(state);
            }

            AlarmState alarmState = DataContext.Table <AlarmState>().QueryRecordWhere("ID = {0}", alarmDevice.StateID);

            if (!(alarmState is null))
            {
                state.displayData = alarmDevice.DisplayData;
                state.stateName   = alarmState.State;
                state.stateColor  = alarmState.Color;
            }

            return(state);
        }
示例#5
0
        public void SendEmail(string acronym)
        {
            Device device = QueryDevice(acronym);

            // Get Device State and other Information
            AlarmDevice alarmDevice = DataContext.Table <AlarmDevice>().QueryRecordWhere("DeviceID = {0}", device.ID);

            string  stateName = "Unknown State";
            string  vendorName = "Unspecified";
            string  deviceType = "Unspecified";
            string  contactList = "None Defined";
            string  connectionString = "settings=none";
            string  parentAcronym = "";
            decimal longitude = 0.0M, latitude = 0.0M;
            int     framesPerSecond = 30;
            int?    vendorDeviceID  = device.VendorDeviceID;

            if (device.ParentID.HasValue)
            {
                int parentID = device.ParentID.Value;

                // If this is a concentrator child, get connection string of parent
                Device parentDevice = DataContext.Table <Device>().QueryRecordWhere("ID = {0}", parentID);

                if ((object)parentDevice != null)
                {
                    parentAcronym = parentDevice.Acronym;

                    string childConnectionString = connectionString;

                    // Settings in child connection string are not common
                    if (string.IsNullOrWhiteSpace(childConnectionString))
                    {
                        childConnectionString = "";
                    }
                    else
                    {
                        childConnectionString = string.Format("; childDevice={0}; {1}", acronym, childConnectionString);
                    }

                    connectionString = string.Format("parentDevice={0}; {1}{2}", parentDevice.Acronym, parentDevice.ConnectionString, childConnectionString);
                    vendorDeviceID   = vendorDeviceID ?? parentDevice.VendorDeviceID;
                }
            }

            if ((object)alarmDevice != null)
            {
                AlarmState alarmState = DataContext.Table <AlarmState>().QueryRecordWhere("ID = {0}", alarmDevice.StateID);
                if (!string.IsNullOrEmpty(alarmState?.State))
                {
                    stateName = alarmState.State;
                }
            }

            if (device.Longitude.HasValue)
            {
                longitude = device.Longitude.Value;
            }

            if (device.Latitude.HasValue)
            {
                latitude = device.Latitude.Value;
            }

            if (device.FramesPerSecond.HasValue)
            {
                framesPerSecond = device.FramesPerSecond.Value;
            }



            VendorDevice vendorDevice = DataContext.Table <VendorDevice>().QueryRecordWhere("ID = {0}", vendorDeviceID);

            if ((object)vendorDevice != null)
            {
                if (!string.IsNullOrEmpty(vendorDevice?.Name))
                {
                    deviceType = vendorDevice.Name;
                }

                Vendor vendor = DataContext.Table <Vendor>().QueryRecordWhere("ID = {0}", vendorDevice.VendorID);

                if (!string.IsNullOrEmpty(vendor?.Name))
                {
                    vendorName = vendor.Name;
                }
            }

            if (!String.IsNullOrEmpty(device.ContactList))
            {
                contactList = device.ContactList;
            }

            if (!String.IsNullOrEmpty(device.ConnectionString))
            {
                connectionString = device.ConnectionString;
            }

            // ready Email to be send. Load settings from ConfigFile Only
            string            emailServer                 = Mail.DefaultSmtpServer;
            string            emailSender                 = string.Format("{0}@{1}.local", Environment.UserName, Environment.UserDomainName);
            string            emailRecipients             = "";
            ConfigurationFile config                      = ConfigurationFile.Current;
            CategorizedSettingsElementCollection settings = config.Settings["deviceStatusNotification"];

            settings.Add("EmailServer", emailServer, "SMTP server to use for sending the email notifications.");
            settings.Add("EmailSender", emailSender, "Email address to be used for sending the email notifications.");
            settings.Add("EmailRecipients", emailRecipients, "Email addresses (comma or semicolon delimited) where the email notifications are to be sent.");
            emailServer     = settings["EmailServer"].ValueAs(emailServer);
            emailSender     = settings["EmailSender"].ValueAs(emailSender);
            emailRecipients = settings["EmailRecipients"].ValueAs(emailRecipients);

            if (string.IsNullOrEmpty(emailRecipients))
            {
                throw new ArgumentNullException("EmailRecipients");
            }

            Mail briefMessage    = new Mail(emailRecipients, emailSender, emailServer);
            Mail detailedMessage = new Mail(emailSender, emailSender, emailServer);

            briefMessage.Subject    = $"{acronym} {stateName}";
            detailedMessage.Subject = $"{acronym} {stateName}";
            detailedMessage.Body    = $"{acronym} is in {stateName} state. Please issue a field ticket to investigate\r\n\r\n";
            detailedMessage.Body   += $"Device Acronym: {acronym}\r\n";
            detailedMessage.Body   += $"Device Name: {device?.Name}\r\n";
            detailedMessage.Body   += $"Make: {vendorName}\r\n";
            detailedMessage.Body   += $"Model: {deviceType}\r\n";
            detailedMessage.Body   += $"Latitude: {latitude}\r\n";
            detailedMessage.Body   += $"Longitude: {longitude}\r\n";
            detailedMessage.Body   += $"Frames per Second: {framesPerSecond}\r\n";
            detailedMessage.Body   += $"Contacts: {contactList}\r\n";
            detailedMessage.Body   += $"Connection String:\r\n";
            detailedMessage.Body   += $"\t{String.Join("\r\n\t", connectionString.Split(';').Select(s => s.Trim()))}\r\n\r\n";
            detailedMessage.Body   += $"Last collected Statistics:\r\n";

            detailedMessage.Body += GenerateStatsTable(acronym, parentAcronym);
            foreach (string recipient in emailRecipients.Replace(" ", "").Split(';', ','))
            {
                string[] addressParts = recipient.Split(':');
                if (addressParts.Length > 1)
                {
                    if (string.Compare(addressParts[1], "sms", true) == 0)
                    {
                        // A brief message is to be sent.
                        briefMessage.ToRecipients = addressParts[0];
                        briefMessage.Send();
                    }
                }
                else
                {
                    // A detailed message is to be sent.
                    detailedMessage.ToRecipients = recipient;
                    detailedMessage.Send();
                }
            }
        }