This commit is contained in:
trochas
2026-01-07 13:52:13 +01:00
12 changed files with 168 additions and 58 deletions

View File

@@ -1,4 +1,4 @@
import React, { useEffect } from 'react';
import React from 'react';
import './App.css';
import { ReactKeycloakProvider } from '@react-keycloak/web'
import keycloak from './keycloak'
@@ -7,9 +7,15 @@ import { LocalDataProvider } from './provider/LocalDataProvider';
import EDT from './components/edt';
import SwitchThemeColor from './components/SwitchThemeColor';
import CreateSession from './components/createSession'
import EdtCoach from './components/edt_coach'
import { Coach } from "./classes";
import RessourcePanel from './components/ressourcePanel';
import TestAPI from './components/test_api';
// Test
const testCoach = new Coach();
testCoach.id = 1;
testCoach.nom = "Coach Test";
const keycloakInitOptions = {
onLoad: 'login-required',

View File

@@ -52,14 +52,17 @@ export function getUserTest():User{
s1.creneau = new Date();
s1.id = 1;
s1.name = "Entrainement Frisbee"
s1.isRecurrent = true;
var date2 = new Date();
date2.setDate(date2.getDate() + 2);
s2.creneau = date2;
s2.id = 2;
s2.name = "entraintement2"
s2.isRecurrent = false;
s2.name = "entraintement 2"
s3.creneau = date2;
s3.id = 3;
s3.name = "entraintement3"
s3.isRecurrent = false;
s3.name = "entraintement 3"
const athlete1 = new Athlete();
athlete1.id = 1;

View File

@@ -1,7 +1,7 @@
import { useState, useEffect } from "react";
import { Session, User, Coach, Activite, Groupe } from "../classes";
import { useLocalData } from "../context/useLocalData";
import { sessionService } from "../api";
export const CreateSession = () => {
const {user} = useLocalData()
@@ -22,7 +22,7 @@ export const CreateSession = () => {
newActivite.nom= activiteNom;
newActivite.theme=activiteTheme;
newActivite.duree= activiteDuree;
newActivite.data= new Map<String,String>();
newActivite.data= new Map<string,string>();
setActivities([...activities, newActivite]);
setActiviteNom("");
@@ -30,31 +30,41 @@ export const CreateSession = () => {
setActiviteDuree(0);
}
async function handleCreateSession(){
const newSession = new Session();
newSession.name = name;
newSession.activites= activities;
newSession.groupe = groupe;
newSession.creneau = new Date(creneau);
newSession.duree= duree;
newSession.isRecurrent= isRecurent;
newSession.coach= user as Coach;
newSession.athletes= [];
newSession.activites= activities;
async function handleCreateSession() {
const data = {
name: name,
creneau: creneau, // string ISO OK
duree: duree,
isRecurrent: isRecurent,
try{
//reset
coachId: user?.id,
groupe: groupe ? groupe : undefined,
activites: activities.map(a => ({
nom: a.nom,
theme: a.theme,
duree: a.duree
}))
};
try {
await sessionService.create(data);
console.log("Session créée");
// reset
setName("");
setGroupe("");
setCreneau("");
setDuree(0);
setIsRecurent(false);
setActivities([]);
}catch (err){
console.error(err)
} catch (err) {
console.error("Erreur lors de la création de la session", err);
}
}
return (
<div className="ent">
<h2>Activité</h2>

View File

@@ -42,7 +42,10 @@ export const EDT =() =>{
var newWeek: Session[] = []
user.sessions.forEach(session => {
if(session.creneau >= date && session.creneau <= maxDate){
if( session.isRecurrent ){
newWeek.push(session);
}
if(session.creneau >= date && session.creneau <= maxDate && !session.isRecurrent){
newWeek.push(session);
}
});

View File

@@ -0,0 +1,50 @@
import { useState } from "react";
import { coachService } from "../api";
export default function EdtCoach() {
const [name, setName] = useState("");
const [error, setError] = useState("");
const [statusCode, setStatusCode] = useState<number | null>(null);
const handleCreate = async () => {
try {
const response = await coachService.create({ name });
console.log("Success:", response.status, response.data);
alert(`Coach created! Status: ${response.status}`);
setError("");
setStatusCode(response.status);
} catch (err: any) {
if (err.response) {
// This is the HTTP response from the server
console.error("HTTP status:", err.response.status);
console.error("Response data:", err.response.data);
setError(`Failed to create coach: ${err.response.data}`);
setStatusCode(err.response.status);
} else if (err.request) {
console.error("No response received", err.request);
setError("No response from server!");
setStatusCode(null);
} else {
console.error("Error", err.message);
setError(err.message);
setStatusCode(null);
}
}
};
return (
<div>
<h2>Create Coach</h2>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
placeholder="Coach name"
/>
<button onClick={handleCreate}>Create</button>
{error && <p style={{ color: "red" }}>{error}</p>}
{statusCode && <p>HTTP Status: {statusCode}</p>}
</div>
);
}

View File

@@ -63,7 +63,7 @@ export async function subscribeSessionAPI(user:User, session:Session):Promise<bo
export async function unsubscribeSessionAPI(user:User, session:Session):Promise<boolean>{
try {
await api.post(`/sessions/${session.id}/unsubscribe`, { userId: user.id });
await api.post(`/session/${session.id}/unsubscribe`, { userId: user.id });
return true;
} catch (error) {
console.error("Error unsubscribing from session:", error);
@@ -84,9 +84,9 @@ export async function updateAllUserAPI(){
// POST /////////////////////////////////////////////////////////
// COACH ADMIN
export async function createSessionAPI(newSession: Session): Promise<Session> {
export async function createSessionAPI(sessionDTO: any): Promise<Session> {
try {
const response = await api.post<Session>("/sessions", newSession);
const response = await api.post<Session>("/session/create", sessionDTO);
return response.data;
} catch (error) {
console.error("Error creating session:", error);
@@ -96,7 +96,7 @@ export async function createSessionAPI(newSession: Session): Promise<Session> {
export async function postActivityAPI(session: Session, activity: Activite){
try {
const response = await api.post<Activite>(`/sessions/${session.id}/activities`, activity);
const response = await api.post<Activite>(`/session/${session.id}/activities`, activity);
return response.data;
} catch (error) {
console.error("Error creating activity:", error);
@@ -122,7 +122,7 @@ export async function setSessionCreneauAPI(session: Session, date:Date){
export async function getSessionsAPI(): Promise<Session[]> {
try {
const response = await api.get<Session[]>("/sessions");
const response = await api.get<Session[]>("/session");
return response.data;
} catch (error) {
console.error("Error fetching sessions:", error);