diff --git a/src/controllers/api/crewMembersController.ts b/src/controllers/api/crewMembersController.ts new file mode 100644 index 00000000..15ef0fbf --- /dev/null +++ b/src/controllers/api/crewMembersController.ts @@ -0,0 +1,28 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { ICrewMemberClient } from "@/src/types/inventoryTypes/inventoryTypes"; +import { RequestHandler } from "express"; +import { Types } from "mongoose"; + +export const crewMembersController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId, "CrewMembers"); + const data = getJSONfromString(String(req.body)); + const dbCrewMember = inventory.CrewMembers.id(data.crewMember.ItemId.$oid)!; + dbCrewMember.AssignedRole = data.crewMember.AssignedRole; + dbCrewMember.SkillEfficiency = data.crewMember.SkillEfficiency; + dbCrewMember.WeaponConfigIdx = data.crewMember.WeaponConfigIdx; + dbCrewMember.WeaponId = new Types.ObjectId(data.crewMember.WeaponId.$oid); + dbCrewMember.Configs = data.crewMember.Configs; + dbCrewMember.SecondInCommand = data.crewMember.SecondInCommand; + await inventory.save(); + res.json({ + crewMemberId: data.crewMember.ItemId.$oid, + NemesisFingerprint: data.crewMember.NemesisFingerprint + }); +}; + +interface ICrewMembersRequest { + crewMember: ICrewMemberClient; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index 71b90dc4..e6416f7a 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -28,6 +28,7 @@ import { contributeToVaultController } from "@/src/controllers/api/contributeToV import { createAllianceController } from "@/src/controllers/api/createAllianceController"; import { createGuildController } from "@/src/controllers/api/createGuildController"; import { creditsController } from "@/src/controllers/api/creditsController"; +import { crewMembersController } from "@/src/controllers/api/crewMembersController"; import { crewShipIdentifySalvageController } from "@/src/controllers/api/crewShipIdentifySalvageController"; import { customizeGuildRanksController } from "@/src/controllers/api/customizeGuildRanksController"; import { customObstacleCourseLeaderboardController } from "@/src/controllers/api/customObstacleCourseLeaderboardController"; @@ -222,6 +223,7 @@ apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentContro apiRouter.post("/contributeToVault.php", contributeToVaultController); apiRouter.post("/createAlliance.php", createAllianceController); apiRouter.post("/createGuild.php", createGuildController); +apiRouter.post("/crewMembers.php", crewMembersController); apiRouter.post("/crewShipIdentifySalvage.php", crewShipIdentifySalvageController); apiRouter.post("/customizeGuildRanks.php", customizeGuildRanksController); apiRouter.post("/customObstacleCourseLeaderboard.php", customObstacleCourseLeaderboardController); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 03f3fda7..d5f6344a 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -489,7 +489,7 @@ export interface ICrewMemberClient { XP: number; PowersuitType: string; Configs: IItemConfig[]; - SecondInCommand: boolean; + SecondInCommand: boolean; // on call ItemId: IOid; }