merge : new database method.

This commit is contained in:
damien DELPY 2024-12-04 18:17:41 +01:00
commit 052a69633d
No known key found for this signature in database
5 changed files with 37 additions and 16 deletions

View File

@ -156,28 +156,24 @@ const boxById: RequestHandler<{ id: string; }> = async (req, res) => {
res.render('box.ejs', { box });
};
const removeBoxFromMember : RequestHandler<{ id_box: string, id_member: string }> = async (req, res) => {
const id_box = parseInt(req.params.id_box);
const id_member = parseInt(req.params.id_member);
await boxService.removeBoxFromMember(id_box, id_member)
res.sendStatus(200);
}
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);
if (isNaN(id_box) || isNaN(id_member) || isNaN(quantity))
next();
await boxService.registerBox(id_box, id_member, quantity);
const memberEither = await memberService.getMember(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, boxes, pieces, allboxes });
res.redirect('/membres/byid/' + id_member);
};
const boxController = {
@ -189,7 +185,8 @@ const boxController = {
allBoxesFromDate,
boxById,
registerBox,
boxRemovePieceById
boxRemovePieceById,
removeBoxFromMember,
};
export default boxController;

View File

@ -12,6 +12,8 @@ boxRouter.post("/register", boxController.registerBox);
boxRouter.get("/:title", boxController.boxByTitle);
boxRouter.post("/:title", boxController.boxAddPieces);
boxRouter.delete("/:id_box/:id_member", boxController.removeBoxFromMember);
boxRouter.delete("/byid/:id_box", boxController.boxRemovePieceById);
boxRouter.post("/byid/:id_box", boxController.boxAddPiecesById);

View File

@ -126,6 +126,12 @@ const registerBox = async (id_box: number, id_member: number, quantity: number)
await client.query("INSERT INTO enregistrer VALUES($1, $2, $3);", [id_box, id_member, quantity]);
}
const removeBoxFromMember = async (id_box: number, id_member: number) => {
const client = new_client();
await client.query("DELETE FROM enregistrer WHERE id_boite=$1 AND id_membre=$2;", [id_box, id_member]);
}
const boxService = {
addPiecesToBox,
getBox,
@ -134,6 +140,7 @@ const boxService = {
removePieceFromBox,
registerBox,
getBoxesFromMember,
removeBoxFromMember,
};
export default boxService;

View File

@ -6,6 +6,11 @@
font-family: sans-serif;
}
button {
background-color: transparent;
cursor: pointer;
}
pre, code {
font-family: monospace;
}

View File

@ -21,7 +21,15 @@
padding: .5rem 1rem;
}
i { color: var(--bg); }
</style>
<script>
function removeBox(id) {
fetch(window.location.origin + '/boxes/' + id + '/' + <%= member.id_member%>, { method: 'DELETE' }).then(r => window.location.reload());
}
</script>
</head>
<body>
@ -69,6 +77,7 @@
<th>Nombre de pièces</th>
<th>Quantité</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@ -87,6 +96,7 @@
<%=box.second%>
</td>
<td><a href="/boxes/byid/<%=box.first.id%>"><i class="fa-solid fa-eye"></i></a></td>
<td><button onclick="removeBox(<%=box.first.id%>)"><i class="fa-solid fa-trash"></i></button></td>
</tr>
<% }); %>