feat: picking up prex cards #1634
							
								
								
									
										20
									
								
								src/controllers/api/giveShipDecoAndLoreFragmentController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/controllers/api/giveShipDecoAndLoreFragmentController.ts
									
									
									
									
									
										Normal file
									
								
							@ -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<IGiveShipDecoAndLoreFragmentRequest>(String(req.body));
 | 
			
		||||
    addLoreFragmentScans(inventory, data.LoreFragmentScans);
 | 
			
		||||
    addShipDecorations(inventory, data.ShipDecorations);
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
    res.end();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
interface IGiveShipDecoAndLoreFragmentRequest {
 | 
			
		||||
    LoreFragmentScans: ILoreFragmentScan[];
 | 
			
		||||
    ShipDecorations: ITypeCount[];
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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[],
 | 
			
		||||
 | 
			
		||||
@ -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 => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user