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") ?? "" ); }
public static BoardColumnModel Create(UserModel user = null) { user = user ?? UserFaker.Create(); var board = BoardFaker.Create(user); return(BoardColumnRepository.CreateAndGet( "boardColumnName_" + Rand.SmallInt(), board, Convert.ToInt16(Rand.IntRange(0, 20)) )); }
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()); }
public static bool HasEntityPermission(User user, int entityId, EntityType entityType) { if (!EntityUtils.IsEntityExists(entityId, entityType)) { return(false); } switch (entityType) { case EntityType.Project: var project = ProjectRepository.Find(entityId); if (project != null && ProjectTeamMemberRepository.IsExists(project, user)) { return(true); } break; case EntityType.Board: var board = BoardRepository.Find(entityId); if (board != null && ProjectTeamMemberRepository.IsExists(board.Project(), user)) { return(true); } break; case EntityType.BoardColumn: var column = BoardColumnRepository.Find(entityId); if (column != null && ProjectTeamMemberRepository.IsExists(column.Board().Project(), user)) { return(true); } break; case EntityType.Card: var card = CardRepository.Find(entityId); // TODO: optimize? if (card != null && ProjectTeamMemberRepository.IsExists(card.Column().Board().Project(), user)) { return(true); } break; } return(false); }
public void Delete_DataCorrect_BoardColumnDeleted() { var browser = new Browser(new DefaultNancyBootstrapper()); var me = UserFaker.Create(); var boardColumn = BoardColumnFaker.Create(me); Assert.NotNull(BoardColumnRepository.Find(boardColumn.id)); var result = browser.Delete("/api/v1/board_column/delete", with => { with.HttpRequest(); with.Query("api_token", Jwt.FromUserId(me.id)); with.Query("board_column_guid", boardColumn.guid); }).Result; Assert.AreEqual(HttpStatusCode.OK, result.StatusCode); Assert.IsNull(BoardColumnRepository.Find(boardColumn.id)); }
public static void Run(DL.Model.Project.Project project, User creator) { if (creator != null) { ProjectTeamMemberRepository.CreateAndGet(project, creator); UserLibraryItemRepository.FindOrCreate(project.Creator(), project); } ProjectAliasRepository.Create(project); ProjectWorkUtils.SetUp(project); // Basic boards set up var board = BoardRepository.CreateAndGet("Development", "Basic board", project, creator); var todoColumn = BoardColumnRepository.CreateAndGet("TODO", board, 1); BoardColumnRepository.CreateAndGet("In progress", board, 2); BoardColumnRepository.CreateAndGet("Done", board, 3); CardRepository.CreateAndGet( "Example card", DefaultCardDescription, 1, todoColumn, creator ); }
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))); }); }
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))); }); }