internal static void UpdateTimeLine(int documentId, int taskTime, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(documentId); } int projectId = Document.GetProject(documentId); using (DbTransaction tran = DbTransaction.Begin()) { // O.R TODO: SystemEvent [2/28/2006] if (DbDocument2.UpdateTimeline(documentId, taskTime) > 0) { // O.R: Recalculating project TaskTime if (projectId > 0) { TimeTracking.RecalculateProjectTaskTime(projectId); } } 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(); } }
internal static void UpdateTimeline(int todoId, DateTime startDate, DateTime finishDate, int taskTime, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(todoId); } object oStartDate = null; object oFinishDate = null; DateTime MinValue1 = DateTime.MinValue.AddDays(1); int TimeZoneId = Security.CurrentUser.TimeZoneId; if (startDate > MinValue1 && finishDate > MinValue1 && startDate > finishDate) { throw new Exception("wrong dates"); } if (startDate > MinValue1) { oStartDate = DBCommon.GetUTCDate(TimeZoneId, startDate); } if (finishDate > MinValue1) { oFinishDate = DBCommon.GetUTCDate(TimeZoneId, finishDate); } int projectId = ToDo.GetProject(todoId); using (DbTransaction tran = DbTransaction.Begin()) { int retVal = DbTodo2.UpdateTimeline(todoId, oStartDate, oFinishDate, taskTime); if (retVal > 0) { SystemEvents.AddSystemEvents(SystemEventTypes.Todo_Updated_Timeline, todoId); // O.R: Scheduling if (retVal == 1 || retVal == 3) // StartDate Changed { if (oStartDate != null) { Schedule.UpdateDateTypeValue(DateTypes.Todo_StartDate, todoId, (DateTime)oStartDate); } else { Schedule.DeleteDateTypeValue(DateTypes.Todo_StartDate, todoId); } } if (retVal == 2 || retVal == 3) // FinishDate Changed { if (oFinishDate != null) { Schedule.UpdateDateTypeValue(DateTypes.Todo_FinishDate, todoId, (DateTime)oFinishDate); } else { Schedule.DeleteDateTypeValue(DateTypes.Todo_FinishDate, todoId); } } // O.R: Recalculating project TaskTime if (projectId > 0) { TimeTracking.RecalculateProjectTaskTime(projectId); } ToDo.RecalculateState(todoId); } tran.Commit(); } }
private static void UpdateProjectAndManager(int todoId, int projectId, int managerId) { int oldProjectId = DBToDo.GetProject(todoId); int oldManagerId = DBToDo.GetManager(todoId); if (projectId == 0) // leave old project { projectId = oldProjectId; } if (managerId == 0) // Leave old manager { managerId = oldManagerId; } if (projectId != oldProjectId && projectId > 0 && !ToDo.CanCreate(projectId)) { throw new AccessDeniedException(); } if (projectId != oldProjectId || managerId != oldManagerId) { using (DbTransaction tran = DbTransaction.Begin()) { DBToDo.UpdateProjectAndManager(todoId, projectId, managerId); // OZ: User Role Addon if (managerId != oldManagerId) { UserRoleHelper.DeleteTodoManagerRole(todoId, oldManagerId); UserRoleHelper.AddTodoManagerRole(todoId, managerId); } if (projectId != oldProjectId) { ForeignContainerKey.Delete(UserRoleHelper.CreateTodoContainerKey(todoId), UserRoleHelper.CreateProjectContainerKey(oldProjectId)); if (projectId > 0) { ForeignContainerKey.Add(UserRoleHelper.CreateTodoContainerKey(todoId), UserRoleHelper.CreateProjectContainerKey(projectId)); } } // end OZ if (projectId != oldProjectId) { if (projectId > 0) { SystemEvents.AddSystemEvents(SystemEventTypes.Project_Updated_TodoList_TodoAdded, projectId, todoId); } else { SystemEvents.AddSystemEvents(SystemEventTypes.Project_Updated_TodoList_TodoDeleted, oldProjectId, todoId); } // O.R. [2008-07-30] if (oldProjectId > 0) { TimeTracking.RecalculateProjectTaskTime(oldProjectId); } if (projectId > 0) { TimeTracking.RecalculateProjectTaskTime(projectId); } } if (managerId != oldManagerId) { SystemEvents.AddSystemEvents(SystemEventTypes.Todo_Updated_Manager_ManagerDeleted, todoId, oldManagerId); SystemEvents.AddSystemEvents(SystemEventTypes.Todo_Updated_Manager_ManagerAdded, todoId, managerId); } tran.Commit(); } } }
internal static void UpdateTimeline(int eventId, DateTime startDate, DateTime finishDate, bool checkAccess) { if (checkAccess) { VerifyCanUpdate(eventId); } int TimeZoneId = Security.CurrentUser.TimeZoneId; startDate = DBCommon.GetUTCDate(TimeZoneId, startDate); finishDate = DBCommon.GetUTCDate(TimeZoneId, finishDate); int projectId = -1; bool hasRecurrence = false; using (IDataReader reader = CalendarEntry.GetEvent(eventId, false)) { if (reader.Read()) { if (reader["ProjectId"] != DBNull.Value) { projectId = (int)reader["ProjectId"]; } hasRecurrence = ((int)reader["HasRecurrence"] == 1); } } // O.R. [2009-12-18] Dates for recurrent events should be chnaged in recurrence editing. if (hasRecurrence) { return; } TimeSpan ts = finishDate.Subtract(startDate); int taskTime = (int)ts.TotalMinutes; using (DbTransaction tran = DbTransaction.Begin()) { int retVal = DbCalendarEntry2.UpdateTimeline(eventId, startDate, finishDate, taskTime); if (retVal > 0) { SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_Timeline, eventId); if (!hasRecurrence) { if (retVal == 1 || retVal == 3) { Schedule.UpdateDateTypeValue(DateTypes.CalendarEntry_StartDate, eventId, startDate); } if (retVal == 2 || retVal == 3) { Schedule.UpdateDateTypeValue(DateTypes.CalendarEntry_FinishDate, eventId, finishDate); } } else { // O.R.[2009-09-29]: Recalculate events dates for scheduling Schedule.DeleteDateTypeValue(DateTypes.CalendarEntry_StartDate, eventId); Schedule.DeleteDateTypeValue(DateTypes.CalendarEntry_FinishDate, eventId); int ReminderInterval; Hashtable ret = CalendarEntry.GetEventInstances(eventId, out ReminderInterval); foreach (DateTime dtStart in ret.Keys) { DateTime dtEnd = (DateTime)ret[dtStart]; if (dtStart > DateTime.UtcNow && dtEnd > DateTime.UtcNow) { DbSchedule2.AddNewDateTypeValue((int)DateTypes.CalendarEntry_StartDate, eventId, dtStart); DbSchedule2.AddNewDateTypeValue((int)DateTypes.CalendarEntry_FinishDate, eventId, dtEnd); } } } // O.R: Recalculating project TaskTime if (projectId > 0) { TimeTracking.RecalculateProjectTaskTime(projectId); } } CalendarEntry.RecalculateState(eventId); tran.Commit(); } }