/// <summary> /// Inserts state connector security configuration. /// </summary> /// <param name="dto">The DTO object.</param> /// <exception cref="System.ArgumentNullException">The input DTO is null.</exception> public void InsertStateConnectorSecurityConfiguration(StateConnectorSecurityConfigurationEditDto dto) { if (dto == null) throw new ArgumentNullException(string.Format(CultureInfo.InvariantCulture, Resources.NullArguementException, "dto")); const string Sql = @" INSERT INTO [dbo].[StateConnectorSecurityConfigurations] ( [StateOutGuid] ,[StateInGuid] ,[CanMove] ,[RoleId] ,[BusinessUnitId] ,[PersonFieldName] ) VALUES ( @stateOutGuid ,@stateInGuid ,@canMove ,@roleId ,@businessUnitId ,@personFieldName ); SELECT [Id] FROM [dbo].[StateConnectorSecurityConfigurations] WHERE [Id] = SCOPE_IDENTITY() "; using (var ctx = ConnectionManager<SqlConnection>.GetManager(Database.VeyronMeta, false)) { var cn = ctx.Connection; using (var cmd = new SqlCommand(Sql, cn)) { cmd.Parameters.AddWithValue("@stateOutGuid", dto.StateOutGuid); cmd.Parameters.AddWithValue("@stateInGuid", dto.StateInGuid); cmd.Parameters.AddWithValue("@canMove", dto.CanMove); cmd.Parameters.AddWithValue("@roleId", dto.RoleId); cmd.Parameters.AddWithValue("@businessUnitId", dto.BusinessUnitId); cmd.Parameters.AddWithValue("@personFieldName", dto.PersonFieldName); dto.Id = (int)cmd.ExecuteScalar(); } } }
/// <summary> /// Updates state connector security configuration. /// </summary> /// <param name="dto">The DTO object.</param> /// <exception cref="System.ArgumentNullException">The input DTO is null.</exception> /// <exception cref="System.Data.DBConcurrencyException">Indicates stale data.</exception> public void UpdateStateConnectorSecurityConfiguration(StateConnectorSecurityConfigurationEditDto dto) { if (dto == null) throw new ArgumentNullException(string.Format(CultureInfo.InvariantCulture, Resources.NullArguementException, "dto")); const string Sql = @" UPDATE [dbo].[StateConnectorSecurityConfigurations] SET [CanMove] = @canMove ,[RoleId] = @roleId ,[BusinessUnitId] = @businessUnitId ,[PersonFieldName] = @personFieldName WHERE [Id] = @id "; using (var ctx = ConnectionManager<SqlConnection>.GetManager(Database.VeyronMeta, false)) { var cn = ctx.Connection; using (var cmd = new SqlCommand(Sql, cn)) { cmd.CommandText = Sql; cmd.Parameters.AddWithValue("@canMove", dto.CanMove); cmd.Parameters.AddWithValue("@roleId", dto.RoleId); cmd.Parameters.AddWithValue("@businessUnitId", dto.BusinessUnitId); cmd.Parameters.AddWithValue("@personFieldName", dto.PersonFieldName); cmd.Parameters.AddWithValue("@id", dto.Id); var rowsAffected = cmd.ExecuteNonQuery(); if (rowsAffected == 0) { throw new DBConcurrencyException(Resources.StaleDataException); } } } }
/// <summary> /// Reads connectors security configurations. /// </summary> /// <param name="process">The process.</param> /// <param name="sr">The reader.</param> private static void ReadConnectorsSecurityConfigurations(ProcessEditDto process, SafeDataReader sr) { sr.NextResult(); var connectorInId = Guid.Empty; var connectorOutId = Guid.Empty; ConnectorDTO connector = null; while (sr.Read()) { var securityDto = new StateConnectorSecurityConfigurationEditDto { Id = sr.GetInt(0), CanMove = sr.GetBoolean(1), RoleId = sr.GetInt(2), BusinessUnitId = sr.GetInt(3), PersonFieldName = sr.GetString(4), StateInGuid = sr.GetGuid(5), StateOutGuid = sr.GetGuid(6) }; if (connectorInId != securityDto.StateInGuid || connectorOutId != securityDto.StateOutGuid) { connectorInId = securityDto.StateInGuid; connectorOutId = securityDto.StateOutGuid; connector = process.States.SelectMany(s => s.Connectors).FirstOrDefault(c => c.ConnectsToStateGuid == connectorInId && c.ConnectsFromStateGuid == connectorOutId); if (connector == null) { continue; } } if (connector != null) { connector.SecurityConfigurations.Add(securityDto); } } }