partial void BeforeRowDelete(int slaLevelID) { SlaLevel level = GetSlaLevel(LoginUser, slaLevelID); if (level == null) { return; } Organizations organizations = new Organizations(LoginUser); using (SqlCommand command = new SqlCommand()) { command.CommandText = "UPDATE Organizations SET SlaLevelID = NULL WHERE SlaLevelID = @SlaLevelID"; command.CommandType = CommandType.Text; command.Parameters.AddWithValue("@SlaLevelID", slaLevelID); organizations.ExecuteNonQuery(command, "Organizations"); } using (SqlCommand command = new SqlCommand()) { command.CommandText = "UPDATE Organizations SET InternalSlaLevelID = NULL WHERE InternalSlaLevelID = @SlaLevelID"; command.CommandType = CommandType.Text; command.Parameters.AddWithValue("@SlaLevelID", slaLevelID); organizations.ExecuteNonQuery(command, "Organizations"); } }
public SlaLevel Clone(string cloneName = null) { int cloneSlaLevelId = 0; LoginUser loginUser = Collection.LoginUser; SlaLevels slaLevels = new SlaLevels(loginUser); SlaLevel clone = slaLevels.AddNewSlaLevel(); clone.OrganizationID = OrganizationID; if (string.IsNullOrEmpty(cloneName)) { clone.Name = Name + " (Clone)"; } else { clone.Name = cloneName; } clone.Collection.Save(); cloneSlaLevelId = clone.SlaLevelID; string actionLog = string.Format("{0} cloned SLA Level {1} into {2}.", loginUser.GetUserFullName(), this.Name, clone.Name); ActionLogs.AddActionLog(loginUser, ActionLogType.Insert, ReferenceType.Sla, cloneSlaLevelId, actionLog); //Clone SLA's triggers SlaTriggers clonedSlaTriggers = new SlaTriggers(loginUser); SlaTriggers originalSlaTriggers = new SlaTriggers(loginUser); try { originalSlaTriggers.LoadBySlaLevel(OrganizationID, SlaLevelID); foreach (SlaTrigger slaTrigger in originalSlaTriggers.OrderBy(o => o.SlaTriggerID).ToList()) { SlaTrigger clonedSlaTrigger = clonedSlaTriggers.AddNewSlaTrigger(); slaTrigger.ClonePropertiesTo(clonedSlaTrigger); clonedSlaTrigger.SlaLevelID = cloneSlaLevelId; } clonedSlaTriggers.BulkSave(); } catch (Exception ex) { actionLog = string.Format("Failed to clone sla {0} Triggers into {1}.", this.SlaLevelID, clone.SlaLevelID); ActionLogs.AddActionLog(loginUser, ActionLogType.Insert, ReferenceType.Sla, cloneSlaLevelId, actionLog); ExceptionLogs.LogException(loginUser, ex, "Cloning Sla Triggers", "SlaLevels.Clone - Triggers"); } //Clone SLA's Pause on specific days try { clonedSlaTriggers = new SlaTriggers(loginUser); clonedSlaTriggers.LoadBySlaLevel(OrganizationID, cloneSlaLevelId); foreach (SlaTrigger slaTrigger in originalSlaTriggers) { SlaPausedDays clonedSlaPausedDays = new SlaPausedDays(loginUser); SlaPausedDays originalSlaPausedDays = new SlaPausedDays(loginUser); originalSlaPausedDays.LoadByTriggerID(slaTrigger.SlaTriggerID); int newTriggerId = clonedSlaTriggers.Where(p => p.TicketTypeID == slaTrigger.TicketTypeID && p.TicketSeverityID == slaTrigger.TicketSeverityID && p.SlaLevelID == cloneSlaLevelId).First().SlaTriggerID; foreach (SlaPausedDay slaPausedDay in originalSlaPausedDays.OrderBy(o => o.DateToPause).ToList()) { SlaPausedDay clonedSlaPausedDay = clonedSlaPausedDays.AddNewSlaPausedDay(); clonedSlaPausedDay.SlaTriggerId = newTriggerId; clonedSlaPausedDay.DateToPause = slaPausedDay.DateToPauseUtc; } clonedSlaPausedDays.BulkSave(); } } catch (Exception ex) { actionLog = string.Format("Failed to clone sla {0} DaysToPause into {1}.", this.SlaLevelID, clone.SlaLevelID); ActionLogs.AddActionLog(loginUser, ActionLogType.Insert, ReferenceType.Sla, cloneSlaLevelId, actionLog); ExceptionLogs.LogException(loginUser, ex, "Cloning Sla Pause On Days", "SlaLevels.Clone - Pause On Days"); } return(clone); }