internal static void UpdateGeneralInfo(int taskId, string title, string description, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(taskId); } using (DbTransaction tran = DbTransaction.Begin()) { DbTask2.UpdateGeneralInfo(taskId, title, description); SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_GeneralInfo, taskId); tran.Commit(); } }
internal static void UpdatePriority(int taskId, int priorityId, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(taskId); } using (DbTransaction tran = DbTransaction.Begin()) { if (0 < DbTask2.UpdatePriority(taskId, priorityId)) { SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_Priority, taskId); } tran.Commit(); } }
internal static void UpdatePhase(int taskId, int phaseId, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(taskId); } using (DbTransaction tran = DbTransaction.Begin()) { if (0 < DbTask2.UpdatePhase(taskId, phaseId)) { // OR: we do not have the appropriate event // SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ConfigurationInfo, taskId); } tran.Commit(); } }
internal static void UpdateConfigurationInfo(int taskId, int activationTypeId, int completionTypeId, bool mustBeConfirmed, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(taskId); } using (DbTransaction tran = DbTransaction.Begin()) { if (0 < DbTask2.UpdateConfigurationInfo(taskId, activationTypeId, completionTypeId, mustBeConfirmed)) { SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ConfigurationInfo, taskId); Task.RecalculateAllStates(DBTask.GetProject(taskId)); } tran.Commit(); } }
internal static void UpdateTaskTime(int taskId, int taskTime, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(taskId); } int projectId = Task.GetProject(taskId); using (DbTransaction tran = DbTransaction.Begin()) { int retVal = DbTask2.UpdateTaskTime(taskId, taskTime); if (retVal > 0) { // OR: we do not have the appropriate event // SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_Timeline, taskId); // O.R: Recalculating project TaskTime TimeTracking.RecalculateProjectTaskTime(projectId); } tran.Commit(); } }
private static void UpdateListResources(int objectId, DataTable items, bool checkAccess) { if (checkAccess) { VerifyCanModifyResources(objectId); } int taskCompletionTypeId; bool taskMustBeConfirmed; bool taskIsCompleted; int taskReasonId; int taskProjectId; int taskPercentCompleted; using (IDataReader reader = DBTask.GetTask(objectId, Security.CurrentUser.TimeZoneId, Security.CurrentUser.LanguageId)) { reader.Read(); taskCompletionTypeId = (int)reader["CompletionTypeId"]; taskMustBeConfirmed = (bool)reader["MustBeConfirmed"]; taskIsCompleted = (bool)reader["IsCompleted"]; taskReasonId = (int)reader["ReasonId"]; taskProjectId = (int)reader["ProjectId"]; taskPercentCompleted = (int)reader["PercentCompleted"]; } int managerId = DBProject.GetProjectManager(taskProjectId); ArrayList oldItems = new ArrayList(); using (IDataReader reader = DBTask.GetListResources(objectId, Security.CurrentUser.TimeZoneId)) { Common.LoadItems(reader, "UserId", oldItems); } ArrayList add = new ArrayList(); ArrayList del = new ArrayList(); foreach (DataRow row in items.Rows) { int id = (int)row["UserId"]; if (oldItems.Contains(id)) { oldItems.Remove(id); } else { add.Add(id); } } del.AddRange(oldItems); int cuid = Security.CurrentUser.UserID; using (DbTransaction tran = DbTransaction.Begin()) { foreach (int id in del) { DBCommon.DeleteGate((int)OBJECT_TYPE, objectId, id); // O.R. [2009-02-12] DBCalendar.DeleteStickedObject((int)OBJECT_TYPE, objectId, id); DBTask.DeleteResource(objectId, id); // OZ: User Role Addon UserRoleHelper.DeleteTaskResourceRole(objectId, id); if (id != managerId) { UserRoleHelper.DeleteTaskManagerRole(objectId, id); } // SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_AssignmentDeleted, objectId, id); } foreach (DataRow row in items.Rows) { int id = (int)row["UserId"]; bool mustBeConfirmed = (bool)row["MustBeConfirmed"]; bool canManage = (bool)row["CanManage"]; if (id == managerId) { canManage = true; } bool updated = true; if (add.Contains(id)) { DbTask2.AddResource(objectId, id, mustBeConfirmed, canManage); if (User.IsExternal(id)) { DBCommon.AddGate((int)OBJECT_TYPE, objectId, id); } } else { updated = (0 < DbTask2.UpdateResource(objectId, id, mustBeConfirmed, canManage)); } // OZ: User Role Addon if (id != managerId) { UserRoleHelper.DeleteTaskManagerRole(objectId, id); } UserRoleHelper.DeleteTaskResourceRole(objectId, id); if (canManage) { if (id != managerId) { UserRoleHelper.AddTaskManagerRole(objectId, id); } } else { UserRoleHelper.AddTaskResourceRole(objectId, id); } // if (updated) { if (mustBeConfirmed) { SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_RequestAdded, objectId, id); } else { SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_ResourceList_AssignmentAdded, objectId, id); } } } if (taskCompletionTypeId == (int)CompletionType.All) { int overallPercent = Task.RecalculateOverallPercent(objectId); if (taskPercentCompleted != overallPercent) { DBTask.UpdatePercent(objectId, overallPercent); SystemEvents.AddSystemEvents(SystemEventTypes.Task_Updated_Percent, objectId); } // Если задача была незавершённой, то при удалении людей, процент завершения может // увеличиться и достигнуть 100%. Если при этом не требуется подтверждения менеджера, // то произойдёт завершение задачи if (!taskIsCompleted && !taskMustBeConfirmed && overallPercent == 100) { DBTask.UpdateCompletion(objectId, true, (int)CompletionReason.CompletedAutomatically); Task.CompleteToDo(objectId); Task.RecalculateAllStates(taskProjectId); } DBTask.RecalculateSummaryPercent(objectId); } tran.Commit(); } }