Skip to content

Commit 43d7e4b

Browse files
authored
Merge pull request #64 from ungdev/fix/sevenOpen-inputDate-perm
Fix/seven open input date perm
2 parents 74f313a + af4cd59 commit 43d7e4b

21 files changed

Lines changed: 74 additions & 63 deletions

backend/src/database/db.ts

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,51 @@ import { Client } from "pg";
33
import { postgres_user, postgres_db, postgres_host, postgres_password, postgres_port } from '../utils/secret';
44

55
// ✅ Import de tous tes schémas ici
6-
import * as user from '../schemas/Basic/user.schema';
7-
import * as team from '../schemas/Basic/team.schema';
8-
import * as perm from '../schemas/Basic/permanence.schema';
9-
import * as event from '../schemas/Basic/event.schema';
10-
import * as faction from '../schemas/Basic/faction.schema';
11-
import * as role from '../schemas/Basic/role.schema';
12-
import * as challenge from '../schemas/Basic/challenge.schema';
13-
import * as permanence from '../schemas/Basic/permanence.schema';
14-
15-
import * as userTeam from '../schemas/Relational/userteams.schema';
16-
import * as teamFaction from '../schemas/Relational/teamfaction.schema';
17-
import * as teamShotgun from '../schemas/Relational/teamshotgun.schema';
18-
import * as userPermanence from '../schemas/Relational/userpermanences.schema';
19-
import * as userRole from '../schemas/Relational/userroles.schema';
20-
import * as challengValidation from '../schemas/Relational/challengevalidation.schema';
21-
import * as busattribution from "../schemas/Relational/busattribution.schema";
22-
import * as registration from "../schemas/Relational/registration.schema";
23-
6+
import * as user from '../schemas/Basic/user.schema';
7+
import * as team from '../schemas/Basic/team.schema';
8+
import * as perm from '../schemas/Basic/permanence.schema';
9+
import * as event from '../schemas/Basic/event.schema';
10+
import * as faction from '../schemas/Basic/faction.schema';
11+
import * as role from '../schemas/Basic/role.schema';
12+
import * as challenge from '../schemas/Basic/challenge.schema';
13+
import * as permanence from '../schemas/Basic/permanence.schema';
14+
import * as userTeam from '../schemas/Relational/userteams.schema';
15+
import * as teamFaction from '../schemas/Relational/teamfaction.schema';
16+
import * as teamShotgun from '../schemas/Relational/teamshotgun.schema';
17+
import * as userPermanence from '../schemas/Relational/userpermanences.schema';
18+
import * as userRole from '../schemas/Relational/userroles.schema';
19+
import * as challengValidation from '../schemas/Relational/challengevalidation.schema';
20+
import * as busattribution from "../schemas/Relational/busattribution.schema";
21+
import * as registration from "../schemas/Relational/registration.schema";
22+
import * as tent from "../schemas/Relational/usertent.schema";
23+
import * as rolepoints from "../schemas/Relational/rolepoints.schema";
24+
25+
26+
const schema = {
27+
...user,
28+
...team,
29+
...perm,
30+
...event,
31+
...faction,
32+
...role,
33+
...challenge,
34+
...permanence,
35+
...userTeam,
36+
...teamFaction,
37+
...teamShotgun,
38+
...userPermanence,
39+
...userRole,
40+
...challengValidation,
41+
...busattribution,
42+
...registration,
43+
...tent,
44+
...rolepoints
45+
};
2446

2547
const client = new Client({
2648
connectionString: `postgresql://${postgres_user}:${postgres_password}@${postgres_host}:${postgres_port}/${postgres_db}`,
2749
});
2850

2951
client.connect();
3052

31-
export const db = drizzle(client, {
32-
schema: {
33-
...user,
34-
...team,
35-
...event,
36-
...faction,
37-
...role,
38-
...perm,
39-
...challenge,
40-
...permanence,
41-
42-
...userTeam,
43-
...teamFaction,
44-
...teamShotgun,
45-
...userPermanence,
46-
...userRole,
47-
...challengValidation,
48-
...busattribution,
49-
...registration
50-
51-
},
52-
});
53+
export const db = drizzle(client, {schema: schema});

frontend/src/App.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import React from 'react';
33
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
44

5-
import LoginPage from './pages/Auth';
6-
import { HomePage } from './pages/Home';
7-
import { ProfilPage } from './pages/Profil';
8-
import { ShotgunPage } from './pages/Shotgun';
5+
import LoginPage from './pages/auth';
6+
import { HomePage } from './pages/home';
7+
import { ProfilPage } from './pages/profil';
8+
import { ShotgunPage } from './pages/shotgun';
99
import { AdminPageRole,
1010
AdminPageTeam,
1111
AdminPageEvents,
@@ -17,23 +17,23 @@ import { AdminPageRole,
1717
AdminPageUser,
1818
AdminPageNews,
1919
AdminPageGames,
20-
AdminPageTent} from './pages/Admin';
20+
AdminPageTent} from './pages/admin';
2121

2222
import ProtectedRoute from './components/utils/protectedroute';
2323
import AdminRoute from './components/utils/adminroute';
24-
import { AvailablePermanencesPage, MyPermanencesPage, RespoCallPage } from './pages/Perm';
25-
import { ChallPage } from './pages/Challenge';
26-
import { ParrainagePage } from './pages/Parrainage';
27-
import { RegisterPage } from './pages/Register';
28-
import { ResetPasswordPage } from './pages/ResetPassword'
29-
import { WeiPage } from './pages/Wei';
30-
import { SdiPage } from './pages/Sdi';
31-
import { NewsPage } from './pages/News';
32-
import {DiscordPage} from './pages/Discord';
24+
import { AvailablePermanencesPage, MyPermanencesPage, RespoCallPage } from './pages/perm';
25+
import { ChallPage } from './pages/challenge';
26+
import { ParrainagePage } from './pages/parrainage';
27+
import { RegisterPage } from './pages/register';
28+
import { ResetPasswordPage } from './pages/resetPassword'
29+
import { WeiPage } from './pages/wei';
30+
import { SdiPage } from './pages/sdi';
31+
import { NewsPage } from './pages/news';
32+
import {DiscordPage} from './pages/discord';
3333
import PrivateRoute from './components/utils/privateroute';
34-
import { GamesPage } from './pages/Games';
35-
import { FoodPage } from './pages/Food';
36-
import { PlanningsPage } from './pages/Plannings';
34+
import { GamesPage } from './pages/games';
35+
import { FoodPage } from './pages/food';
36+
import { PlanningsPage } from './pages/plannings';
3737

3838

3939
const App: React.FC = () => {

frontend/src/components/Admin/AdminPerm/adminPermAction.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ interface PermanenceActionsProps {
99
onRefresh: () => void;
1010
}
1111

12+
// Fonction utilitaire pour "normaliser" une date au début de journée (00:00:00)
13+
const normalizeDate = (d: Date): Date => {
14+
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
15+
};
16+
1217
const inSevenDays = (): Date => {
1318
const d = new Date();
1419
d.setDate(d.getDate() + 7);
15-
return d;
20+
return normalizeDate(d); // → seuil à J+7 mais à 00h00
1621
};
1722

1823
const PermanenceActions: React.FC<PermanenceActionsProps> = ({ permanences, onRefresh }) => {
@@ -28,7 +33,10 @@ const PermanenceActions: React.FC<PermanenceActionsProps> = ({ permanences, onRe
2833
if (!confirm.isConfirmed) return;
2934

3035
const threshold = inSevenDays().getTime();
31-
const toOpen = permanences.filter((p) => new Date(p.start_at).getTime() < threshold);
36+
const toOpen = permanences.filter((p) => {
37+
const permDate = normalizeDate(new Date(p.start_at)).getTime();
38+
return permDate <= threshold;
39+
});
3240

3341
try {
3442
await Promise.all(toOpen.map((p) => openPermanence(p.id)));
@@ -51,8 +59,10 @@ const PermanenceActions: React.FC<PermanenceActionsProps> = ({ permanences, onRe
5159
if (!confirm.isConfirmed) return;
5260

5361
const threshold = inSevenDays().getTime();
54-
const toClose = permanences.filter((p) => new Date(p.start_at).getTime() < threshold);
55-
62+
const toClose = permanences.filter((p) => {
63+
const permDate = normalizeDate(new Date(p.start_at)).getTime();
64+
return permDate <= threshold;
65+
});
5666
try {
5767
await Promise.all(toClose.map((p) => closePermanence(p.id)));
5868
await Swal.fire("Fermées", "Toutes les permanences ont été fermées !", "success");

frontend/src/components/Admin/AdminPerm/adminPermForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ const PermanenceForm = ({
8181
name,
8282
description: desc,
8383
location,
84-
start_at: startAt,
85-
end_at: endAt,
84+
start_at: formatDateForInput(startAt),
85+
end_at: formatDateForInput(endAt),
8686
capacity,
8787
difficulty,
8888
respoId,

0 commit comments

Comments
 (0)