From 1577817111c237e93e5e5e0e3e2b4def95ccbbfd Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Wed, 4 Dec 2024 12:36:52 +0100 Subject: [PATCH] merge --- back-end/src/app.ts | 2 +- back-end/src/controllers/box.controller.ts | 18 ++++++---- back-end/src/controllers/member.controller.ts | 6 ++-- back-end/src/services/box.service.ts | 10 +++++- back-end/src/templates/member.ejs | 33 +++++++++++++++++-- 5 files changed, 57 insertions(+), 12 deletions(-) diff --git a/back-end/src/app.ts b/back-end/src/app.ts index d9318d0..d53345c 100644 --- a/back-end/src/app.ts +++ b/back-end/src/app.ts @@ -29,7 +29,7 @@ app.use(morgan(log_format)); // Defines endpoints app.use(routes); -process.on('*', (e) => { +process.on('uncaughtException', (e) => { console.error(`Unhandled error catched: ${e}`); }); diff --git a/back-end/src/controllers/box.controller.ts b/back-end/src/controllers/box.controller.ts index 9960472..fb770f8 100644 --- a/back-end/src/controllers/box.controller.ts +++ b/back-end/src/controllers/box.controller.ts @@ -6,6 +6,7 @@ import { Box } from '../types/box' import { Piece } from '../types/piece' import memberService from "../services/member.service"; import modelService from "../services/model.service"; +import { getBuyedPiecesFromMember } from "../services/pieces.service"; const boxByTitle: RequestHandler<{ title: string; }> = async (req, res) => { const boxEither = await boxService.getBox(req.params.title); @@ -99,23 +100,28 @@ 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); +const registerBox: RequestHandler = async (req, res, next) => { + const id_box = parseInt(req.body.id_box); + const id_member = parseInt(req.body.id_member); + const quantity = parseInt(req.body.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) { + console.error(memberEither.right); next(); return; } const member = memberEither.left; + const models = await modelService.getAllBuildableModels(member.id_member); + const boxes = await boxService.getBoxesFromMember(member.id_member); + const pieces = await getBuyedPiecesFromMember(member.id_member); + const allboxes = await boxService.getAllBoxes(); - res.render('member.ejs', { member, models }); + res.render('member.ejs', { member, models, boxes, pieces, allboxes }); }; const boxController = { diff --git a/back-end/src/controllers/member.controller.ts b/back-end/src/controllers/member.controller.ts index eeb2751..e0d6a12 100644 --- a/back-end/src/controllers/member.controller.ts +++ b/back-end/src/controllers/member.controller.ts @@ -16,8 +16,9 @@ const memberByName: RequestHandler<{ name: string; }> = async (req, res) => { const models = await modelService.getAllBuildableModels(member.id_member); const boxes = await boxService.getBoxesFromMember(member.id_member); const pieces = await getBuyedPiecesFromMember(member.id_member); + const allboxes = await boxService.getAllBoxes(); - res.render('member.ejs', { member, models, boxes, pieces }); + res.render('member.ejs', { member, models, boxes, pieces, allboxes }); }; const allMembers: RequestHandler = async (_req, res) => { @@ -43,8 +44,9 @@ const memberById: RequestHandler<{ id: string; }> = async (req, res) => { const models = await modelService.getAllBuildableModels(member.id_member); const boxes = await boxService.getBoxesFromMember(member.id_member); const pieces = await getBuyedPiecesFromMember(member.id_member); + const allboxes = await boxService.getAllBoxes(); - res.render('member.ejs', { member, models, boxes, pieces }); + res.render('member.ejs', { member, models, boxes, pieces, allboxes }); }; const memberController = { diff --git a/back-end/src/services/box.service.ts b/back-end/src/services/box.service.ts index 46193b8..db19925 100644 --- a/back-end/src/services/box.service.ts +++ b/back-end/src/services/box.service.ts @@ -53,6 +53,7 @@ async function getBoxesFromMember(id_member: number): Promise> = new Array(); + for (let index = 0; index < res.rows.length; index++) { const box: Either = await getBox(res.rows[index]['id_boite']); if (box.hasRight) @@ -115,7 +116,14 @@ const getAllBoxesFromDate = async (date: Date) => { 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 boxes = await boxService.getBoxesFromMember(id_member); + + if (boxes.map(el => el.first).find(el => el.id == id_box)) { + const qty = await client.query("SELECT quantite_enregistrer FROM enregistrer WHERE id_boite=$1 AND id_membre=$2;", [id_box, id_member]); + await client.query("UPDATE enregistrer SET quantite_enregistrer=$3 WHERE id_boite=$1 AND id_membre=$2;", [id_box, id_member, qty.rows[0].quantite_enregistrer + quantity]); + } + else + await client.query("INSERT INTO enregistrer VALUES($1, $2, $3);", [id_box, id_member, quantity]); } const boxService = { diff --git a/back-end/src/templates/member.ejs b/back-end/src/templates/member.ejs index 50a1d0d..437ad77 100644 --- a/back-end/src/templates/member.ejs +++ b/back-end/src/templates/member.ejs @@ -9,6 +9,19 @@ <%- include('partials/links.ejs') %> + @@ -25,13 +38,29 @@
         id: <%= member.id_member%>
-          name: <%= member.name%>
+        name: <%= member.name%>
       

Liste des boites enregistrées

+
+ + + + + + + + + +
+
-