feat: alliance motd (#1438)
Reviewed-on: OpenWF/SpaceNinjaServer#1438 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									0c2f72f9b1
								
							
						
					
					
						commit
						ed10a89c1d
					
				@ -1,21 +1,44 @@
 | 
			
		||||
import { Guild } from "@/src/models/guildModel";
 | 
			
		||||
import { hasGuildPermission } from "@/src/services/guildService";
 | 
			
		||||
import { Alliance, Guild, GuildMember } from "@/src/models/guildModel";
 | 
			
		||||
import { hasGuildPermissionEx } from "@/src/services/guildService";
 | 
			
		||||
import { getInventory } from "@/src/services/inventoryService";
 | 
			
		||||
import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService";
 | 
			
		||||
import { GuildPermission } from "@/src/types/guildTypes";
 | 
			
		||||
import { GuildPermission, ILongMOTD } from "@/src/types/guildTypes";
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
 | 
			
		||||
export const setGuildMotdController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const account = await getAccountForRequest(req);
 | 
			
		||||
    const inventory = await getInventory(account._id.toString(), "GuildId");
 | 
			
		||||
    const guild = (await Guild.findById(inventory.GuildId!))!;
 | 
			
		||||
    if (!(await hasGuildPermission(guild, account._id, GuildPermission.Herald))) {
 | 
			
		||||
    const member = (await GuildMember.findOne({ accountId: account._id, guildId: guild._id }))!;
 | 
			
		||||
 | 
			
		||||
    const IsLongMOTD = "longMOTD" in req.query;
 | 
			
		||||
    const MOTD = req.body ? String(req.body) : undefined;
 | 
			
		||||
 | 
			
		||||
    if ("alliance" in req.query) {
 | 
			
		||||
        if (member.rank > 1) {
 | 
			
		||||
            res.status(400).json("Invalid permission");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    const IsLongMOTD = "longMOTD" in req.query;
 | 
			
		||||
    const MOTD = req.body ? String(req.body) : undefined;
 | 
			
		||||
        const alliance = (await Alliance.findById(guild.AllianceId!))!;
 | 
			
		||||
        const motd = MOTD
 | 
			
		||||
            ? ({
 | 
			
		||||
                  message: MOTD,
 | 
			
		||||
                  authorName: getSuffixedName(account),
 | 
			
		||||
                  authorGuildName: guild.Name
 | 
			
		||||
              } satisfies ILongMOTD)
 | 
			
		||||
            : undefined;
 | 
			
		||||
        if (IsLongMOTD) {
 | 
			
		||||
            alliance.LongMOTD = motd;
 | 
			
		||||
        } else {
 | 
			
		||||
            alliance.MOTD = motd;
 | 
			
		||||
        }
 | 
			
		||||
        await alliance.save();
 | 
			
		||||
    } else {
 | 
			
		||||
        if (!hasGuildPermissionEx(guild, member, GuildPermission.Herald)) {
 | 
			
		||||
            res.status(400).json("Invalid permission");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (IsLongMOTD) {
 | 
			
		||||
            if (MOTD) {
 | 
			
		||||
@ -30,6 +53,7 @@ export const setGuildMotdController: RequestHandler = async (req, res) => {
 | 
			
		||||
            guild.MOTD = MOTD ?? "";
 | 
			
		||||
        }
 | 
			
		||||
        await guild.save();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    res.json({ IsLongMOTD, MOTD });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,8 @@ const techProjectSchema = new Schema<ITechProjectDatabase>(
 | 
			
		||||
const longMOTDSchema = new Schema<ILongMOTD>(
 | 
			
		||||
    {
 | 
			
		||||
        message: String,
 | 
			
		||||
        authorName: String
 | 
			
		||||
        authorName: String,
 | 
			
		||||
        authorGuildName: String
 | 
			
		||||
    },
 | 
			
		||||
    { _id: false }
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
@ -581,6 +581,8 @@ export const getAllianceClient = async (
 | 
			
		||||
    return {
 | 
			
		||||
        _id: toOid(alliance._id),
 | 
			
		||||
        Name: alliance.Name,
 | 
			
		||||
        MOTD: alliance.MOTD,
 | 
			
		||||
        LongMOTD: alliance.LongMOTD,
 | 
			
		||||
        Clans: clans,
 | 
			
		||||
        AllianceVault: {
 | 
			
		||||
            DojoRefundRegularCredits: alliance.VaultRegularCredits
 | 
			
		||||
 | 
			
		||||
@ -64,7 +64,7 @@ export interface IGuildDatabase {
 | 
			
		||||
export interface ILongMOTD {
 | 
			
		||||
    message: string;
 | 
			
		||||
    authorName: string;
 | 
			
		||||
    authorGuildName?: "";
 | 
			
		||||
    authorGuildName?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 32 seems to be reserved
 | 
			
		||||
@ -320,4 +320,3 @@ export interface IAllianceMemberDatabase {
 | 
			
		||||
// TODO: GET /api/divvyAllianceVault.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0&allianceId=000000000000000000000069&credits=0
 | 
			
		||||
// TODO: GET /api/removeFromAlliance.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0
 | 
			
		||||
// TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
 | 
			
		||||
// TODO: Handle alliance in setGuildMotd
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user