Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions backend/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import roleRoutes from './src/routes/role.routes';
import teamRoutes from './src/routes/team.routes';
import tentRoutes from './src/routes/tent.routes';
import userRoutes from './src/routes/user.routes';
import makerBattleRoutes from './src/routes/maker_battle.routes';
import bannedRoutes from './src/routes/banned.routes';
import { server_port } from './src/shared/secrets/secrets';
import { initQcmvss } from './src/database/initdb/initQcmvss';
Expand Down Expand Up @@ -69,6 +70,7 @@ async function startServer() {
app.use('/api/discord', authenticateUser, discordRoutes);
app.use('/api/tent', authenticateUser, tentRoutes);
app.use('/api/bus', authenticateUser, busRoutes);
app.use('/api/maker-battle', authenticateUser, makerBattleRoutes);
app.use('/api/uploads/news', express.static(path.join(__dirname, '/uploads/news')));
app.use('/api/uploads/notebooks', express.static(path.join(__dirname, '/uploads/notebooks')));
app.use('/api/uploads/foodmenu', express.static(path.join(__dirname, '/uploads/foodmenu')));
Expand Down
22 changes: 14 additions & 8 deletions backend/src/controllers/im_export.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,23 +162,29 @@ export const updatePlannings: AppRequestHandler = async (_req, res) => {
}
};

export const exportUsersCSV: AppRequestHandler = async (_req, res) => {
export const exportBus: AppRequestHandler = async (_req, res) => {
try {
await export_service.exportUsersToCSV();
Ok(res, { msg: 'CSV des bus généré' });
const exportData = await export_service.exportBus();
res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Disposition', `attachment; filename="bus_${Date.now()}.json"`);

return res.status(200).json(exportData);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faudrait passer par un Ok

} catch (error) {
console.error(error);
Error(res, { msg: "Erreur lors de l'export CSV" });
return Error(res, { msg: "Erreur lors de l'exportation des memsbres des équipes : " + error });
}
};

export const exportTeamMembersCSV: AppRequestHandler = async (_req, res) => {
export const exportTeamMembers: AppRequestHandler = async (_req, res) => {
try {
await export_service.exportTeamMembersToCSV();
Ok(res, { msg: "CSV des membres de l'équipe généré" });
const exportData = await export_service.exportTeamMembers();
res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Disposition', `attachment; filename="team_members_${Date.now()}.json"`);

return res.status(200).json(exportData);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faudrait passer par un Ok

} catch (error) {
console.error(error);
Error(res, { msg: "Erreur lors de l'export CSV" });
return Error(res, { msg: "Erreur lors de l'exportation des memsbres des équipes : " + error });
}
};
export const getUploadedDocumentStatus: AppRequestHandler<unknown, unknown, UploadedDocumentParams> = async (
Expand Down
61 changes: 61 additions & 0 deletions backend/src/controllers/maker_battle.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import * as maker_battle_service from '../services/maker_battle.service';
import type { AppRequestHandler } from '../types/http';
import { Error, Ok } from '../shared/http/responses';
import type { Group, GroupsList } from '../dto/maker_battle.dto';

export const distributeGroups: AppRequestHandler<GroupsList> = async (req, res) => {
const groups = req.body.groups;
if (!groups || !Array.isArray(groups)) {
return Error(res, { msg: 'Invalid request: groups must be an array' });
}

try {
for (const group of groups) {
await maker_battle_service.distributeGroups(group);
}
await maker_battle_service.placeTeamsOnTables(groups);

Ok(res, { data: { success: true, message: 'Groups allocated successfully' } });
return;
} catch (err) {
return Error(res, { msg: 'Erreur lors de la distribution des groupes : ' + err });
}
};

export const exportGroups: AppRequestHandler<Group> = async (req, res) => {
const { group } = req.params;
if (!group || typeof group !== 'string') {
return Error(res, { msg: 'Invalid request: group must be a string' });
}

try {
const exportData = await maker_battle_service.exportGroups(group);

res.setHeader('Content-Type', 'application/json');
res.setHeader('Content-Disposition', `attachment; filename="maker_battle_${group}_${Date.now()}.json"`);

Ok(res, { data: exportData });
return;
} catch (err) {
return Error(res, { msg: "Erreur lors de l'exportation des groupes : " + err });
}
};

export const getCurrentUser: AppRequestHandler = async (req, res) => {
try {
const userId = req.user.userId;

if (!userId) {
return Error(res, { msg: 'User not authenticated' });
}

const userGroup = await maker_battle_service.getUserTeam(userId);

Ok(res, { data: { group: userGroup ?? null } });
return;
} catch (err) {
return Error(res, {
msg: "Erreur lors de la récupération du groupe de l'utilisateur : " + err,
});
}
};
9 changes: 9 additions & 0 deletions backend/src/database/migrations/0028_tan_slapstick.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CREATE TABLE "maker_battle_attribution" (
"user_id" integer PRIMARY KEY NOT NULL,
"maker_team_id" integer NOT NULL,
"faction_id" integer NOT NULL,
"table" integer,
"group" text NOT NULL
);
--> statement-breakpoint
ALTER TABLE "maker_battle_attribution" ADD CONSTRAINT "maker_battle_attribution_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
Loading
Loading