forked from OpenWF/SpaceNinjaServer
		
	feat: donate credits to alliance vault (#1436)
Reviewed-on: OpenWF/SpaceNinjaServer#1436 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
							
								
									2173bdb8b8
								
							
						
					
					
						commit
						6dc54ed893
					
				@ -1,4 +1,4 @@
 | 
			
		||||
import { GuildMember } from "@/src/models/guildModel";
 | 
			
		||||
import { Alliance, GuildMember } from "@/src/models/guildModel";
 | 
			
		||||
import {
 | 
			
		||||
    addGuildMemberMiscItemContribution,
 | 
			
		||||
    addVaultMiscItems,
 | 
			
		||||
@ -19,12 +19,27 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const accountId = await getAccountIdForRequest(req);
 | 
			
		||||
    const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures");
 | 
			
		||||
    const guild = await getGuildForRequestEx(req, inventory);
 | 
			
		||||
    const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
 | 
			
		||||
 | 
			
		||||
    if (request.Alliance) {
 | 
			
		||||
        const alliance = (await Alliance.findById(guild.AllianceId!))!;
 | 
			
		||||
        alliance.VaultRegularCredits ??= 0;
 | 
			
		||||
        alliance.VaultRegularCredits += request.RegularCredits;
 | 
			
		||||
        if (request.FromVault) {
 | 
			
		||||
            guild.VaultRegularCredits! -= request.RegularCredits;
 | 
			
		||||
            await Promise.all([guild.save(), alliance.save()]);
 | 
			
		||||
        } else {
 | 
			
		||||
            updateCurrency(inventory, request.RegularCredits, false);
 | 
			
		||||
            await Promise.all([inventory.save(), alliance.save()]);
 | 
			
		||||
        }
 | 
			
		||||
        res.end();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const guildMember = (await GuildMember.findOne(
 | 
			
		||||
        { accountId, guildId: guild._id },
 | 
			
		||||
        "RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed"
 | 
			
		||||
    ))!;
 | 
			
		||||
    const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
 | 
			
		||||
 | 
			
		||||
    if (request.RegularCredits) {
 | 
			
		||||
        updateCurrency(inventory, request.RegularCredits, false);
 | 
			
		||||
 | 
			
		||||
@ -69,4 +84,6 @@ interface IContributeToVaultRequest {
 | 
			
		||||
    MiscItems: IMiscItem[];
 | 
			
		||||
    ShipDecorations: ITypeCount[];
 | 
			
		||||
    FusionTreasures: IFusionTreasure[];
 | 
			
		||||
    Alliance?: boolean;
 | 
			
		||||
    FromVault?: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -254,7 +254,8 @@ const allianceSchema = new Schema<IAllianceDatabase>({
 | 
			
		||||
    Name: String,
 | 
			
		||||
    MOTD: longMOTDSchema,
 | 
			
		||||
    LongMOTD: longMOTDSchema,
 | 
			
		||||
    Emblem: Boolean
 | 
			
		||||
    Emblem: Boolean,
 | 
			
		||||
    VaultRegularCredits: Number
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
allianceSchema.index({ Name: 1 }, { unique: true });
 | 
			
		||||
 | 
			
		||||
@ -581,6 +581,9 @@ export const getAllianceClient = async (
 | 
			
		||||
    return {
 | 
			
		||||
        _id: toOid(alliance._id),
 | 
			
		||||
        Name: alliance.Name,
 | 
			
		||||
        Clans: clans
 | 
			
		||||
        Clans: clans,
 | 
			
		||||
        AllianceVault: {
 | 
			
		||||
            DojoRefundRegularCredits: alliance.VaultRegularCredits
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -282,6 +282,7 @@ export interface IAllianceClient {
 | 
			
		||||
    CrossPlatformEnabled?: boolean;
 | 
			
		||||
    Clans: IAllianceMemberClient[];
 | 
			
		||||
    OriginalPlatform?: number;
 | 
			
		||||
    AllianceVault?: IGuildVault;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IAllianceDatabase {
 | 
			
		||||
@ -290,6 +291,7 @@ export interface IAllianceDatabase {
 | 
			
		||||
    MOTD?: ILongMOTD;
 | 
			
		||||
    LongMOTD?: ILongMOTD;
 | 
			
		||||
    Emblem?: boolean;
 | 
			
		||||
    VaultRegularCredits?: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IAllianceMemberClient {
 | 
			
		||||
@ -318,5 +320,4 @@ 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 contributeToVault
 | 
			
		||||
// TODO: Handle alliance in setGuildMotd
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user