From 12da240badfa1185857f4f913132849236140b9d Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Tue, 3 Dec 2024 18:28:41 +0100 Subject: [PATCH] feat: add endpoint to register box --- back-end/src/controllers/box.controller.ts | 22 ++++++++++++++++++++++ back-end/src/routes/box.route.ts | 4 ++++ back-end/src/services/box.service.ts | 9 ++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/back-end/src/controllers/box.controller.ts b/back-end/src/controllers/box.controller.ts index af4cc7c..9960472 100644 --- a/back-end/src/controllers/box.controller.ts +++ b/back-end/src/controllers/box.controller.ts @@ -4,6 +4,8 @@ import boxService from "../services/box.service"; import { Either, eitherLeft, eitherRight, eitherFormatError, Pair, createPair } from '../utils/utils'; import { Box } from '../types/box' import { Piece } from '../types/piece' +import memberService from "../services/member.service"; +import modelService from "../services/model.service"; const boxByTitle: RequestHandler<{ title: string; }> = async (req, res) => { const boxEither = await boxService.getBox(req.params.title); @@ -97,6 +99,25 @@ const boxById: RequestHandler<{ id: string; }> = async (req, res) => { res.render('box.ejs', { box }); }; +const registerBox: RequestHandler<{ id_box: string; id_member: string; quantity: string; }> = async (req, res, next) => { + const id_box = parseInt(req.params.id_box); + const id_member = parseInt(req.params.id_member); + const quantity = parseInt(req.params.quantity); + + await boxService.registerBox(id_box, id_member, quantity); + const memberEither = await memberService.getMember(id_member); + const models = await modelService.getAllBuildableModels(id_member); + + if (memberEither.hasRight) { + next(); + return; + } + + const member = memberEither.left; + + res.render('member.ejs', { member, models }); +}; + const boxController = { boxAddPieces, boxRemovePiece, @@ -104,6 +125,7 @@ const boxController = { allBoxes, allBoxesFromDate, boxById, + registerBox, }; export default boxController; diff --git a/back-end/src/routes/box.route.ts b/back-end/src/routes/box.route.ts index b7cddfd..9f9edb2 100644 --- a/back-end/src/routes/box.route.ts +++ b/back-end/src/routes/box.route.ts @@ -7,8 +7,12 @@ boxRouter.get("/", boxController.allBoxes); boxRouter.get("/from/:date", boxController.allBoxesFromDate); +boxRouter.post("/register", boxController.registerBox); + boxRouter.get("/:title", boxController.boxByTitle); boxRouter.post("/:title", boxController.boxAddPieces); + + boxRouter.delete("/:title", boxController.boxRemovePiece); boxRouter.get("/byid/:id", boxController.boxById); diff --git a/back-end/src/services/box.service.ts b/back-end/src/services/box.service.ts index b6d1a6d..138524f 100644 --- a/back-end/src/services/box.service.ts +++ b/back-end/src/services/box.service.ts @@ -97,12 +97,19 @@ const getAllBoxesFromDate = async (date: Date) => { return await Promise.all(res.rows.map(async (el) => { return await db2box(el) })); } +const registerBox = async (id_box: number, id_member: number, quantity: number) => { + const client = new_client(); + + client.query("INSERT INTO enregistrer ($1, $2, $3);", [id_box, id_member, quantity]); +} + const boxService = { addPiecesToBox, getBox, getAllBoxes, getAllBoxesFromDate, - removePieceFromBox + removePieceFromBox, + registerBox, }; export default boxService;