public void ProcessGadget(Guid id, GadgetSetValueRequest value, Action <string> logCallback) { Gadget gadget = Get(id, false); if (gadget == null) { logCallback(string.Format("Gadget '{0}' not found.", id)); return; } else { logCallback(string.Format("Gadget {0} is found. Item will be updated.", gadget.Name)); } _database.ExecuteScalar <string>( ConstantStrings.SqlQueries.Gadget.Update.UpdateValue, new List <SqliteParameter> { new SqliteParameter("Id", id), new SqliteParameter("Value", value.Value), new SqliteParameter("ComplexValue", value.ComplexValue) } ); logCallback(string.Format("Gadget {0} is updated with values ({1},{2}).", gadget.Name, value.Value, value.ComplexValue)); var actions = _gadgetActionService.GetByGadgetSource(id); actions.ForEach(action => { logCallback(string.Format("Action {0} - ({1}) checking.", action.Order, action.Id)); Gadget targetGadget = Get(action.TargetGadget, false); var scriptResult = _scriptingService.Execute( action, new ScriptParameter() { SourceNewValue = value.Value, SourceNewComplexValue = value.ComplexValue, SourceOldValue = gadget.Value, SourceOldComplexValue = gadget.ComplexValue, TargetOldValue = targetGadget.Value, TargetOldComplexValue = targetGadget.ComplexValue }); if (scriptResult.CanExecute) { ProcessGadget(action.TargetGadget, new GadgetSetValueRequest() { Value = scriptResult.TargetNewValue, ComplexValue = scriptResult.TargetNewComplexValue }, logCallback); } }); }
public Gadget BindGadgetData(SqliteDataReader reader) { Gadget returnValue = new Gadget { Id = reader.GetValueAsGuid("Id"), Name = reader.GetValue(reader.GetOrdinal("Name")).ToString(), Configuration = reader.GetValue(reader.GetOrdinal("Configuration")).ToString(), Status = (GadgetStatus)(int)(long)reader.GetValue(reader.GetOrdinal("Status")), Value = (double)reader.GetValue(reader.GetOrdinal("Value")), ComplexValue = reader.GetValue(reader.GetOrdinal("ComplexValue")).ToString(), SectionPosition = (PositionType)(int)(long)reader.GetValue(reader.GetOrdinal("SectionPosition")), Definition = reader.GetValueAsGuid("Definition"), ReadFrequency = reader.GetValue(reader.GetOrdinal("ReadFrequency")).ToString(), }; return(returnValue); }
public Gadget Get(Guid id, bool includeActions) { Gadget gadget = null; SqliteDataReader reader = _database.ExecuteReader( ConstantStrings.SqlQueries.Gadget.Get.IdParam, new List <SqliteParameter> { new SqliteParameter("Id", id) } ); if (reader.Read()) { gadget = BindGadgetData(reader); if (includeActions) { gadget.SourceActions.AddRange(_gadgetActionService.GetByGadgetSource(id)); gadget.TargetActions.AddRange(_gadgetActionService.GetByGadgetTarget(id)); } } return(gadget); }