Beispiel #1
0
        public PartialViewResult Settings(int boardId, int id)
        {
            // настройки проекта, могут не сущесвовать, если не разу не задавались
            IProjectsUser settings = Utility.Projects
                                     .GetSettings(Utility.Authentication.UserId)
                                     .FirstOrDefault(x => x.ProjectId == id);

            IBoard board = Utility.Boards.Get(boardId);

            //// проверка прав делается вручную, так как в сигнатуру экшена не удобно добавлять boardId
            //CheckAccess(boardId);

            ViewData.Add("Board", board);
            ViewData.Model = settings;

            return(PartialView("Settings"));
        }
Beispiel #2
0
        /// <summary>
        /// Проверка настроек уведомлений для пользователя в проекте
        /// </summary>
        /// <param name="reciveType">какой тип уведомлений требуется</param>
        /// <param name="task">проверяемая задача</param>
        /// <param name="user">проверяемый пользователь</param>
        /// <returns></returns>
        bool CheckSettings(ReciveType reciveType, ITask task, IUser user)
        {
            // Текущий пользователь является инициатором сообщения
            if (!user.RecievOwnEvents && Utility.Authentication.UserId == user.Id)
            {
                // текущий пользователь не хочет получать свои сообщения
                return(false);
            }

            IProjectsUser setting = Utility.Projects.GetSettings(user.Id)
                                    .FirstOrDefault(x => x.ProjectId == task.ProjectId);

            bool isSet = setting != null && setting.ReciveEMail.HasTheFlag((int)reciveType);

            if (isSet && reciveType == ReciveType.TaskAssigned)
            {
                return(task.ExecutorUserId == user.Id);
            }

            return(isSet);
        }
Beispiel #3
0
        public ProjectsUtility()
        {
            OnCreate += (s, e) =>
            {
                IProject project = e.Data;
                var      key     = Cache.GetKeys(
                    CacheKey.Board, project.BoardId,
                    CacheKey.Project, CacheKey.All);
                Cache.Clear(key);
            };

            OnUpdate += (s, e) =>
            {
                IProject project = e.Data;
                Get(project.BoardId, project.Id).Name = project.Name;
            };

            OnDelete += (s, e) =>
            {
                IProject project = e.Data;

                var key = Cache.GetKeys(
                    CacheKey.Board, project.BoardId,
                    CacheKey.Project, CacheKey.All);
                Cache.Clear(key);
            };

            OnUpdateUserSettings += (s, e) =>
            {
                IProjectsUser projectsUser = e.Data;
                var           key          = Cache.GetKeys(
                    CacheKey.User, projectsUser.UserId,
                    CacheKey.ProjectsUser, CacheKey.All);
                Cache.Clear(key);
            };
        }