Example #1
0
        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();
            }
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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();
            }
        }
Example #4
0
        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();
                }
            }
        }
Example #5
0
        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();
            }
        }