Exemplo n.º 1
0
        public BoardGenerator(BoardSettingsViewModel boardSettings)
        {
            if (boardSettings == null)
            {
                throw new ArgumentNullException("boardSettings", "boardSettings is null.");
            }

            _BoardSettings = boardSettings;
        }
        public OperationResult <BoardSettingsViewModel> GetBoardSettings(string userId, int boardId)
        {
            try
            {
                bool isUserCanChangeBoard = CanUserChangeBoard(userId, boardId);

                if (!isUserCanChangeBoard)
                {
                    return(new OperationResult <BoardSettingsViewModel> {
                        Model = null, Message = GenericServiceResult.AccessDenied
                    });
                }

                Board         board         = unitOfWork.Boards.Get(boardId);
                BoardSettings boardSettings = unitOfWork.BoardSettings.Get(boardId);
                Project       project       = unitOfWork.Projects.Get(board.ProjectId);

                List <ColumnInfo> columns = GetColumns(boardId);

                List <Board>     boards     = unitOfWork.Boards.Get(b => b.ProjectId == project.Id && b.Id != board.Id).ToList();
                List <BoardInfo> boardInfos = new List <BoardInfo>();

                foreach (var b in boards)
                {
                    BoardInfo boardInfo = new BoardInfo {
                        Id = b.Id, Title = b.Title
                    };
                    boardInfos.Add(boardInfo);
                }

                BoardSettingsViewModel model = new BoardSettingsViewModel
                {
                    Title               = board.Title,
                    BoardId             = board.Id,
                    AccessToChangeBoard = (TaskSettingsRole)boardSettings.AccessToChangeBoard,
                    AccessToChangeTask  = (TaskSettingsRole)boardSettings.AccessToChangeTask,
                    AccessToCreateTask  = (TaskSettingsRole)boardSettings.AccessToCreateTask,
                    AccessToDeleteTask  = (TaskSettingsRole)boardSettings.AccessToDeleteTask,
                    ProjectId           = project.Id,
                    ProjectTitle        = project.Title,
                    Columns             = columns,
                    Boards              = boardInfos
                };

                return(new OperationResult <BoardSettingsViewModel> {
                    Model = model, Message = GenericServiceResult.Success
                });
            }
            catch
            {
                return(new OperationResult <BoardSettingsViewModel> {
                    Model = null, Message = GenericServiceResult.Error
                });
            }
        }
        public GenericServiceResult UpdateBoardSettings(BoardSettingsViewModel model, string userId)
        {
            try
            {
                bool isUserCanChangeBoard = CanUserChangeBoard(userId, model.BoardId);

                if (!isUserCanChangeBoard)
                {
                    return(GenericServiceResult.AccessDenied);
                }

                Board         board         = unitOfWork.Boards.Get(model.BoardId);
                BoardSettings boardSettings = unitOfWork.BoardSettings.Get(model.BoardId);

                board.Title = model.Title;
                boardSettings.AccessToChangeBoard = (int)model.AccessToChangeBoard;
                boardSettings.AccessToChangeTask  = (int)model.AccessToChangeTask;
                boardSettings.AccessToCreateTask  = (int)model.AccessToCreateTask;
                boardSettings.AccessToDeleteTask  = (int)model.AccessToDeleteTask;

                unitOfWork.BoardSettings.Update(boardSettings);
                unitOfWork.Boards.Update(board);

                foreach (var column in model.Columns)
                {
                    Column databaseColumn = unitOfWork.Columns.Get(column.Id);
                    databaseColumn.Position = column.Position;
                    databaseColumn.Title    = column.Title;

                    unitOfWork.Columns.Update(databaseColumn);
                }

                int    projectId    = unitOfWork.Projects.Get(board.ProjectId).Id;
                string creatorId    = unitOfWork.ProjectUser.GetFirstOrDefaultWhere(p => p.ProjectId == projectId && p.Role == (int)ProjectRoles.Administrator).UserId;
                string projectTitle = unitOfWork.Projects.Get(projectId).Title;

                NotificationMessage message = new NotificationMessage
                {
                    Title     = $"{projectTitle}",
                    Message   = $"Board {board.Title} settings were changed",
                    Initiator = userId,
                    SendTo    = creatorId
                };
                Notifyer.Notify(message);

                return(GenericServiceResult.Success);
            }
            catch
            {
                return(GenericServiceResult.Error);
            }
        }
Exemplo n.º 4
0
        public ActionResult UpdateSettings(BoardSettingsViewModel model)
        {
            string userId = User.Identity.GetUserId();
            var    result = boardService.UpdateBoardSettings(model, userId);

            if (result == GenericServiceResult.AccessDenied)
            {
                Response.StatusCode = (int)HttpStatusCode.Forbidden;
                return(RedirectToAction("Forbidden", "Error"));
            }

            if (result == GenericServiceResult.Error)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(RedirectToAction("BadRequest", "Error"));
            }

            return(RedirectToAction("Settings", new { boardId = model.BoardId }));
        }