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 {
|
import {
|
||||||
addGuildMemberMiscItemContribution,
|
addGuildMemberMiscItemContribution,
|
||||||
addVaultMiscItems,
|
addVaultMiscItems,
|
||||||
@ -19,12 +19,27 @@ export const contributeToVaultController: RequestHandler = async (req, res) => {
|
|||||||
const accountId = await getAccountIdForRequest(req);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures");
|
const inventory = await getInventory(accountId, "GuildId RegularCredits MiscItems ShipDecorations FusionTreasures");
|
||||||
const guild = await getGuildForRequestEx(req, inventory);
|
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(
|
const guildMember = (await GuildMember.findOne(
|
||||||
{ accountId, guildId: guild._id },
|
{ accountId, guildId: guild._id },
|
||||||
"RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed"
|
"RegularCreditsContributed MiscItemsContributed ShipDecorationsContributed"
|
||||||
))!;
|
))!;
|
||||||
const request = JSON.parse(String(req.body)) as IContributeToVaultRequest;
|
|
||||||
|
|
||||||
if (request.RegularCredits) {
|
if (request.RegularCredits) {
|
||||||
updateCurrency(inventory, request.RegularCredits, false);
|
updateCurrency(inventory, request.RegularCredits, false);
|
||||||
|
|
||||||
@ -69,4 +84,6 @@ interface IContributeToVaultRequest {
|
|||||||
MiscItems: IMiscItem[];
|
MiscItems: IMiscItem[];
|
||||||
ShipDecorations: ITypeCount[];
|
ShipDecorations: ITypeCount[];
|
||||||
FusionTreasures: IFusionTreasure[];
|
FusionTreasures: IFusionTreasure[];
|
||||||
|
Alliance?: boolean;
|
||||||
|
FromVault?: boolean;
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,8 @@ const allianceSchema = new Schema<IAllianceDatabase>({
|
|||||||
Name: String,
|
Name: String,
|
||||||
MOTD: longMOTDSchema,
|
MOTD: longMOTDSchema,
|
||||||
LongMOTD: longMOTDSchema,
|
LongMOTD: longMOTDSchema,
|
||||||
Emblem: Boolean
|
Emblem: Boolean,
|
||||||
|
VaultRegularCredits: Number
|
||||||
});
|
});
|
||||||
|
|
||||||
allianceSchema.index({ Name: 1 }, { unique: true });
|
allianceSchema.index({ Name: 1 }, { unique: true });
|
||||||
|
@ -581,6 +581,9 @@ export const getAllianceClient = async (
|
|||||||
return {
|
return {
|
||||||
_id: toOid(alliance._id),
|
_id: toOid(alliance._id),
|
||||||
Name: alliance.Name,
|
Name: alliance.Name,
|
||||||
Clans: clans
|
Clans: clans,
|
||||||
|
AllianceVault: {
|
||||||
|
DojoRefundRegularCredits: alliance.VaultRegularCredits
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -282,6 +282,7 @@ export interface IAllianceClient {
|
|||||||
CrossPlatformEnabled?: boolean;
|
CrossPlatformEnabled?: boolean;
|
||||||
Clans: IAllianceMemberClient[];
|
Clans: IAllianceMemberClient[];
|
||||||
OriginalPlatform?: number;
|
OriginalPlatform?: number;
|
||||||
|
AllianceVault?: IGuildVault;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IAllianceDatabase {
|
export interface IAllianceDatabase {
|
||||||
@ -290,6 +291,7 @@ export interface IAllianceDatabase {
|
|||||||
MOTD?: ILongMOTD;
|
MOTD?: ILongMOTD;
|
||||||
LongMOTD?: ILongMOTD;
|
LongMOTD?: ILongMOTD;
|
||||||
Emblem?: boolean;
|
Emblem?: boolean;
|
||||||
|
VaultRegularCredits?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IAllianceMemberClient {
|
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/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/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: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
|
||||||
// TODO: Handle alliance in contributeToVault
|
|
||||||
// TODO: Handle alliance in setGuildMotd
|
// TODO: Handle alliance in setGuildMotd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user