2024-12-30 19:48:43 +01:00
|
|
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
|
|
import { RequestHandler } from "express";
|
|
|
|
import { getPersonalRooms } from "@/src/services/personalRoomsService";
|
|
|
|
import { IOid } from "@/src/types/commonTypes";
|
|
|
|
import { Types } from "mongoose";
|
2025-04-14 04:22:04 +02:00
|
|
|
import { TBootLocation } from "@/src/types/shipTypes";
|
2024-12-30 19:48:43 +01:00
|
|
|
|
|
|
|
export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => {
|
|
|
|
const accountId = await getAccountIdForRequest(req);
|
|
|
|
const personalRooms = await getPersonalRooms(accountId);
|
|
|
|
const body = JSON.parse(String(req.body)) as ISetShipFavouriteLoadoutRequest;
|
2025-04-14 04:22:04 +02:00
|
|
|
if (body.BootLocation == "LISET") {
|
|
|
|
personalRooms.Ship.FavouriteLoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
|
|
|
|
} else if (body.BootLocation == "SHOP") {
|
|
|
|
const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName!);
|
|
|
|
if (display) {
|
|
|
|
display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
|
|
|
|
} else {
|
|
|
|
personalRooms.TailorShop.FavouriteLoadouts.push({
|
|
|
|
Tag: body.TagName!,
|
|
|
|
LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid)
|
|
|
|
});
|
|
|
|
}
|
2024-12-30 19:48:43 +01:00
|
|
|
} else {
|
2025-04-14 04:22:04 +02:00
|
|
|
throw new Error(`unexpected BootLocation: ${body.BootLocation}`);
|
2024-12-30 19:48:43 +01:00
|
|
|
}
|
|
|
|
await personalRooms.save();
|
|
|
|
res.json({});
|
|
|
|
};
|
|
|
|
|
|
|
|
interface ISetShipFavouriteLoadoutRequest {
|
2025-04-14 04:22:04 +02:00
|
|
|
BootLocation: TBootLocation;
|
2024-12-30 19:48:43 +01:00
|
|
|
FavouriteLoadoutId: IOid;
|
2025-04-14 04:22:04 +02:00
|
|
|
TagName?: string; // given request for SHOP, but not for LISET
|
2024-12-30 19:48:43 +01:00
|
|
|
}
|