Exemplo n.º 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_BoardCreated() {
            var creator = UserFaker.Create();
            var project = ProjectFaker.Create(creator);
            var browser = new Browser(new DefaultNancyBootstrapper());

            var boardTitle = "testBoard" + Rand.SmallInt();
            var boardDescription = "testDescription" + Rand.SmallInt();

            var result = browser.Post("/api/v1/board/create", with => {
                with.HttpRequest();
                with.Query("api_token", Jwt.FromUserId(creator.id));
                with.Query("name", boardTitle);
                with.Query("description", boardDescription);
                with.Query("creator_guid", creator.guid);
                with.Query("project_guid", project.guid);
            }).Result;
            
            Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);

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

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

            var createdBoard = BoardRepository.FindByGuid(guid);

            Assert.NotNull(createdBoard);
            Assert.AreEqual(boardTitle, createdBoard.name);
            Assert.AreEqual(boardDescription, createdBoard.description);
            Assert.AreEqual(
                createdBoard.guid, json["data"]["board"].Value<string>("guid") ?? ""
            );
        }
        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)));
            });
        }
Exemplo n.º 4
0
        public BoardCrudController()
        {
            Post("/api/v1/board/create", _ => {
                var me      = UserRepository.Find(CurrentRequest.UserId);
                var project = ProjectRepository.FindByGuid(GetRequestStr("project_guid"));

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

                var board = BoardRepository.CreateAndGet(
                    (string)Request.Query["name"],
                    (string)Request.Query["description"],
                    project,
                    me
                    );

                return(HttpResponse.Item(
                           "board", new BoardTransformer().Transform(board), HttpStatusCode.Created
                           ));
            });

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

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

                board = BoardRepository.UpdateAndRefresh(board, new JObject()
                {
                    ["name"]        = GetRequestStr("name"),
                    ["description"] = GetRequestStr("description"),
                    ["updated_at"]  = DateTime.Now,
                });

                return(HttpResponse.Item("board", new BoardTransformer().Transform(board)));
            });

            Delete("/api/v1/board/delete", _ => {
                var me    = UserRepository.Find(CurrentRequest.UserId);
                var board = BoardRepository.FindByGuid(GetRequestStr("board_guid"));

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

                board.Delete();

                return(HttpResponse.Item("board", new BoardTransformer().Transform(board)));
            });
        }