Esempio n. 1
0
        private static void UpdateProjectAndManager(int objectId, int projectId, int managerId)
        {
            int oldProjectId = DBEvent.GetProject(objectId);
            int oldManagerId = DBEvent.GetManager(objectId);

            if (managerId == 0)             // Don't change manager
            {
                managerId = oldManagerId;
            }

            if (projectId == 0)            // Don't change project
            {
                projectId = oldProjectId;
            }

            if (projectId != oldProjectId || managerId != oldManagerId)
            {
                using (DbTransaction tran = DbTransaction.Begin())
                {
                    DbCalendarEntry2.UpdateProjectAndManager(objectId, projectId, managerId);

                    // OZ: User Role Addon
                    if (managerId != oldManagerId)
                    {
                        UserRoleHelper.DeleteEventManagerRole(objectId, oldManagerId);
                        UserRoleHelper.AddEventManagerRole(objectId, managerId);
                    }

                    if (projectId != oldProjectId)
                    {
                        ForeignContainerKey.Delete(UserRoleHelper.CreateEventContainerKey(objectId), UserRoleHelper.CreateProjectContainerKey(oldProjectId));
                        if (projectId > 0)
                        {
                            ForeignContainerKey.Add(UserRoleHelper.CreateEventContainerKey(objectId), UserRoleHelper.CreateProjectContainerKey(projectId));
                        }
                    }
                    // end OZ

                    if (projectId != oldProjectId)
                    {
                        if (projectId > 0)
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.Project_Updated_CalendarEntryList_CalendarEntryAdded, projectId, objectId);
                        }
                        else
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.Project_Updated_CalendarEntryList_CalendarEntryDeleted, oldProjectId, objectId);
                        }
                    }

                    if (managerId != oldManagerId)
                    {
                        SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_Manager_ManagerDeleted, objectId, oldManagerId);
                        SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_Manager_ManagerAdded, objectId, managerId);
                    }

                    tran.Commit();
                }
            }
        }
Esempio n. 2
0
        public static void DeclineResource(int eventId)
        {
            int userId = Security.CurrentUser.UserID;

            using (DbTransaction tran = DbTransaction.Begin())
            {
                DbCalendarEntry2.ResourceReply(eventId, userId, false);

                SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_ResourceList_RequestDenied, eventId, userId);

                tran.Commit();
            }
        }
Esempio n. 3
0
        internal static void UpdateGeneralInfo(int eventId, int typeId, string title, string description, string location, bool checkAccess)
        {
            if (checkAccess)
            {
                VerifyCanUpdate(eventId);
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                DbCalendarEntry2.UpdateGeneralInfo(eventId, typeId, title, description, location);
                SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_GeneralInfo, eventId);

                tran.Commit();
            }
        }
Esempio n. 4
0
        internal static void UpdatePriority(int eventId, int priorityId, bool checkAccess)
        {
            if (checkAccess)
            {
                VerifyCanUpdate(eventId);
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                if (0 < DbCalendarEntry2.UpdatePriority(eventId, priorityId))
                {
                    SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_Priority, eventId);
                }

                tran.Commit();
            }
        }
Esempio n. 5
0
        internal static void UpdateClient(int eventId, PrimaryKeyId contactUid, PrimaryKeyId orgUid, bool checkAccess)
        {
            if (checkAccess)
            {
                VerifyCanUpdate(eventId);
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                if (0 < DbCalendarEntry2.UpdateClient(eventId, contactUid == PrimaryKeyId.Empty ? null : (object)contactUid, orgUid == PrimaryKeyId.Empty ? null : (object)orgUid))
                {
                    // TODO:
                    //SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_Client, projectId);
                }

                tran.Commit();
            }
        }
Esempio n. 6
0
        private static void UpdateListResources(int objectId, DataTable items, bool checkAccess)
        {
            if (checkAccess)
            {
                VerifyCanUpdate(objectId);
            }

            ArrayList oldItems = new ArrayList();

            using (IDataReader reader = DBEvent.GetListResources(objectId, Security.CurrentUser.TimeZoneId))
            {
                Common.LoadPrincipals(reader, oldItems);
            }

            ArrayList add = new ArrayList();
            ArrayList del = new ArrayList();

            foreach (DataRow row in items.Rows)
            {
                int id = (int)row["PrincipalId"];
                if (oldItems.Contains(id))
                {
                    oldItems.Remove(id);
                }
                else
                {
                    add.Add(id);
                }
            }

            del.AddRange(oldItems);

            using (DbTransaction tran = DbTransaction.Begin())
            {
                foreach (int id in del)
                {
                    DBEvent.DeleteResource(objectId, id);

                    // OZ: User Role Addon
                    UserRoleHelper.DeleteEventResourceRole(objectId, id);
                    //

                    SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_ResourceList_AssignmentDeleted, objectId, id);
                }

                foreach (DataRow row in items.Rows)
                {
                    int  id = (int)row["PrincipalId"];
                    bool mustBeConfirmed = (bool)row["MustBeConfirmed"];
                    bool updated         = true;

                    if (add.Contains(id))
                    {
                        DbCalendarEntry2.ResourceAdd(objectId, id, mustBeConfirmed);
                        if (User.IsExternal(id))
                        {
                            DBCommon.AddGate((int)OBJECT_TYPE, objectId, id);
                        }
                    }
                    else
                    {
                        updated = (0 < DbCalendarEntry2.ResourceUpdate(objectId, id, mustBeConfirmed));
                    }

                    // OZ: User Role Addon
                    UserRoleHelper.AddEventResourceRole(objectId, id);
                    // end

                    if (updated)
                    {
                        if (mustBeConfirmed)
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_ResourceList_RequestAdded, objectId, id);
                        }
                        else
                        {
                            SystemEvents.AddSystemEvents(SystemEventTypes.CalendarEntry_Updated_ResourceList_AssignmentAdded, objectId, id);
                        }
                    }
                }

                tran.Commit();
            }
        }
Esempio n. 7
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();
            }
        }