示例#1
0
        public BoardColumnController()
        {
            Get("/api/v1/board_column/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameter("board_column_guid"),
                    new ExistsInTable("board_column_guid", "board_columns", "guid")
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                return(HttpResponse.Item("board_column", new BoardColumnTransformer().Transform(
                                             BoardColumnRepository.FindByGuid((string)Request.Query["board_column_guid"])
                                             )));
            });

            Get("/api/v1/board/columns/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameter("board_guid"),
                    new ExistsInTable("board_guid", "boards", "guid")
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var board = BoardRepository.FindByGuid(GetRequestStr("board_guid"));

                return(HttpResponse.Item("board_columns", new BoardColumnTransformer().Many(board.Columns())));
            });
        }
        public void Create_DataCorrect_BoardColumnCreated()
        {
            var user    = UserFaker.Create();
            var board   = BoardFaker.Create(user);
            var browser = new Browser(new DefaultNancyBootstrapper());

            var boardColumnTitle = "testBoard" + Rand.SmallInt();
            var boardOrder       = Convert.ToString(Rand.IntRange(0, 25));

            var result = browser.Post("/api/v1/board_column/create", with => {
                with.HttpRequest();
                with.Query("api_token", Jwt.FromUserId(user.id));
                with.Query("name", boardColumnTitle);
                with.Query("board_guid", board.guid);
                with.Query("board_order", boardOrder);
            }).Result;

            Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);

            var json = JObject.Parse(result.Body.AsString());

            var guid = json["data"]["board_column"].Value <string>("guid") ?? "";

            var createdBoardColumn = BoardColumnRepository.FindByGuid(guid);

            Assert.NotNull(createdBoardColumn);
            Assert.AreEqual(boardColumnTitle, createdBoardColumn.name);
            Assert.AreEqual(boardOrder, Convert.ToString(createdBoardColumn.board_order));
            Assert.AreEqual(
                createdBoardColumn.guid, json["data"]["board_column"].Value <string>("guid") ?? ""
                );
        }
示例#3
0
        public static CardModel UpdateAndRefresh(CardModel model, JObject data)
        {
            var column = BoardColumnRepository.FindByGuid(data.Value <string>("column_guid"));

            if (column != null)
            {
                model.column_id = column.id;
            }

            model.name         = data.Value <string>("name") ?? model.name;
            model.column_order = data.Value <int?>("column_order") ?? model.column_order;
            model.description  = data.Value <string>("description") ?? model.description;
            return(model.Save());
        }
示例#4
0
        public CardController()
        {
            Get("/api/v1/card/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameter("card_guid"),
                    new ExistsInTable("card_guid", "cards", "guid")
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                return(HttpResponse.Item("card", new CardTransformer().Transform(
                                             CardRepository.FindByGuid((string)Request.Query["card_guid"])
                                             )));
            });

            Get("/api/v1/cards/get", _ => {
                var page = GetRequestInt("page");
                page     = page > 0 ? page : 1;

                var pageSize = 25;
                return(HttpResponse.Data(new JObject()
                {
                    ["cards"] = new CardTransformer().Many(
                        DL.Model.Card.Card.Paginate(page, pageSize)
                        ),
                    ["meta"] = new JObject()
                    {
                        ["pages_count"] = (DL.Model.Card.Card.Count() / pageSize) + 1,
                        ["current_page"] = page
                    }
                }));
            });

            Get("/api/v1/project/cards/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameter("project_guid"),
                    new ExistsInTable("project_guid", "projects", "guid")
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var page = GetRequestInt("page");
                page     = page > 0 ? page : 1;

                var pageSize = 25;

                var project = ProjectRepository.FindByGuid(GetRequestStr("project_guid"));

                return(HttpResponse.Data(new JObject()
                {
                    ["cards"] = new CardTransformer().Many(project.Cards(page, pageSize)),
                    ["meta"] = new JObject()
                    {
                        ["pages_count"] = (project.CardsCount() / pageSize) + 1,
                        ["current_page"] = page
                    }
                }));
            });

            Get("/api/v1/board_column/cards/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameter("column_guid"),
                    new ExistsInTable("column_guid", "board_columns", "guid")
                });
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var column = BoardColumnRepository.FindByGuid(GetRequestStr("column_guid"));

                var page = GetRequestInt("page");
                page     = page > 0 ? page : 1;

                var pageSize = 25;

                return(HttpResponse.Data(new JObject()
                {
                    ["cards"] = new CardTransformer().Many(column.Cards(page, pageSize)),
                    ["meta"] = new JObject()
                    {
                        ["pages_count"] = (column.CardsCount() / pageSize) + 1,
                        ["current_page"] = page
                    }
                }));
            });
        }
        public BoardColumnCrudController()
        {
            Post("/api/v1/board_column/create", _ => {
                var me    = UserRepository.Find(CurrentRequest.UserId);
                var board = BoardRepository.FindByGuid(GetRequestStr("board_guid"));

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "name", "board_guid", "board_order" }),
                    new ExistsInTable("board_guid", "boards", "guid"),
                    new HasPermission(me, board.Project().id, EntityType.Project)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var boardOrder = (short)Request.Query["board_order"];

                if (BoardColumnRepository.Find(board, boardOrder) != null)
                {
                    return(HttpResponse.Error(HttpStatusCode.Conflict,
                                              "Board's column with this board's order already exists "));
                }

                var boardColumn = BoardColumnRepository.CreateAndGet(
                    (string)Request.Query["name"],
                    board,
                    boardOrder
                    );

                return(HttpResponse.Item(
                           "board_column", new BoardColumnTransformer().Transform(boardColumn), HttpStatusCode.Created
                           ));
            });

            Patch("/api/v1/board_column/edit", _ => {
                var me          = UserRepository.Find(CurrentRequest.UserId);
                var boardColumn = BoardColumnRepository.FindByGuid(GetRequestStr("board_column_guid"));
                var board       = BoardRepository.Find(boardColumn.board_id);

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "board_column_guid" }),
                    new ExistsInTable("board_column_guid", "board_columns", "guid"),
                    new HasPermission(me, boardColumn.Board().id, EntityType.Board)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                if (BoardColumnRepository.Find(board, Convert.ToInt16(GetRequestStr("board_order"))) != null)
                {
                    return(HttpResponse.Error(HttpStatusCode.Conflict,
                                              "Board's column with this board's order already exists "));
                }

                boardColumn = BoardColumnRepository.UpdateAndRefresh(boardColumn, new JObject()
                {
                    ["name"]        = GetRequestStr("name"),
                    ["board_order"] = GetRequestStr("board_order")
                });

                return(HttpResponse.Item("board_column", new BoardColumnTransformer().Transform(boardColumn)));
            });

            Delete("/api/v1/board_column/delete", _ => {
                var me          = UserRepository.Find(CurrentRequest.UserId);
                var boardColumn = BoardColumnRepository.FindByGuid(GetRequestStr("board_column_guid"));

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "board_column_guid" }),
                    new ExistsInTable("board_column_guid", "board_columns", "guid"),
                    new HasPermission(me, boardColumn.Board().id, EntityType.Board)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                boardColumn.Delete();

                return(HttpResponse.Item("board", new BoardColumnTransformer().Transform(boardColumn)));
            });
        }
示例#6
0
        public CardCrudController()
        {
            Post("/api/v1/card/create", _ => {
                var me     = UserRepository.Find(CurrentRequest.UserId);
                var column = BoardColumnRepository.FindByGuid(GetRequestStr("column_guid"));
                var board  = column.Board();

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "name", "column_guid" }),
                    new ExistsInTable("column_guid", "board_columns", "guid"),
                    new HasPermission(me, board.id, EntityType.Board)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }
                var description = (string)Request.Query["description"] ?? "";
                int columnOrder = Request.Query["column_order"] ?? 0;

                var card = CardRepository.CreateAndGet(
                    (string)Request.Query["name"],
                    description,
                    columnOrder,
                    column,
                    me
                    );

                return(HttpResponse.Item(
                           "card", new CardTransformer().Transform(card), HttpStatusCode.Created
                           ));
            });

            Patch("/api/v1/card/edit", _ => {
                var me   = UserRepository.Find(CurrentRequest.UserId);
                var card = CardRepository.FindByGuid(GetRequestStr("card_guid"));

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "card_guid" }),
                    new ExistsInTable("card_guid", "cards", "guid"),
                    new HasPermission(me, card.id, EntityType.Card)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                card = CardRepository.UpdateAndRefresh(card, new JObject()
                {
                    ["name"]         = GetRequestStr("name"),
                    ["description"]  = GetRequestStr("description"),
                    ["column_order"] = GetRequestStr("column_order"),
                    ["column_guid"]  = GetRequestStr("column_guid"),
                });

                return(HttpResponse.Item("card", new CardTransformer().Transform(card)));
            });

            Delete("/api/v1/card/delete", _ => {
                var me   = UserRepository.Find(CurrentRequest.UserId);
                var card = CardRepository.FindByGuid(GetRequestStr("card_guid"));

                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "card_guid" }),
                    new ExistsInTable("card_guid", "cards", "guid"),
                    new HasPermission(me, card.id, EntityType.Card)
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                card.Delete();

                return(HttpResponse.Item("card", new CardTransformer().Transform(card)));
            });
        }