Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion App/DL/Model/Card/Card.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Linq;
using App.DL.Model.Work;
using App.DL.Repository.Project;
using Dapper;
using UserModel = App.DL.Model.User.User;
using BoardColumnModel = App.DL.Model.BoardColumn.BoardColumn;
Expand Down Expand Up @@ -79,7 +80,16 @@ public Card Save() {

public Board.Board Board() => Column().Board();

public Project.Project Project() => Board().Project();
public Project.Project Project() {
var projectId = ExecuteScalarInt(@"SELECT projects.id
FROM cards
LEFT JOIN board_columns ON cards.column_id = board_columns.id
LEFT JOIN boards ON board_columns.board_id = boards.id
LEFT JOIN projects ON boards.project_id = projects.id
WHERE cards.id = @id LIMIT 1;
", new {id});
return ProjectRepository.Find(projectId);
}

public UserModel Creator() => UserModel.Find(creator_id);

Expand Down
17 changes: 17 additions & 0 deletions App/DL/Model/Project/Project.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,17 @@ public Board.Board[] Boards(int limit = 10)
new {project_id = id, limit}
).ToArray();

public Card.Card[] Cards()
=> Connection().Query<Card.Card>(
@"SELECT cards.*
FROM projects
LEFT JOIN boards ON projects.id = boards.project_id
LEFT JOIN board_columns ON boards.id = board_columns.board_id
LEFT JOIN cards on board_columns.id = cards.column_id
WHERE projects.id = @project_id AND cards.id IS NOT NULL
GROUP BY cards.id;", new {project_id = id}
).ToArray();

public ProjectWorkType[] WorkTypes(int limit = 10)
=> Connection().Query<ProjectWorkType>(
@"SELECT * FROM project_work_types WHERE project_id = @project_id LIMIT @limit",
Expand All @@ -135,6 +146,12 @@ public bool InLibrary(UserModel user)
, new {project_id = id, user_id = user.id}
) > 0;

public static Project[] Paginate(int page, int size = 20)
=> Connection().Query<Project>(
"SELECT * FROM projects OFFSET @offset LIMIT @size",
new {offset = ((page - 1) * size), size}
).ToArray();

public int StarsCount() => ExecuteScalarInt(
"SELECT COUNT(*) FROM user_projects_library WHERE project_id = @id", new {id}
);
Expand Down
7 changes: 7 additions & 0 deletions Tests/App/DL/Model/Card/CardTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,12 @@ public void Create_Card()
Assert.AreEqual(card.name, name);
Assert.AreEqual(card.column_id, column.id);
}

[Test]
public void Project_Ok() {
var card = CardFaker.Create();

Assert.NotNull(card.Project());
}
}
}
17 changes: 17 additions & 0 deletions Tests/App/DL/Model/Project/ProjectTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.Linq;
using NUnit.Framework;
using Tests.Testing;
using Tests.Utils.Fake.Card;

namespace Tests.App.DL.Model.Project {
public class ProjectTests : BaseTestFixture {
[Test]
public void Cards_Ok() {
var card = CardFaker.Create();
var project = card.Project();

var foundCard = project.Cards().Where(c => c.id == card.id).ToArray()[0];
Assert.AreEqual(card.id, foundCard.id);
}
}
}