Skip to content
Snippets Groups Projects
Commit 6f4e872d authored by ExtraDev's avatar ExtraDev
Browse files

add CRUDS

parent 6a3f883e
Branches
No related tags found
No related merge requests found
...@@ -61,6 +61,21 @@ app.get('/tags/edition', (req, res) => { ...@@ -61,6 +61,21 @@ app.get('/tags/edition', (req, res) => {
res.json(result); res.json(result);
}); });
}); });
app.post('/tags/edition/tag', (req, res) => {
let year = req.body.year;
if (!year) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = "SELECT `id_tag` FROM `tag_team_edition` WHERE `year` = ?";
exports.db.query(query, [year], (err, result) => {
if (err) {
res.send(err);
return;
}
res.json(result);
});
});
// Insert a tag // Insert a tag
app.post('/tags', (req, res) => { app.post('/tags', (req, res) => {
let id_tag = req.body.id_tag; let id_tag = req.body.id_tag;
...@@ -147,17 +162,59 @@ app.post('/teams', (req, res) => { ...@@ -147,17 +162,59 @@ app.post('/teams', (req, res) => {
exports.db.query(query, [team_name, team_participants], (err, result) => { exports.db.query(query, [team_name, team_participants], (err, result) => {
if (err) { if (err) {
res.status(http_status_codes_1.default.CONFLICT).send({ error: "Team name already exists!" }); res.status(http_status_codes_1.default.CONFLICT).send({ error: "Team name already exists!" });
return;
} }
let id_team = result.insertId; let id_team = result.insertId;
const query_tte = "INSERT INTO `tag_team_edition`(`id_tag`, `id_team`, `year`) VALUES (?,?,?)"; const query_tte = "INSERT INTO `tag_team_edition`(`id_tag`, `id_team`, `year`) VALUES (?,?,?)";
exports.db.query(query_tte, [tag, id_team, year], (err, result) => { exports.db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) { if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" }); res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
return;
}
res.status(http_status_codes_1.default.OK).send();
});
});
});
app.put('/teams', (req, res) => {
let id_team = req.body.id_team;
let team_name = req.body.team_name;
let team_participants = req.body.team_participants;
let year = req.body.year_selected;
let tag = req.body.tag_selected;
if (!id_team || !team_name || !team_participants || !year || !tag) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = 'UPDATE `team` SET `name`= ?,`participants`= ? WHERE id_team = ?';
exports.db.query(query, [team_name, team_participants, id_team], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.CONFLICT).send({ error: "Team name already exists!" });
return;
}
const query_tte = "UPDATE `tag_team_edition` SET `id_tag` = ? WHERE `tag_team_edition`.`id_team` = ? AND `tag_team_edition`.`year` = ? ";
exports.db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
return;
} }
res.status(http_status_codes_1.default.OK).send(); res.status(http_status_codes_1.default.OK).send();
}); });
}); });
}); });
app.delete('/teams', (req, res) => {
let id_team = req.body.id_team;
if (!id_team) {
res.status(http_status_codes_1.default.BAD_REQUEST).send({ error: "Missing arguments" });
return;
}
const query = "DELETE FROM team WHERE id_team = ?";
exports.db.query(query, [id_team], (err, result) => {
if (err) {
res.status(http_status_codes_1.default.INTERNAL_SERVER_ERROR).send({ error: "Something wrong append" });
}
res.status(http_status_codes_1.default.OK).send();
});
});
/* /*
* ------------------------------- Entry / results -------------------------------------- * ------------------------------- Entry / results --------------------------------------
*/ */
......
...@@ -72,6 +72,26 @@ app.get('/tags/edition', (req: Request, res: Response) => { ...@@ -72,6 +72,26 @@ app.get('/tags/edition', (req: Request, res: Response) => {
}) })
}); });
app.post('/tags/edition/tag', (req: Request, res: Response) => {
let year = req.body.year;
if (!year) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = "SELECT `id_tag` FROM `tag_team_edition` WHERE `year` = ?"
db.query(query, [year], (err, result) => {
if (err) {
res.send(err);
return
}
res.json(result);
})
});
// Insert a tag // Insert a tag
app.post('/tags', (req: Request, res: Response) => { app.post('/tags', (req: Request, res: Response) => {
let id_tag = req.body.id_tag; let id_tag = req.body.id_tag;
...@@ -184,6 +204,7 @@ app.post('/teams', (req: Request, res:Response) => { ...@@ -184,6 +204,7 @@ app.post('/teams', (req: Request, res:Response) => {
db.query(query, [team_name, team_participants], (err, result) => { db.query(query, [team_name, team_participants], (err, result) => {
if (err) { if (err) {
res.status(StatusCode.CONFLICT).send({error: "Team name already exists!"}); res.status(StatusCode.CONFLICT).send({error: "Team name already exists!"});
return
} }
let id_team = result.insertId; let id_team = result.insertId;
...@@ -192,6 +213,41 @@ app.post('/teams', (req: Request, res:Response) => { ...@@ -192,6 +213,41 @@ app.post('/teams', (req: Request, res:Response) => {
db.query(query_tte, [tag, id_team, year], (err, result) => { db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) { if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"}); res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
return
}
res.status(StatusCode.OK).send();
});
});
})
app.put('/teams', (req: Request, res:Response) => {
let id_team = req.body.id_team
let team_name = req.body.team_name;
let team_participants = req.body.team_participants;
let year = req.body.year_selected;
let tag = req.body.tag_selected;
if(!id_team || !team_name || !team_participants || !year || !tag) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = 'UPDATE `team` SET `name`= ?,`participants`= ? WHERE id_team = ?';
db.query(query, [team_name, team_participants, id_team], (err, result) => {
if (err) {
res.status(StatusCode.CONFLICT).send({error: "Team name already exists!"});
return
}
const query_tte = "UPDATE `tag_team_edition` SET `id_tag` = ? WHERE `tag_team_edition`.`id_team` = ? AND `tag_team_edition`.`year` = ? ";
db.query(query_tte, [tag, id_team, year], (err, result) => {
if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
return
} }
res.status(StatusCode.OK).send(); res.status(StatusCode.OK).send();
...@@ -199,6 +255,25 @@ app.post('/teams', (req: Request, res:Response) => { ...@@ -199,6 +255,25 @@ app.post('/teams', (req: Request, res:Response) => {
}); });
}) })
app.delete('/teams',(req: Request, res:Response) => {
let id_team = req.body.id_team;
if(!id_team) {
res.status(StatusCode.BAD_REQUEST).send({error: "Missing arguments"});
return
}
const query = "DELETE FROM team WHERE id_team = ?";
db.query(query, [id_team], (err, result) => {
if (err) {
res.status(StatusCode.INTERNAL_SERVER_ERROR).send({error: "Something wrong append"});
}
res.status(StatusCode.OK).send();
});
});
/* /*
* ------------------------------- Entry / results -------------------------------------- * ------------------------------- Entry / results --------------------------------------
*/ */
......
...@@ -2,9 +2,8 @@ ...@@ -2,9 +2,8 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Svelte</title> <title>Boldor</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
<Router> <Router>
<header> <header>
<h1 id="title">Boldor</h1> <h1 id="title">Boldor</h1>
<Link class="link" to="/">Home</Link> <Link to="/"><span class="nav-link">Home</span></Link>
<Link class="link" to="teams">Équipes</Link> <Link to="teams"><span class="nav-link">Équipes</span></Link>
<Link class="link" to="team">Gestion des équipes</Link> <Link to="team"><span class="nav-link">Gestion des équipes</span></Link>
<Link class="link" to="entry">Résultats</Link> <Link to="entry"><span class="nav-link">Résultats</span></Link>
<Link class="link" to="tags">Tag RFID</Link> <Link to="tags"><span class="nav-link">Tag RFID</span></Link>
</header> </header>
<main> <main>
...@@ -62,10 +62,6 @@ ...@@ -62,10 +62,6 @@
text-align: center; text-align: center;
} }
.link {
background-color: brown;
}
main { main {
width: 80%; width: 80%;
max-width: 1024px; max-width: 1024px;
......
...@@ -30,7 +30,7 @@ select, button { ...@@ -30,7 +30,7 @@ select, button {
color: white; color: white;
border: 0; border: 0;
padding: 10px; padding: 10px;
font-size: 1.1em; font-size: 1em;
font-weight: bold; font-weight: bold;
border-radius: 5px; border-radius: 5px;
} }
...@@ -80,3 +80,24 @@ form button { ...@@ -80,3 +80,24 @@ form button {
font-size: 1.3em; font-size: 1.3em;
padding: 5px; padding: 5px;
} }
.nav-link {
font-size: 1.3em;
text-decoration: none;
color: white;
background-color: #1251c7;
padding: 10px;
border-radius: 5px;
}
.nav-link:hover {
background-color: #0a2f74;
}
.warning {
background-color: #E84855;
}
.warning:hover {
background-color: #9F4A54;
}
\ No newline at end of file
<script> <script>
const edition_url = "http://localhost:8000/editions"; const edition_url = "http://localhost:8000/editions";
const tags_url = "http://localhost:8000/tags/edition/tag";
let year_selected = new Date().getFullYear();
let editions = []; let editions = [];
fetch(edition_url) fetch(edition_url)
...@@ -8,6 +11,26 @@ ...@@ -8,6 +11,26 @@
editions = editions_data; editions = editions_data;
}); });
let tags_array= [];
let tag_selected;
let body_data = {
year: year_selected
};
fetch(tags_url,{
method: "POST",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
})
.then((response) => response.json())
.then((tags_data) => {
console.log(tags_data)
tags_array = tags_data;
tag_selected = tags_array[0].id_tag;
});
let entries = []; let entries = [];
function getEntries(year) { function getEntries(year) {
let entries_url = "http://localhost:8000/entry?year=" + year; let entries_url = "http://localhost:8000/entry?year=" + year;
...@@ -18,7 +41,6 @@ ...@@ -18,7 +41,6 @@
}); });
} }
let year_selected = new Date().getFullYear();
function selectYear() { function selectYear() {
getEntries(year_selected); getEntries(year_selected);
} }
...@@ -30,9 +52,8 @@ ...@@ -30,9 +52,8 @@
getEntries(year_selected); getEntries(year_selected);
function sendEntry() { function sendEntry() {
console.log("get entries");
let body_data = { let body_data = {
id_tag: "19040562" id_tag: tag_selected
}; };
fetch("http://localhost:8000/entry", { fetch("http://localhost:8000/entry", {
...@@ -44,12 +65,7 @@ ...@@ -44,12 +65,7 @@
}).then(function (response) { }).then(function (response) {
if (!response.ok) return Promise.reject(response.status); if (!response.ok) return Promise.reject(response.status);
getEntries(year_selected); getEntries(year_selected);
return response.json(); }).catch(function (error) {
})
.then(function (data) {
console.log("okey" + data);
})
.catch(function (error) {
console.log("Error: " + error); console.log("Error: " + error);
}); });
...@@ -67,7 +83,13 @@ ...@@ -67,7 +83,13 @@
{/each} {/each}
</select> </select>
<button on:click={sendEntry}>Add entry</button> <select name="" id="" bind:value={tag_selected}>
{#each tags_array as tag}
<option value={tag.id_tag}>{tag.id_tag}</option>
{/each}
</select>
<button on:click|preventDefault={sendEntry}>Add entry</button>
</form> </form>
<table> <table>
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
<button on:click|preventDefault={updateTag}>Mettre à jour</button> <button on:click|preventDefault={updateTag}>Mettre à jour</button>
{/if} {/if}
{:else} {:else}
<button on:click|preventDefault={deleteTag}>Supprimer le tag</button> <button class="warning" on:click|preventDefault={deleteTag}>Supprimer le tag</button>
{/if} {/if}
</form> </form>
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
let teams = []; let teams = [];
let availableTags = []; let availableTags = [];
let year_selected = new Date().getFullYear(); let year_selected = new Date().getFullYear();
let update = false;
let id_team;
let TEAMS_URL = "http://localhost:8000/teams/tag?year="; let TEAMS_URL = "http://localhost:8000/teams/tag?year=";
function getTeams() { function getTeams() {
...@@ -37,6 +39,7 @@ ...@@ -37,6 +39,7 @@
// Send data // Send data
function save() { function save() {
if(!update) {
if(!team_name || !team_participants || !tag_selected || !year_selected) { if(!team_name || !team_participants || !tag_selected || !year_selected) {
alert("Vous devez remplir tous les champs"); alert("Vous devez remplir tous les champs");
return return
...@@ -59,13 +62,38 @@ ...@@ -59,13 +62,38 @@
.then(function (response) { .then(function (response) {
if (!response.ok) return Promise.reject(response.status); if (!response.ok) return Promise.reject(response.status);
getTeams(); getTeams();
}).catch(function (error) {
console.log("Error: " + error);
});
} else {
if(!team_name || !team_participants || !tag_selected || !year_selected) {
alert("Vous devez remplir tous les champs");
return
}
let body_data = {
id_team: id_team,
team_name: team_name,
team_participants: team_participants,
tag_selected: tag_selected,
year_selected: year_selected
};
fetch("http://localhost:8000/teams", {
method: "PUT",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
}) })
.then(function (data) { .then(function (response) {
console.log("okey" + data); if (!response.ok) return Promise.reject(response.status);
}) getTeams();
.catch(function (error) { }).catch(function (error) {
console.log("Error: " + error); console.log("Error: " + error);
}); });
}
} }
...@@ -76,11 +104,13 @@ ...@@ -76,11 +104,13 @@
function selectTeam(index) { function selectTeam(index) {
for (let i in teams) { for (let i in teams) {
if(teams[i].id_team == index) { if(teams[i].id_team == index) {
id_team = teams[i].id_team;
team_name = teams[i].name; team_name = teams[i].name;
team_participants = teams[i].participants; team_participants = teams[i].participants;
tag_selected = teams[i].id_tag; tag_selected = teams[i].id_tag;
} }
} }
update = true;
} }
getTeams() getTeams()
...@@ -124,7 +154,11 @@ ...@@ -124,7 +154,11 @@
</select> </select>
</div> </div>
{#if !update}
<button on:click|preventDefault={save}>Enregistrer</button> <button on:click|preventDefault={save}>Enregistrer</button>
{:else}
<button on:click|preventDefault={save}>Mettre à jour les informations</button>
{/if}
</form> </form>
</div> </div>
......
<script> <script>
const edition_url = "http://localhost:8000/editions"; const edition_url = "http://localhost:8000/editions";
let id_team;
let delete_mod = false;
let team_name = "";
let editions = []; let editions = [];
fetch(edition_url) fetch(edition_url)
...@@ -23,6 +26,38 @@ ...@@ -23,6 +26,38 @@
getTeams(year_selected); getTeams(year_selected);
} }
function selectTeam(id_selected) {
id_team = id_selected;
delete_mod = true;
for (let i in teams) {
if(teams[i].id_team == id_selected) {
team_name = teams[i].name;
}
}
}
function deleteTeam(){
let body_data = {
id_team: id_team
};
fetch("http://localhost:8000/teams", {
method: "DELETE",
body: JSON.stringify(body_data),
headers: {
"Content-type": "application/json; charset=UTF-8",
},
})
.then(function (response) {
if (!response.ok) return Promise.reject(response.status);
getTeams(year_selected);
id_team = "";
delete_mod = false;
}).catch(function (error) {
console.log("Error: " + error);
});
}
getTeams(year_selected); getTeams(year_selected);
</script> </script>
...@@ -35,6 +70,10 @@ ...@@ -35,6 +70,10 @@
{/each} {/each}
</select> </select>
{#if delete_mod}
<button class="warning" on:click={deleteTeam}>Confirmer la suppression de la team "{team_name}"</button>
{/if}
<table> <table>
<tr> <tr>
<th>Tag RFID</th> <th>Tag RFID</th>
...@@ -45,7 +84,7 @@ ...@@ -45,7 +84,7 @@
<tr> <tr>
<td>{team.id_tag}</td> <td>{team.id_tag}</td>
<td>{team.name}</td> <td>{team.name}</td>
<td>...</td> <td><button on:click={()=>selectTeam(team.id_team)}>Supprimer</button></td>
</tr> </tr>
{/each} {/each}
</table> </table>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment