public DeviceEnvironmentVariable Post([FromBody] CreateDeviceEnvironmentVariableRequest request) { using (var connection = _connectionFactory.CreateAndOpen()) using (var transaction = connection.BeginTransaction()) { //Insert the variable var variable = connection.InsertDeviceEnvironmentVariable(transaction, request.DeviceId, request.Name, request.Value); //Insert an event connection.InsertDeviceEvent( transaction, variable.DeviceId, DeviceEventType.EnvironmentVariableCreated, $"Device Environment variable '{variable.Name}' created with value: '{variable.Value}'."); //Update the configuration version connection.SetNewDeviceConfigurationVersionForDevice(transaction, request.DeviceId); //We're done transaction.Commit(); return(variable); } }
public Task <DeviceEnvironmentVariable> CreateEnvironmentVariableAsync(CreateDeviceEnvironmentVariableRequest request, CancellationToken cancellationToken = new CancellationToken()) { return(_client.MakeJsonRequestAsync <DeviceEnvironmentVariable>( cancellationToken, HttpMethod.Post, ResourceUrls.DeviceEnvironmentVariables, request: request)); }
protected override async Task <int> ExecuteAsync(CommandContext context, CancellationToken cancellationToken) { //Get the device var device = await context.FindDeviceAsync(Device, cancellationToken); if (device == null) { return(1); } //Get the existing variables var variables = await context.Client.DeviceEnvironmentVariables.GetEnvironmentVariables(device.Id, cancellationToken); var variable = variables.FirstOrDefault(v => v.Name == Name); if (variable == null) { var request = new CreateDeviceEnvironmentVariableRequest() { DeviceId = device.Id, Name = Name, Value = Value }; //Create the new one await context.Client.DeviceEnvironmentVariables.CreateEnvironmentVariableAsync(request, cancellationToken); } else { //Create a new one variable.Value = Value; //Update the existing one await context.Client.DeviceEnvironmentVariables.UpdateEnvironmentVariable(variable, cancellationToken); } return(0); }