diff --git a/src/controllers/api/giveShipDecoAndLoreFragmentController.ts b/src/controllers/api/giveShipDecoAndLoreFragmentController.ts new file mode 100644 index 00000000..08385cbf --- /dev/null +++ b/src/controllers/api/giveShipDecoAndLoreFragmentController.ts @@ -0,0 +1,20 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { addLoreFragmentScans, addShipDecorations, getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { ILoreFragmentScan, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; +import { RequestHandler } from "express"; + +export const giveShipDecoAndLoreFragmentController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId, "LoreFragmentScans ShipDecorations"); + const data = getJSONfromString(String(req.body)); + addLoreFragmentScans(inventory, data.LoreFragmentScans); + addShipDecorations(inventory, data.ShipDecorations); + await inventory.save(); + res.end(); +}; + +interface IGiveShipDecoAndLoreFragmentRequest { + LoreFragmentScans: ILoreFragmentScan[]; + ShipDecorations: ITypeCount[]; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index bd3ffd4b..1c69da55 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -62,6 +62,7 @@ import { gildWeaponController } from "@/src/controllers/api/gildWeaponController import { giveKeyChainTriggeredItemsController } from "@/src/controllers/api/giveKeyChainTriggeredItemsController"; import { giveKeyChainTriggeredMessageController } from "@/src/controllers/api/giveKeyChainTriggeredMessageController"; import { giveQuestKeyRewardController } from "@/src/controllers/api/giveQuestKey"; +import { giveShipDecoAndLoreFragmentController } from "@/src/controllers/api/giveShipDecoAndLoreFragmentController"; import { giveStartingGearController } from "@/src/controllers/api/giveStartingGearController"; import { guildTechController } from "@/src/controllers/api/guildTechController"; import { hostSessionController } from "@/src/controllers/api/hostSessionController"; @@ -239,6 +240,7 @@ apiRouter.post("/gildWeapon.php", gildWeaponController); apiRouter.post("/giveKeyChainTriggeredItems.php", giveKeyChainTriggeredItemsController); apiRouter.post("/giveKeyChainTriggeredMessage.php", giveKeyChainTriggeredMessageController); apiRouter.post("/giveQuestKeyReward.php", giveQuestKeyRewardController); +apiRouter.post("/giveShipDecoAndLoreFragment.php", giveShipDecoAndLoreFragmentController); apiRouter.post("/giveStartingGear.php", giveStartingGearController); apiRouter.post("/guildTech.php", guildTechController); apiRouter.post("/hostSession.php", hostSessionController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 6357d404..48657e88 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -21,7 +21,8 @@ import { ICalendarProgress, IDroneClient, IUpgradeClient, - TPartialStartingGear + TPartialStartingGear, + ILoreFragmentScan } from "@/src/types/inventoryTypes/inventoryTypes"; import { IGenericUpdate, IUpdateNodeIntrosResponse } from "../types/genericUpdate"; import { IKeyChainRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; @@ -1350,6 +1351,17 @@ export const addFocusXpIncreases = (inventory: TInventoryDatabaseDocument, focus inventory.DailyFocus -= focusXpPlus.reduce((a, b) => a + b, 0); }; +export const addLoreFragmentScans = (inventory: TInventoryDatabaseDocument, arr: ILoreFragmentScan[]): void => { + arr.forEach(clientFragment => { + const fragment = inventory.LoreFragmentScans.find(x => x.ItemType == clientFragment.ItemType); + if (fragment) { + fragment.Progress += clientFragment.Progress; + } else { + inventory.LoreFragmentScans.push(clientFragment); + } + }); +}; + export const addChallenges = ( inventory: TInventoryDatabaseDocument, ChallengeProgress: IChallengeProgress[], diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index b506b37b..883d5a96 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -23,6 +23,7 @@ import { addGearExpByCategory, addItem, addLevelKeys, + addLoreFragmentScans, addMiscItems, addMissionComplete, addMods, @@ -291,14 +292,7 @@ export const addMissionInventoryUpdates = async ( break; } case "LoreFragmentScans": - value.forEach(clientFragment => { - const fragment = inventory.LoreFragmentScans.find(x => x.ItemType == clientFragment.ItemType); - if (fragment) { - fragment.Progress += clientFragment.Progress; - } else { - inventory.LoreFragmentScans.push(clientFragment); - } - }); + addLoreFragmentScans(inventory, value); break; case "LibraryScans": value.forEach(scan => {