MCPcopy Create free account
hub / github.com/GmpABR/NexusFlow / GetPendingInvitationsAsync

Method GetPendingInvitationsAsync

backend/Services/BoardService.cs:89–138  ·  view source on GitHub ↗
(int userId)

Source from the content-addressed store, hash-verified

87 }
88
89 public async Task<List<BoardSummaryDto>> GetPendingInvitationsAsync(int userId)
90 {
91 var boards = await _db.Boards
92 .AsNoTracking()
93 .Where(b => b.Members.Any(m => m.UserId == userId && m.Status == "Pending"))
94 .Select(b => new BoardSummaryDto
95 {
96 Id = b.Id,
97 Name = b.Name,
98 CreatedAt = b.CreatedAt,
99 Role = "Invited",
100 ThemeColor = b.ThemeColor,
101 WorkspaceId = b.WorkspaceId,
102 WorkspaceName = b.Workspace.Name,
103 IsClosed = b.IsClosed,
104 OpenTasksCount = b.Columns.SelectMany(c => c.TaskCards)
105 .Count(t => !t.Column.Name.ToLower().Contains("done") && !t.Column.Name.ToLower().Contains("complete")),
106 Members = b.Members
107 .Where(m => m.Status == "Accepted")
108 .Select(m => new BoardMemberDto
109 {
110 Id = m.Id,
111 UserId = m.UserId,
112 Username = m.User.Username,
113 AvatarUrl = m.User.AvatarUrl,
114 Role = m.Role
115 }).ToList()
116 })
117 .ToListAsync();
118
119 foreach (var board in boards)
120 {
121 var b = await _db.Boards
122 .AsNoTracking()
123 .Include(x => x.Owner)
124 .FirstOrDefaultAsync(x => x.Id == board.Id);
125
126 if (b?.Owner != null && !board.Members.Any(m => m.UserId == b.OwnerId))
127 {
128 board.Members.Insert(0, new BoardMemberDto
129 {
130 UserId = b.OwnerId,
131 Username = b.Owner.Username,
132 AvatarUrl = b.Owner.AvatarUrl,
133 Role = "Owner"
134 });
135 }
136 }
137 return boards;
138 }
139
140 public async Task<BoardDetailDto?> GetBoardDetailAsync(int boardId, int userId)
141 {

Callers 1

GetPendingInvitationsMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected