This commit is contained in:
Nemo D'ACREMONT 2024-12-04 12:36:52 +01:00
parent aba7562d91
commit 1577817111
No known key found for this signature in database
GPG Key ID: 6E5BCE8022FA8276
5 changed files with 57 additions and 12 deletions

View File

@ -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}`);
});

View File

@ -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 = {

View File

@ -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 = {

View File

@ -53,6 +53,7 @@ async function getBoxesFromMember(id_member: number): Promise<Array<Pair<Box, nu
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<Pair<Box, number>> = new Array();
for (let index = 0; index < res.rows.length; index++) {
const box: Either<Box, string> = 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 = {

View File

@ -9,6 +9,19 @@
</title>
<%- include('partials/links.ejs') %>
<style>
#box-register-form {
display: flex;
flex-direction: column;
max-width: max(30vw, 60ch);
margin: auto;
}
#box-register-form select, #box-register-form input {
padding: .5rem 1rem;
}
</style>
</head>
<body>
@ -25,13 +38,29 @@
<pre>
id: <%= member.id_member%>
name: <%= member.name%>
name: <%= member.name%>
</pre>
<h2>Liste des boites enregistrées</h2>
<div class="table">
<form name="title" action="/boxes/register" id="box-register-form" method="POST">
<input type="hidden" name="id_member" id="id_member" value="<%= member.id_member %>">
<label for="id_box">id de la boite</label>
<select name="id_box" id="id_box">
<% allboxes.forEach(function(box) { %>
<option value="<%=box.id%>"><%=box.id%></option>
<% }); %>
</select>
<label for="quantity">Quantité</label>
<input type="number" name="quantity" min="0" step="1" id="quantity">
<input type="submit" value="Ajouter">
</form>
<div class="table">
<table>
<thead>
<tr>