public Models.DigitalTwinResponse CreateDigitalTwin(Models.DigitalTwinRequest value, long organization) { Models.DigitalTwinResponse response = new Models.DigitalTwinResponse(); try { //SQL Statement var sqlString = "INSERT INTO digital_twins (id, name, description, security_token, digital_twin_model, organization, enabled, group, created) " + "VALUES (@id, @name, @description, @security_token, @digital_twin_model, @organization, @enabled, @group, @created)"; //Create UNIX Timestamp var utcDateTime = DateTime.UtcNow; var dto = new DateTimeOffset(utcDateTime); var unixDateTime = dto.ToUnixTimeMilliseconds(); var random = new Random(); int rnd = random.Next(1000000000, 2000000000); long securityToken = unixDateTime - rnd; using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Bigint, unixDateTime); command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Varchar, value.Name); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Varchar, value.Description); command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Bigint, securityToken); command.Parameters.AddWithValue("@digital_twin_model", NpgsqlTypes.NpgsqlDbType.Bigint, value.DigitalTwinModel); command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Bigint, organization); command.Parameters.AddWithValue("@enabled", NpgsqlTypes.NpgsqlDbType.Bigint, value.Enabled); command.Parameters.AddWithValue("@group", NpgsqlTypes.NpgsqlDbType.Bigint, value.Group); command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.Timestamp, utcDateTime); command.Prepare(); command.ExecuteNonQuery(); //Log Success response.Status = "success"; response.Message = "digital twin created"; response.Id = unixDateTime; response.SecurityToken = securityToken; return(response); } } } catch (Exception ex) { //Log Exception //_logger.LogError(ex, "digital twin creation failed"); response.Status = "error"; response.Message = "digital twin creation failed"; response.Id = 0; response.SecurityToken = 0; return(response); } }
public Models.DigitalTwinResponse CreateDigitalTwin(Models.DigitalTwinRequest value, Guid organization) { Models.DigitalTwinResponse response = new Models.DigitalTwinResponse(); try { //SQL Statement var sqlString = "INSERT INTO digital_twins (id, name, description, security_token, digital_twin_model, organization, enabled, group_, created, created_by) " + "VALUES (@id, @name, @description, @security_token, @digital_twin_model, @organization, @enabled, @group_, @created, @created_by)"; //Create a new Id UUID Guid idGuid = Guid.NewGuid(); //Create a new Security Token UUID Guid securityTokenGuid = Guid.NewGuid(); using (var connection = new NpgsqlConnection(connectionString)) { connection.Open(); using (var command = new NpgsqlCommand(sqlString, connection)) { command.Parameters.AddWithValue("@id", NpgsqlTypes.NpgsqlDbType.Uuid, idGuid); command.Parameters.AddWithValue("@name", NpgsqlTypes.NpgsqlDbType.Text, value.Name); command.Parameters.AddWithValue("@description", NpgsqlTypes.NpgsqlDbType.Text, value.Description); command.Parameters.AddWithValue("@security_token", NpgsqlTypes.NpgsqlDbType.Uuid, securityTokenGuid); command.Parameters.AddWithValue("@digital_twin_model", NpgsqlTypes.NpgsqlDbType.Uuid, value.DigitalTwinModel); command.Parameters.AddWithValue("@organization", NpgsqlTypes.NpgsqlDbType.Uuid, organization); command.Parameters.AddWithValue("@enabled", NpgsqlTypes.NpgsqlDbType.Bigint, value.Enabled); command.Parameters.AddWithValue("@group_", NpgsqlTypes.NpgsqlDbType.Uuid, value.Group); command.Parameters.AddWithValue("@created", NpgsqlTypes.NpgsqlDbType.TimestampTz, DateTime.UtcNow); command.Parameters.AddWithValue("@created_by", NpgsqlTypes.NpgsqlDbType.Uuid, value.CreatedBy); command.Prepare(); command.ExecuteNonQuery(); //Log Success response.Status = "success"; response.Message = "digital twin created"; response.Id = idGuid; response.SecurityToken = securityTokenGuid; return(response); } } } catch (Exception ex) { //Log Exception _logger.LogError(ex, "digital twin creation failed"); response.Status = "error"; response.Message = "digital twin creation failed"; response.Id = errorGuid; response.SecurityToken = errorGuid; return(response); } }