private void modrules_bSetAction_Click(object sender, EventArgs e) { //Save the Rule as it stands. modrules_tSave.PerformClick(); var controller = new ActionController(); if (controller.RetrieveActionsForRule(_rule.Id).Any()) { //Get the actual Action. var action = controller.RetrieveActionsForRule(_rule.Id).FirstOrDefault(); _action = action; //Load the values required. modact_cEnabled.Checked = action.Enabled; modact_tValue.Text = action.OutputValue; modact_tRule.Text = _rule.ToString(); //Download the required communicator var commController = new CommunicatorController(); var comm = commController.GetAllCommunicators().FirstOrDefault(c => c.Id == action.CommunicatorId); if (comm != null) { _communicator = comm; _action.Communicator = comm; modact_tComm.Text = comm.ToString(); } else { modact_tComm.Text = ""; } //Actions exist. pTabPanel.SelectedTab = pModifyActions; } else { var db = new DataBoard(_communicator,_selectedDevice); db.GoToActionPage(_rule); db.ShowDialog(); _action = db.GetAction(); DebugOutput.Print("Changes made in the Data Manager are saved."); } }
/// <summary> /// When a Rule's critera have been met, this method is called to execute any /// and all Actions as per the Rule's settings. /// An Alarm is also raised from here. /// </summary> /// <param name="rule">The passed rule.</param> /// <param name="value">The value that passed the rule.</param> private void TakeAction(Rule rule, Value value) { //Handle any requirement to Alarm. if (rule.Alarm) { //Create accessor to the AlarmController class. var controller = new AlarmController(); //Create a new Alarm object as per the model. var alarm = new Alarm() { //Id = Guid.NewGuid(), Rule = rule, RuleId = rule.Id, Device = rule.Device, DeviceId = rule.DeviceId, Value = value, ValueId = value.Id, TimeStamp = value.EventTime, Accepted = false }; //Pass the alarm object to the AlarmController. controller.CreateAlarm(alarm); } var actionController = new ActionController(); var act = actionController.RetrieveActionsForRule(rule.Id).FirstOrDefault(); //Handle any Actions to be taken. if (act != null) { rule.Action = act; WriteData(rule,value); } }