création de session fix en cours
This commit is contained in:
@@ -2,7 +2,7 @@ import axios from "axios";
|
|||||||
|
|
||||||
import keycloak from "./keycloak";
|
import keycloak from "./keycloak";
|
||||||
import { get } from "http";
|
import { get } from "http";
|
||||||
import { AdminDTO, AthleteDTO, CoachDTO } from "./classesDTO";
|
import { ActiviteDTO, AdminDTO, AthleteDTO, CoachDTO } from "./classesDTO";
|
||||||
|
|
||||||
|
|
||||||
const api = axios.create({
|
const api = axios.create({
|
||||||
@@ -55,7 +55,7 @@ export const athleteService = {
|
|||||||
export const activiteService = {
|
export const activiteService = {
|
||||||
create: (data: any) => api.post("/activite/create", data),
|
create: (data: any) => api.post("/activite/create", data),
|
||||||
delete: (id: number | string) => api.delete(`/activite/delete/${id}`),
|
delete: (id: number | string) => api.delete(`/activite/delete/${id}`),
|
||||||
update: (id: number | string, data: any) => api.post(`/activite/update/${id}`, data),
|
update: (id: number | string, data: ActiviteDTO) => api.post(`/activite/update/${id}`, data),
|
||||||
getById: (id: number | string) => api.get(`/activite/${id}`),
|
getById: (id: number | string) => api.get(`/activite/${id}`),
|
||||||
getAll: () => api.get(`/activite/all`),
|
getAll: () => api.get(`/activite/all`),
|
||||||
getByTheme: (theme: string) => api.get(`/activite/theme/${encodeURIComponent(theme)}`),
|
getByTheme: (theme: string) => api.get(`/activite/theme/${encodeURIComponent(theme)}`),
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ export class Session{
|
|||||||
name!: string;
|
name!: string;
|
||||||
activitesID: number[] = [];
|
activitesID: number[] = [];
|
||||||
activites: Activite[] = [];
|
activites: Activite[] = [];
|
||||||
isRecurrent! : Boolean;
|
isRecurrent! : boolean;
|
||||||
creneau!: Date;
|
creneau!: Date;
|
||||||
coach!: Coach;
|
coach!: Coach;
|
||||||
athletesID!: number[]
|
athletesID!: number[]
|
||||||
@@ -145,6 +145,21 @@ export class Session{
|
|||||||
this.ligne = []; //TODO
|
this.ligne = []; //TODO
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toDTO():SessionDTO{
|
||||||
|
const dto:SessionDTO = {
|
||||||
|
id: 0,
|
||||||
|
name: this.name,
|
||||||
|
isRecurrent: this.isRecurrent,
|
||||||
|
creneau: this.creneau.toISOString(),
|
||||||
|
duree: this.duree,
|
||||||
|
groupe: "", //TODO
|
||||||
|
coachId: this.coach?.id ?? null,
|
||||||
|
athleteIds: [],
|
||||||
|
activiteIds: []
|
||||||
|
};
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Activite{
|
export class Activite{
|
||||||
@@ -168,6 +183,18 @@ export class Activite{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toDTO():ActiviteDTO{
|
||||||
|
const dto:ActiviteDTO = {
|
||||||
|
id: 0,
|
||||||
|
name: this.nom,
|
||||||
|
duree: this.duree,
|
||||||
|
dataActivite: [],
|
||||||
|
sessionId: this.session.id,
|
||||||
|
theme: this.theme
|
||||||
|
};
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
export function getUserTest():User{
|
export function getUserTest():User{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useState, useEffect } from "react";
|
|||||||
import { Session, User, Coach, Activite, Groupe } from "../classes";
|
import { Session, User, Coach, Activite, Groupe } from "../classes";
|
||||||
import { useLocalData } from "../context/useLocalData";
|
import { useLocalData } from "../context/useLocalData";
|
||||||
import { activiteService, sessionService } from "../api";
|
import { activiteService, sessionService } from "../api";
|
||||||
import { postSession } from "../requetes";
|
import { createSessionAPI, postSession } from "../requetes";
|
||||||
|
|
||||||
export const CreateSession = () => {
|
export const CreateSession = () => {
|
||||||
const {user} = useLocalData();
|
const {user} = useLocalData();
|
||||||
@@ -10,7 +10,7 @@ export const CreateSession = () => {
|
|||||||
const [activities, setActivities] = useState<Activite[]>([]);
|
const [activities, setActivities] = useState<Activite[]>([]);
|
||||||
const [name,setName] = useState("");
|
const [name,setName] = useState("");
|
||||||
const [groupe, setGroupe] = useState<Groupe>("");
|
const [groupe, setGroupe] = useState<Groupe>("");
|
||||||
const [creneau, setCreneau] = useState("");
|
const [creneau, setCreneau] = useState<Date>(new Date());
|
||||||
const [duree, setDuree] = useState<number>(0);
|
const [duree, setDuree] = useState<number>(0);
|
||||||
const [activiteNom, setActiviteNom] = useState("");
|
const [activiteNom, setActiviteNom] = useState("");
|
||||||
const [activiteTheme, setActiviteTheme] = useState("");
|
const [activiteTheme, setActiviteTheme] = useState("");
|
||||||
@@ -34,19 +34,25 @@ export const CreateSession = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function handleCreateSession() {
|
async function handleCreateSession() {
|
||||||
|
session.groupe = groupe;
|
||||||
|
session.creneau = creneau;
|
||||||
|
session.duree = duree;
|
||||||
|
session.isRecurrent = isRecurent;
|
||||||
|
session.activites = activities;
|
||||||
|
|
||||||
postSession(session);
|
await createSessionAPI(session);
|
||||||
console.log("Session créée");
|
console.log("Session créée");
|
||||||
|
|
||||||
// reset
|
// reset
|
||||||
setName("");
|
setName("");
|
||||||
setGroupe("");
|
setGroupe("");
|
||||||
setCreneau("");
|
setCreneau(new Date());
|
||||||
setDuree(0);
|
setDuree(0);
|
||||||
setIsRecurent(false);
|
setIsRecurent(false);
|
||||||
setActivities([]);
|
setActivities([]);
|
||||||
|
|
||||||
}
|
setSession(new Session());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -62,7 +68,7 @@ export const CreateSession = () => {
|
|||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Creneau:
|
Creneau:
|
||||||
<input type="datetime-local" value={creneau} onChange={e => setCreneau(e.target.value)} />
|
<input type="datetime-local" value={creneau.toISOString().slice(0, 16)} onChange={e => setCreneau(new Date(e.target.value))} />
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Duree (minutes):
|
Duree (minutes):
|
||||||
|
|||||||
@@ -1,52 +1,79 @@
|
|||||||
import { useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useLocalData } from "../context/useLocalData";
|
import { useLocalData } from "../context/useLocalData";
|
||||||
import { Activite, Athlete, Coach , Session, Ligne, Admin } from "../classes";
|
import { Activite, Athlete, Coach , Session, Ligne, Admin } from "../classes";
|
||||||
import {calculTempsDeJeuParLigne} from "../utils/ligneUtils";
|
import {calculTempsDeJeuParLigne} from "../utils/ligneUtils";
|
||||||
import { keyboard } from "@testing-library/user-event/dist/keyboard";
|
import { keyboard } from "@testing-library/user-event/dist/keyboard";
|
||||||
import ObjectSession from "./object/session";
|
import ObjectSession from "./object/session";
|
||||||
import ObjectUser from "./object/user";
|
import ObjectUser from "./object/user";
|
||||||
|
import { getAllSessionsAPI } from "../requetes";
|
||||||
|
import { useKeycloak } from "@react-keycloak/web";
|
||||||
|
|
||||||
|
|
||||||
export type keyWord = "athletes" | "activites" | "coachs" | "sessions"| "lignes";
|
export type keyWord = "athletes" | "activites" | "coachs" | "sessions"| "lignes";
|
||||||
|
|
||||||
export default function RessourcePanel() {
|
export default function RessourcePanel() {
|
||||||
|
const { keycloak } = useKeycloak();
|
||||||
const { user } = useLocalData();
|
const { user } = useLocalData();
|
||||||
//const user = getUserTest(); //TODO
|
//const user = getUserTest(); //TODO
|
||||||
const [value,setValue] = useState<keyWord>("athletes");
|
const [value,setValue] = useState<keyWord>("sessions");
|
||||||
|
|
||||||
if (user instanceof Athlete) return null;
|
const[allAthletes,setAllAthletes] = useState<Athlete[]>([]);
|
||||||
|
const[allCoachs,setAllCoachs] = useState<Coach[]>([]);
|
||||||
|
const[allSessions,setAllSessions] = useState<Session[]>([]);
|
||||||
|
const[allLignes,setAllLignes] = useState<Ligne[]>([]);
|
||||||
|
|
||||||
|
|
||||||
const allAthletes: Athlete[] = [];
|
async function updateAthletes() {
|
||||||
|
}
|
||||||
const allActivites: Activite[] = [];
|
|
||||||
|
|
||||||
const allCoachs: Coach[] = [];
|
|
||||||
|
|
||||||
const allSessions: Session[] = [];
|
|
||||||
|
|
||||||
const allLignes: Ligne[] = [];
|
|
||||||
|
|
||||||
|
|
||||||
|
async function updateCoachs() {
|
||||||
|
}
|
||||||
|
|
||||||
|
async function updateSessions() {
|
||||||
|
const sessions:Session[] = await getAllSessionsAPI();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function updateLignes() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(keycloak.authenticated){
|
||||||
|
updateSessions();
|
||||||
|
{(user instanceof Admin || user instanceof Coach) &&
|
||||||
|
updateAthletes();
|
||||||
|
updateCoachs();
|
||||||
|
updateLignes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},[user])
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ressource_panel">
|
<div className="ressource_panel">
|
||||||
<div>
|
|
||||||
Sélectionner une ressource:
|
|
||||||
</div>
|
|
||||||
<select
|
|
||||||
onChange={(e) => {
|
|
||||||
const v = (e.target as HTMLSelectElement).value;
|
|
||||||
setValue(v as keyWord)
|
|
||||||
}}>
|
|
||||||
<option value="athletes">Athlètes</option>
|
|
||||||
<option value="activites">Activités</option>
|
|
||||||
{user instanceof Admin && <option value="coachs"> Coachs</option>}
|
|
||||||
<option value="sessions"> Sessions</option>
|
|
||||||
<option value="lignes"> Lignes</option>
|
|
||||||
|
|
||||||
</select>
|
{(user instanceof Admin || user instanceof Coach) &&
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Sélectionner une ressource:
|
||||||
|
</div>
|
||||||
|
<select
|
||||||
|
onChange={(e) => {
|
||||||
|
const v = (e.target as HTMLSelectElement).value;
|
||||||
|
setValue(v as keyWord)
|
||||||
|
}}>
|
||||||
|
<option value="sessions"> Sessions</option>
|
||||||
|
{(user instanceof Admin || user instanceof Coach) &&<option value="athletes">Athlètes</option>}
|
||||||
|
{(user instanceof Admin || user instanceof Coach) &&<option value="activites">Activités</option>}
|
||||||
|
{(user instanceof Admin || user instanceof Coach) && <option value="coachs"> Coachs</option>}
|
||||||
|
{(user instanceof Admin || user instanceof Coach) &&<option value="lignes"> Lignes</option>}
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
<div className="edt_sessions_panel">
|
<div className="edt_sessions_panel">
|
||||||
<h3>Liste des {value}</h3>
|
<h3>Liste des {value}</h3>
|
||||||
@@ -81,3 +108,4 @@ import ObjectUser from "./object/user";
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,14 +68,7 @@ export async function updateActivitiesOfSessionAPI(session:Session,activities:Ac
|
|||||||
try {
|
try {
|
||||||
const session_id = session.id
|
const session_id = session.id
|
||||||
for (const activity of activities) {
|
for (const activity of activities) {
|
||||||
const response = await activiteService.update(activity.id!, {
|
const response = await activiteService.update(activity.id!, activity.toDTO());
|
||||||
name: activity.nom,
|
|
||||||
duree: activity.duree,
|
|
||||||
date: activity.data,
|
|
||||||
theme: activity.theme,
|
|
||||||
sessionId: session_id,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
// To refresh the activities in the session object
|
// To refresh the activities in the session object
|
||||||
const response = await sessionService.getActivities(session_id!);
|
const response = await sessionService.getActivities(session_id!);
|
||||||
@@ -119,9 +112,10 @@ export async function updateAllUserAPI(){
|
|||||||
// POST /////////////////////////////////////////////////////////
|
// POST /////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// COACH ADMIN
|
// COACH ADMIN
|
||||||
export async function createSessionAPI(sessionDTO: any): Promise<Session> {
|
export async function createSessionAPI(session: Session): Promise<Session> {
|
||||||
try {
|
try {
|
||||||
const response = await api.post<Session>("/session/create", sessionDTO);
|
const response = await api.post<Session>("/session/create", session.toDTO());
|
||||||
|
//TODO Activites
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error creating session:", error);
|
console.error("Error creating session:", error);
|
||||||
|
|||||||
Reference in New Issue
Block a user