diff --git a/TODO.md b/TODO.md index 0cebe4c4c..6c9df2402 100644 --- a/TODO.md +++ b/TODO.md @@ -23,7 +23,7 @@ Calendar ## Other -- [ ] can submit results with one invalid linked user +- [x] can submit results with one invalid linked user - [x] Redirect to event page after submitting results - [x] date input take in account time zone difference between server and client - [x] User selector allow passing users from top level diff --git a/app/db/models/calendar.server.ts b/app/db/models/calendar.server.ts index 0bca230d6..9ef7d6fb4 100644 --- a/app/db/models/calendar.server.ts +++ b/app/db/models/calendar.server.ts @@ -218,11 +218,11 @@ const findWinnersByEventIdStm = sql.prepare(` "User"."discordId" as "playerDiscordId", "User"."discordAvatar" as "playerDiscordAvatar" from "CalendarEventResultTeam" - join + left join "CalendarEventResultPlayer" on "CalendarEventResultPlayer"."teamId" = "CalendarEventResultTeam"."id" - join + left join "User" on "User"."id" = "CalendarEventResultPlayer"."userId" @@ -289,6 +289,7 @@ const findResultsByUserIdStm = sql.prepare(` select "CalendarEvent"."id" as "eventId", "CalendarEvent"."name" as "eventName", + "CalendarEventResultTeam"."id" as "teamId", "CalendarEventResultTeam"."name" as "teamName", "CalendarEventResultTeam"."placement", "CalendarEvent"."participantCount", @@ -314,16 +315,21 @@ const findMatesByResultTeamIdStm = sql.prepare(` "User"."discordId" as "discordId", "User"."discordAvatar" as "discordAvatar" from "CalendarEventResultPlayer" - join "User" + left join "User" on "User"."id" = "CalendarEventResultPlayer"."userId" where "teamId" = $teamId - and "userId" != $userId + and ( + "CalendarEventResultPlayer"."userId" is null + or + "CalendarEventResultPlayer"."userId" != $userId + ) `); export function findResultsByUserId(userId: User["id"]) { return ( findResultsByUserIdStm.all({ userId }) as Array<{ eventId: CalendarEvent["id"]; + teamId: CalendarEventResultTeam["id"]; eventName: CalendarEvent["name"]; teamName: CalendarEventResultTeam["name"]; placement: CalendarEventResultTeam["placement"]; @@ -334,7 +340,7 @@ export function findResultsByUserId(userId: User["id"]) { ...row, mates: ( findMatesByResultTeamIdStm.all({ - teamId: row.eventId, + teamId: row.teamId, userId, }) as Array<{ name: CalendarEventResultPlayer["name"]; diff --git a/app/routes/calendar/$id/index.tsx b/app/routes/calendar/$id/index.tsx index a03605baf..577ab7c94 100644 --- a/app/routes/calendar/$id/index.tsx +++ b/app/routes/calendar/$id/index.tsx @@ -189,7 +189,10 @@ function Results() {