t00-multiuser/server/controller/HomeController.ts
2024-10-08 11:04:46 +01:00

45 lines
No EOL
1.4 KiB
TypeScript

import Controller from "./Controller";
import FunkyArray from "funky-array";
import UserService from "../services/UserService";
import HomeViewModel from "../models/home/HomeViewModel";
import PartyService from "../services/PartyService";
import BadgeService from "../services/BadgeService";
import Badge from "../entities/Badge";
import UserBadge from "../entities/UserBadge";
export default class HomeController extends Controller {
public async Index_Get_AllowAnonymous() {
if (this.session) {
const user = await UserService.GetUser(this.session.userId);
if (!user) {
return this.unauthorised();
}
const parties = await PartyService.GetUserParties(this.session.userId);
const activeUserParty = await UserService.GetActiveParty(this.session.userId);
const unlockedBadges = await UserService.LoadUserBadges(this.session.userId);
const unlockedBadgesById = new FunkyArray<number, UserBadge>();
for (const unlockedBadge of unlockedBadges) {
unlockedBadgesById.set(unlockedBadge.BadgeId, unlockedBadge);
}
const badges = await BadgeService.LoadAll();
const badgeById = new FunkyArray<number, Badge>();
for (const badge of badges) {
badgeById.set(badge.Id, badge);
}
const homeViewModel: HomeViewModel = {
user,
parties,
activeUserParty,
unlockedBadges,
unlockedBadgesById,
badgeById
};
return this.view("home", homeViewModel);
}
return this.view();
}
}