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")); }
/// <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); }
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); }; }