diff --git a/back-end/src/controllers/member.controller.ts b/back-end/src/controllers/member.controller.ts index 76e873a..c525166 100644 --- a/back-end/src/controllers/member.controller.ts +++ b/back-end/src/controllers/member.controller.ts @@ -1,6 +1,7 @@ import { RequestHandler } from "express"; import memberService from "../services/member.service"; import modelService from "../services/model.service"; +import boxService from "../services/box.service"; const memberByName: RequestHandler<{ name: string; }> = async (req, res) => { const memberEither = await memberService.getMember(req.params.name); @@ -12,8 +13,9 @@ const memberByName: RequestHandler<{ name: string; }> = async (req, res) => { const member = memberEither.left; const models = await modelService.getAllBuildableModels(member.id_member); + const boxes = await boxService.getBoxesFromMember(member.id_member); - res.render('member.ejs', { member, models }); + res.render('member.ejs', { member, models, boxes }); }; const allMembers: RequestHandler = async (_req, res) => { @@ -37,8 +39,10 @@ const memberById: RequestHandler<{ id: string; }> = async (req, res) => { const member = memberEither.left; const models = await modelService.getAllBuildableModels(member.id_member); + const boxes = await boxService.getBoxesFromMember(member.id_member); + console.log(boxes); - res.render('member.ejs', { member, models }); + res.render('member.ejs', { member, models, boxes }); }; const memberController = { diff --git a/back-end/src/services/box.service.ts b/back-end/src/services/box.service.ts index 138524f..c244e55 100644 --- a/back-end/src/services/box.service.ts +++ b/back-end/src/services/box.service.ts @@ -5,16 +5,17 @@ import { Piece } from '../types/piece'; import { getPiece } from './pieces.service'; import { Either, eitherLeft, eitherRight, Pair, createPair } from '../utils/utils'; import modelService from './model.service'; +import { config } from 'dotenv'; type DBBox = { - id_boite: number; - titre_boite: string; - date_boite: string; + id_boite: number; + titre_boite: string; + date_boite: string; }; async function getPiecesFromBox(id_box: number): Promise>> { const client = new_client(); - const res = await client.query(`SELECT * FROM contenir WHERE id_boite = $1;`, [ id_box ]); + const res = await client.query(`SELECT * FROM contenir WHERE id_boite = $1;`, [id_box]); const arr: Array> = new Array(); for (let i = 0; i < res.rows.length; ++i) { const piece: Either = await getPiece(res.rows[i]['id_piece']); @@ -27,17 +28,17 @@ async function getPiecesFromBox(id_box: number): Promise> { const client = new_client(); - const res = await client.query(`SELECT * FROM modeles_faisables_boite($1);`, [ id_box ]); + const res = await client.query(`SELECT * FROM modeles_faisables_boite($1);`, [id_box]); const arr: Array = new Array(); for (let i = 0; i < res.rows.length; ++i) { const model: Either = await modelService.getModel(res.rows[i]['id_model']); @@ -48,16 +49,30 @@ async function getModelsFromBox(id_box: number): Promise> { return arr; } +async function getBoxesFromMember(id_member: number): Promise>> { + const client = new_client() + const res = await client.query(`SELECT id_boite, quantite_enregistrer FROM enregistrer WHERE id_membre = $1;`, [id_member]) + const arr: Array> = new Array(); + for (let index = 0; index < res.rows.length; index++) { + const box: Either = await getBox(res.rows[index]['id_boite']); + if (box.hasRight) + continue; + arr.push(createPair(box.left, res.rows[index]['quantite_enregistrer'])); + } + + return arr; +} + async function db2box(data: DBBox): Promise { - const box: Box = { - id: data.id_boite, - title: data.titre_boite, - date: new Date(data.date_boite), + const box: Box = { + id: data.id_boite, + title: data.titre_boite, + date: new Date(data.date_boite), models: await getModelsFromBox(data.id_boite), pieces: await getPiecesFromBox(data.id_boite) - }; + }; - return box; + return box; } const getBox = async (idOrTitle: number | string): Promise> => { @@ -87,10 +102,10 @@ const getAllBoxes = async () => { const getAllBoxesFromDate = async (date: Date) => { const client = new_client(); - const YYYY = date.getFullYear(); - const MM = date.getMonth() + 1; - const DD = date.getDate(); - const dateString = `${YYYY}-${MM}-${DD}`; + const YYYY = date.getFullYear(); + const MM = date.getMonth() + 1; + const DD = date.getDate(); + const dateString = `${YYYY}-${MM}-${DD}`; const res = await client.query("SELECT * FROM boites WHERE date_boite > $1", [dateString]); @@ -100,16 +115,17 @@ 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]); + client.query("INSERT INTO enregistrer ($1, $2, $3);", [id_box, id_member, quantity]); } const boxService = { addPiecesToBox, - getBox, - getAllBoxes, - getAllBoxesFromDate, + getBox, + getAllBoxes, + getAllBoxesFromDate, removePieceFromBox, - registerBox, + registerBox, + getBoxesFromMember, }; export default boxService; diff --git a/back-end/src/templates/member.ejs b/back-end/src/templates/member.ejs index 10d9c5d..0695564 100644 --- a/back-end/src/templates/member.ejs +++ b/back-end/src/templates/member.ejs @@ -14,45 +14,87 @@ <%- include('partials/header.ejs') %>
- -

- <%= member.name %> -

-
+

+ <%= member.name %> +

-

Caractéristiques

+
-
-      id: <%= member.id_member%>
-      name: <%= member.name%>
-    
+

Caractéristiques

-

Liste des modèles faisables

+
+        id: <%= member.id_member%>
+          name: <%= member.name%>
+      
- - - - - - - - - - - <% models.forEach(function(model) { %> - - - - - - +

Liste des boites enregistrées

- <% }); %> +
Id modèleNom modèleProposé par
<%=model.id%><%=model.name%> <%=model.creator%>
+ + + + + + + + + + + <% boxes.forEach(function(box) { %> + + + + + + + - -
IdNomNombre de piècesQuantité
+ <%=box.first.id%> + + <%=box.first.title%> + <%- box.first.pieces.reduce( (p,q)=> p + q.second, 0 + ) + -%> + <%=box.second%> +
- -
+ <% }); %> + + + + + +

Liste des modèles faisables

+ + + + + + + + + + + + <% models.forEach(function(model) { %> + + + + + + + + <% }); %> + + +
Id modèleNom modèleProposé par
+ <%=model.id%> + + <%=model.name%> + + <%=model.creator%> +
+ +