import { AllianceMember, Guild, GuildMember } from "../../models/guildModel.ts";
import { getInventory } from "../../services/inventoryService.ts";
import { getAccountForRequest, isAdministrator } from "../../services/loginService.ts";
import type { RequestHandler } from "express";
export const getAccountInfoController: RequestHandler = async (req, res) => {
const account = await getAccountForRequest(req, "IRC");
const inventory = await getInventory(account._id, "QuestKeys");
const info: IAccountInfo = {
DisplayName: account.DisplayName,
IsAdministrator: isAdministrator(account),
CompletedVorsPrize: !!inventory.QuestKeys.find(
x => x.ItemType == "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain"
)?.Completed
};
const guildMember = await GuildMember.findOne({ accountId: account._id, status: 0 }, "guildId rank");
if (guildMember) {
const guild = (await Guild.findById(guildMember.guildId, "Ranks AllianceId"))!;
info.GuildId = guildMember.guildId.toString();
info.GuildPermissions = guild.Ranks[guildMember.rank].Permissions;
info.GuildRank = guildMember.rank;
if (guild.AllianceId) {
//const alliance = (await Alliance.findById(guild.AllianceId))!;
const allianceMember = (await AllianceMember.findOne({
allianceId: guild.AllianceId,
guildId: guild._id
}))!;
info.AllianceId = guild.AllianceId.toString();
info.AlliancePermissions = allianceMember.Permissions;
}
}
res.json(info);
};
interface IAccountInfo {
DisplayName: string;
IsAdministrator: boolean;
CompletedVorsPrize: boolean;
GuildId?: string;
GuildPermissions?: number;
GuildRank?: number;
AllianceId?: string;
AlliancePermissions?: number;
}
import { AllianceMember, Guild, GuildMember } from "../../models/guildModel.ts";
import { getInventory } from "../../services/inventoryService.ts";
import { getAccountForRequest, isAdministrator } from "../../services/loginService.ts";
import type { RequestHandler } from "express";
export const getAccountInfoController: RequestHandler = async (req, res) => {
const account = await getAccountForRequest(req, "IRC");
const inventory = await getInventory(account._id, "QuestKeys");
const info: IAccountInfo = {
DisplayName: account.DisplayName,
IsAdministrator: isAdministrator(account),
CompletedVorsPrize: !!inventory.QuestKeys.find(
x => x.ItemType == "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain"
)?.Completed
};
const guildMember = await GuildMember.findOne({ accountId: account._id, status: 0 }, "guildId rank");
if (guildMember) {
const guild = (await Guild.findById(guildMember.guildId, "Ranks AllianceId"))!;
info.GuildId = guildMember.guildId.toString();
info.GuildPermissions = guild.Ranks[guildMember.rank].Permissions;
info.GuildRank = guildMember.rank;
if (guild.AllianceId) {
//const alliance = (await Alliance.findById(guild.AllianceId))!;
const allianceMember = (await AllianceMember.findOne({
allianceId: guild.AllianceId,
guildId: guild._id
}))!;
info.AllianceId = guild.AllianceId.toString();
info.AlliancePermissions = allianceMember.Permissions;
}
}
res.json(info);
};
interface IAccountInfo {
DisplayName: string;
IsAdministrator: boolean;
CompletedVorsPrize: boolean;
GuildId?: string;
GuildPermissions?: number;
GuildRank?: number;
AllianceId?: string;
AlliancePermissions?: number;
}