Ejemplo n.º 1
0
        public bool UpdateColumnPosition(int userId, ColumnModelWithPosition column)
        {
            using IDbConnection db = new SqlConnection(_connectionString);
            Debug.Assert(column.Id != null, "column.Id != null");
            if (!IsAllowed(db, userId, (int)column.Id))
            {
                return(false);
            }

            int?boardId = db.Query <int?>(
                @"SELECT B.Id 
	            FROM ColumnTable AS C
	            JOIN BoardTable AS B ON B.Id = C.BoardId 
	            WHERE C.Id = @columnId;"    ,
                new { columnId = column.Id }).FirstOrDefault();

            if (boardId == null)
            {
                return(false);
            }

            int maxColumnPosition = GetColumnsCount(db, (int)boardId) - 1;

            if (column.Position < 0 || column.Position > maxColumnPosition)
            {
                return(false);
            }

            return(db.Query(
                       @"DECLARE @OldColumnPosition INT;
                SET @OldColumnPosition = 
	                (SELECT Position 
	                FROM ColumnTable 
	                WHERE Id = @columnId);

                UPDATE ColumnTable
                SET Position = C.Position - 1
                FROM ColumnTable AS C
                JOIN BoardTable AS B ON B.Id = C.BoardId
                WHERE B.Id = @boardId
                AND C.Position > @OldColumnPosition;

                UPDATE ColumnTable
                SET Position = C.Position + 1
                FROM ColumnTable AS C
                JOIN BoardTable AS B ON B.Id = C.BoardId
                WHERE B.Id = @boardId
                AND C.Position >= @newPosition;

                UPDATE ColumnTable
                SET Position = @newPosition
                OUTPUT DELETED.Id
                WHERE Id = @columnId;",
                       new { boardId, columnId = column.Id, newPosition = column.Position }).Any());
        }
Ejemplo n.º 2
0
        public ActionResult MoveColumn(ColumnModelWithPosition column)
        {
            int?userId;

            if ((userId = AuthHelper.GetUserId(HttpContext)) == null)
            {
                return(Unauthorized());
            }

            if (column.Id == null)
            {
                return(BadRequest());
            }

            bool result = _columnRepository.UpdateColumnPosition((int)userId, column);

            if (result)
            {
                return(Ok());
            }

            return(StatusCode(403));
        }