public static int Create(string Name, string IdentifierMask, bool IsDefault, int Index) { if (!CanModify()) { throw new AccessDeniedException(); } try { IncidentBoxRow row = new IncidentBoxRow(); row.Name = Name; row.IdentifierMask = IdentifierMask; row.IsDefault = IsDefault; row.Index = Index; row.Update(); // Create Default IncidentBoxDocument IncidentBoxDocument doc = IncidentBoxDocument.Load(row.PrimaryKeyId); doc.GeneralBlock.Manager = Security.CurrentUser.UserID; doc.GeneralBlock.Responsible = Security.CurrentUser.UserID; IncidentBoxDocument.Save(doc); return(row.PrimaryKeyId); } catch (System.Data.SqlClient.SqlException ex) { if (ex.Message.IndexOf("'IX_IncidentBox_1'") != -1) { throw new IncidentBoxDuplicateIdentifierMaskException(); } else if (ex.Message.IndexOf("'IX_IncidentBox'") != -1) { throw new IncidentBoxDuplicateNameException(); } else { throw; } } }
public static void Save(IncidentBoxDocument document) { using (DbTransaction tran = DbTransaction.Begin()) { IncidentBoxRow row = IncidentBoxRow.Load(document.OwnerIncidentBoxId); IncidentBoxDocument prevDocument = IncidentBoxDocument.Load(document.OwnerIncidentBoxId, row.Document); row.Document = document.GetDocumentString(); row.ManagerId = document.GeneralBlock.Manager; if (document.GeneralBlock.AllowControl) { if (document.GeneralBlock.ControllerAssignType == ControllerAssignType.CustomUser) { row.ControllerId = document.GeneralBlock.Controller; } if (document.GeneralBlock.ControllerAssignType == ControllerAssignType.Manager) { row.ControllerId = document.GeneralBlock.Manager; } if (document.GeneralBlock.ControllerAssignType == ControllerAssignType.Creator) { row.ControllerId = 0; } } else { row.ControllerId = -1; } row.CalendarId = document.GeneralBlock.CalendarId; row.ExpectedDuration = document.GeneralBlock.ExpectedDuration; row.ExpectedResponseTime = document.GeneralBlock.ExpectedResponseTime; row.ExpectedAssignTime = document.GeneralBlock.ExpectedAssignTime; row.TaskTime = document.GeneralBlock.TaskTime; row.Update(); // Find Real Update if (prevDocument.GeneralBlock.AllowControl && !document.GeneralBlock.AllowControl) { // Turn OffControling Incident.RaiseTurnOffControling(document.OwnerIncidentBoxId); } else if (document.GeneralBlock.AllowControl) { if (prevDocument.GeneralBlock.Manager != document.GeneralBlock.Manager && document.GeneralBlock.ControllerAssignType == ControllerAssignType.Manager) { Incident.RaiseChangeController(document.OwnerIncidentBoxId, prevDocument.GeneralBlock.Manager, document.GeneralBlock.Manager); } else if (document.GeneralBlock.ControllerAssignType == ControllerAssignType.CustomUser && prevDocument.GeneralBlock.Controller != document.GeneralBlock.Controller) { Incident.RaiseChangeController(document.OwnerIncidentBoxId, prevDocument.GeneralBlock.Controller, document.GeneralBlock.Controller); } } if (prevDocument.GeneralBlock.Manager != document.GeneralBlock.Manager) { Incident.RaiseChangeManager(document.OwnerIncidentBoxId, prevDocument.GeneralBlock.Manager, document.GeneralBlock.Manager); } tran.Commit(); } }