/// <summary> /// Inserts data trigger rule. /// </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 InsertDataTriggerRule(DataTriggerRuleEditDto dto) { if (dto == null) throw new ArgumentNullException(string.Format(CultureInfo.InvariantCulture, Resources.NullArguementException, "dto")); const string CommandText = @" INSERT INTO [dbo].[DataTriggerRules] ( [LastModifiedOn] ,[DataTriggerId] ,[RuleGuid] ) VALUES ( GETDATE() ,@dataTriggerId ,@ruleGuid ) SET @id = SCOPE_IDENTITY();"; using (var cmd = new SqlCommand(CommandText)) { var idParam = cmd.Parameters.Add("@id", SqlDbType.Int); idParam.Direction = ParameterDirection.Output; cmd.Parameters.AddWithValue("@dataTriggerId", dto.DataTriggerId); cmd.Parameters.AddWithValue("@ruleGuid", dto.RuleGuid); var rowsAffected = Database.Execute(cmd); if (rowsAffected == 0) { throw new DBConcurrencyException(Resources.StaleDataException); } dto.Id = (int)idParam.Value; } }
/// <summary> /// Updates data trigger rule. /// </summary> /// <param name="dto">The DTO object.</param> /// <exception cref="System.ArgumentException">The input DTO is null.</exception> /// <exception cref="System.Data.DBConcurrencyException">Indicates stale data.</exception> public void UpdateDataTriggerRule(DataTriggerRuleEditDto dto) { if (dto == null) throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, Resources.NullArguementException, "dto")); const string CommandText = @" UPDATE [dbo].[DataTriggerRules] SET [LastModifiedOn] = GETDATE() ,[DataTriggerId] = @dataTriggerId ,[RuleGuid] = @ruleGuid WHERE [Id] = @id;"; using (var cmd = new SqlCommand(CommandText)) { cmd.Parameters.AddWithValue("@id", dto.Id); cmd.Parameters.AddWithValue("@dataTriggerId", dto.DataTriggerId); cmd.Parameters.AddWithValue("@ruleGuid", dto.RuleGuid); var rowsAffected = Database.Execute(cmd); if (rowsAffected == 0) { throw new DBConcurrencyException(Resources.StaleDataException); } } }
/// <summary> /// Reads data trigger rules. /// </summary> /// <param name="process">The process.</param> /// <param name="sr">The reader.</param> private static void ReadDataTriggerRules(ProcessEditDto process, SafeDataReader sr) { sr.NextResult(); int? triggerId = null; ProcessDataTriggerEditDto trigger = null; while (sr.Read()) { var ruleDto = new DataTriggerRuleEditDto { Id = sr.GetInt32(0), DataTriggerId = sr.GetInt32(1), RuleGuid = sr.GetGuid(2) }; if (ruleDto.DataTriggerId != triggerId) { trigger = process.TriggerList.First(t => t.Id == ruleDto.DataTriggerId); triggerId = ruleDto.DataTriggerId; } trigger.RuleList.Add(ruleDto); } }