diff --git a/src/controllers/api/crewMembersController.ts b/src/controllers/api/crewMembersController.ts index f19b5ff3..a4f2ea2a 100644 --- a/src/controllers/api/crewMembersController.ts +++ b/src/controllers/api/crewMembersController.ts @@ -1,4 +1,5 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel"; import { getInventory } from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { ICrewMemberClient } from "@/src/types/inventoryTypes/inventoryTypes"; @@ -7,23 +8,23 @@ import { Types } from "mongoose"; export const crewMembersController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const inventory = await getInventory(accountId, "CrewMembers"); + const inventory = await getInventory(accountId, "CrewMembers NemesisHistory"); 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; if (data.crewMember.SecondInCommand) { - for (const cm of inventory.CrewMembers) { - if (cm.SecondInCommand) { - cm.SecondInCommand = false; - break; - } - } + clearOnCall(inventory); + } + if (data.crewMember.ItemId.$oid == "000000000000000000000000") { + const convertedNemesis = inventory.NemesisHistory!.find(x => x.fp == data.crewMember.NemesisFingerprint)!; + convertedNemesis.SecondInCommand = data.crewMember.SecondInCommand; + } else { + 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; } - dbCrewMember.SecondInCommand = data.crewMember.SecondInCommand; await inventory.save(); res.json({ crewMemberId: data.crewMember.ItemId.$oid, @@ -34,3 +35,20 @@ export const crewMembersController: RequestHandler = async (req, res) => { interface ICrewMembersRequest { crewMember: ICrewMemberClient; } + +const clearOnCall = (inventory: TInventoryDatabaseDocument): void => { + for (const cm of inventory.CrewMembers) { + if (cm.SecondInCommand) { + cm.SecondInCommand = false; + return; + } + } + if (inventory.NemesisHistory) { + for (const cm of inventory.NemesisHistory) { + if (cm.SecondInCommand) { + cm.SecondInCommand = false; + return; + } + } + } +}; diff --git a/src/controllers/api/saveLoadoutController.ts b/src/controllers/api/saveLoadoutController.ts index 6fd3de61..c5383e1c 100644 --- a/src/controllers/api/saveLoadoutController.ts +++ b/src/controllers/api/saveLoadoutController.ts @@ -2,11 +2,12 @@ import { RequestHandler } from "express"; import { ISaveLoadoutRequest } from "@/src/types/saveLoadoutTypes"; import { handleInventoryItemConfigChange } from "@/src/services/saveLoadoutService"; import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; export const saveLoadoutController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); - const body: ISaveLoadoutRequest = JSON.parse(req.body as string) as ISaveLoadoutRequest; + const body: ISaveLoadoutRequest = getJSONfromString(String(req.body)); // console.log(util.inspect(body, { showHidden: false, depth: null, colors: true })); // eslint-disable-next-line @typescript-eslint/no-unused-vars