1 import { Response, Router } from "express";
2 import { authEndpoint, AuthRequest } from '../auth';
3 import { logger } from "../lib/logger";
4 import { getService } from "../map";
5 import { getInventory, getInventoryItem, repair } from '../inventory';
6 import { renderRepairService } from '../views/repair';
7 import { repairCost } from "../../shared/inventory";
8 import * as Alert from "../views/alert";
9 import { updatePlayer } from "../player";
10 import { renderPlayerBar } from "../views/player-bar";
12 export const router = Router();
14 router.get('/city/services/repair/:location_id', authEndpoint, async(req: AuthRequest, res: Response) => {
15 const service = await getService(parseInt(req.params.location_id));
17 if(!service || service.city_id !== req.player.city_id) {
18 logger.log(`Invalid location: [${req.params.location_id}]`);
22 const equippedItems = await getInventory(req.player.id);
24 const damaged = equippedItems.filter(i => {
25 return i.currentAp < i.maxAp
28 res.send(renderRepairService(damaged, req.player, service));
31 router.post('/city/services/:location_id/repair/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => {
32 const service = await getService(parseInt(req.params.location_id));
34 if(!service || service.city_id !== req.player.city_id) {
35 logger.log(`Invalid location: [${req.params.location_id}]`);
39 const item = await getInventoryItem(req.player.id, req.params.item_id);
42 logger.log(`Invalid item [${req.params.item_id}]`);
46 const cost = repairCost(item);
48 if(req.player.gold < cost) {
49 res.status(400).send(Alert.ErrorAlert(`You need at least ${cost}G to repair your ${item.name}`));
53 req.player.gold -= cost;
54 item.currentAp = item.maxAp;
56 await updatePlayer(req.player);
57 await repair(req.player.id, item.item_id);
59 const equippedItems = await getInventory(req.player.id);
61 const damaged = equippedItems.filter(i => {
62 return i.currentAp < i.maxAp
66 renderRepairService(damaged, req.player, service)
67 + renderPlayerBar(req.player)
68 + Alert.SuccessAlert(`You repaired your ${item.name} for ${cost}G`)