Compare commits

...

89 Commits

Author SHA1 Message Date
Antoine PEREDERII e72636c4d7 Update 'Sources/config/config.php'
continuous-integration/drone/push Build is passing Details
1 year ago
Antoine PEREDERII 97623ba062 Merge branch 'master' of codefirst.iut.uca.fr:HeartDev/Web
continuous-integration/drone/push Build is passing Details
1 year ago
Antoine PEREDERII 32afdd093c 📝 Add MCD on the readme file
1 year ago
David D'ALMEIDA 81b7a60267 Mise à jour de 'Sources/public/index.php'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 134f3ae997 Mise à jour de 'Sources/config/config.php'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA f80492db66 Mise à jour de 'Sources/config/config.php'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 3bc50ae677 Mise à jour de 'Sources/config/config.php'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 9c03d12906 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA bfd039d9bb Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 701563d0ee Mise à jour de 'Sources/config/httpd.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA b4fe541a4f Ajouter 'Sources/config/httpd.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 505d4cd71d Mise à jour de 'Sources/src/app/controller/Controller.php'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 8d000f997b Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 88d778f245 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 32b05eeb11 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 8d5f1ddefe Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA ac7b90f0fb Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 7cdd12df73 Ajouter 'Sources/config/virtual-host.conf'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA bcd043ceb1 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 1b66f277b5 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 1fb406c58a Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA f78276dbec Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA b52ba793d3 Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA bb6e76f54f Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 4ce92111d1 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA c7f0ab60d6 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA ddc7d843ed Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA b20436b938 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 3fb3822ac7 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 23e04e3d71 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA cb04fc199b Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 0d090a7183 Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA e4a74cb353 Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 8b14c2c95b Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 0653af150b Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA c334f89aba Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 2acea545ae Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA f1b97a1c0d Mise à jour de 'Sources/config/nginx.conf'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 884307f6b0 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA b0b34843b3 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build encountered an error Details
1 year ago
David D'ALMEIDA f750992a07 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build encountered an error Details
1 year ago
David D'ALMEIDA 99405eb8b7 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 4f314cf7e3 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 93f68abf43 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA f6212b6d5e Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA f0bb8fed65 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 8b1ca8d371 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 837941721d Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 664f270062 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is running Details
1 year ago
David D'ALMEIDA 9d53db8000 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA b6fdae005b Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 39cc037569 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA c5632a47fb Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 373cc847ab Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 99f9e2ec22 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 43bd7295f9 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 2d5bc5303f Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 255a81c29c Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 92e196c7e3 Mise à jour de 'Sources/config/.htaccess'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA d0db1ad041 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 176e70d020 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 64a5a2c7c6 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA 65b63b0f2f Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA eeb2b8e3ab Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA b5c62a9791 Mise à jour de 'Sources/config/Dockerfile'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA e827554413 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA e4688dbe28 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA d241bd15a1 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 7042c6a2b6 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 71d1f58cc4 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA db8ed755db Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA b58ebcf3e8 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is passing Details
1 year ago
David D'ALMEIDA e2ed1aa3e6 Mise à jour de '.drone.yml'
1 year ago
David D'ALMEIDA f7016ba5b5 Mise à jour de '.drone.yml'
1 year ago
David D'ALMEIDA b1a486622e Mise à jour de '.drone.yml'
1 year ago
David D'ALMEIDA 5caaf280b6 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 397cc32336 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 4b8e69eec6 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 06a5b72d1a Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA 3a579bb606 Mise à jour de '.drone.yml'
continuous-integration/drone/push Build is failing Details
1 year ago
David D'ALMEIDA d2296ff7d0 Mise à jour de 'README.md'
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII 8cf1786672 update some diagrams for futur evaluation
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII 705edbf4e5 Merge branch 'master' of codefirst.iut.uca.fr:HeartDev/Web
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII af00c88542 add MLD and update somes diagrams
1 year ago
Antoine PEREDERII d6484b9f16 Update 'README.md'
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII c4adf90c8d Update 'Documents/Diagramme/DiagrammeDeClasses/README_accesDonnees.md'
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII 4609a3e3d1 Merge remote-tracking branch 'origin/merged'
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII d57f95ca62 Merge remote-tracking branch 'origin/merged'
continuous-integration/drone/push Build is failing Details
1 year ago
Antoine PEREDERII 52ac902d0f problemes de git
continuous-integration/drone/push Build is failing Details
1 year ago

@ -2,19 +2,20 @@ kind: pipeline
type: docker type: docker
name: HeartWave name: HeartWave
trigger: trigger:
event: event:
- push - push
steps: steps:
# Test ✔️ # Test ✔️
- name: test - name: test
image: composer:2.6 image: composer:2.6
commands: commands:
- cd Sources - cd Sources
- rm -r vendor
- rm composer.lock
# Installe les dépendances PHP si nécessaire # Installe les dépendances PHP si nécessaire
- composer install --no-interaction - php composer.phar install --no-interaction
- ./vendor/bin/phpunit tests - ./vendor/bin/phpunit tests
# Sonar static code analisis deployment # Sonar static code analisis deployment
@ -35,19 +36,45 @@ steps:
- cd Sources - cd Sources
- sonar-scanner -D sonar.projectKey=HeartTrack -D sonar.host.url=https://codefirst.iut.uca.fr/sonar - sonar-scanner -D sonar.projectKey=HeartTrack -D sonar.host.url=https://codefirst.iut.uca.fr/sonar
depends_on: [ test ] depends_on: [ test ]
# build image and push on the registry ✔️
- name: rewrite-urls
image: 'busybox:latest'
commands:
- cd Sources
- ls
- >-
find . -type f -exec sed -i -r
"s@(href|src)=\"/@\1=\"$${PLUGIN_CONTAINER_PATH}@g" {} +
settings:
container_path: https://codefirst.iut.uca.fr/containers/HeartDev-web/
# build image and push on the registry ✔️
- name: docker-build-and-push - name: docker-build-and-push
image: plugins/docker image: plugins/docker
settings: settings:
commands: ls
dockerfile: Sources/config/Dockerfile dockerfile: Sources/config/Dockerfile
context: Sources context: Sources
registry: hub.codefirst.iut.uca.fr registry: hub.codefirst.iut.uca.fr
repo: hub.codefirst.iut.uca.fr/david.d_almeida/web repo: hub.codefirst.iut.uca.fr/david.d_almeida/web
mirror: https://proxy.iut.uca.fr:8443
username: username:
from_secret: SECRET_REGISTRY_USERNAME from_secret: SECRET_REGISTRY_USERNAME
password: password:
from_secret: SECRET_REGISTRY_PASSWORD from_secret: SECRET_REGISTRY_PASSWORD
depends_on:
- rewrite-urls
- name: deploy-container
image: >-
hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest
environment:
IMAGENAME: 'hub.codefirst.iut.uca.fr/david.d_almeida/web:latest'
CONTAINERNAME: web
COMMAND: create
OVERWRITE: true
ADMINS: david.d_almeida
depends_on:
- docker-build-and-push
- name: notify - name: notify
image: ruby:2.1 image: ruby:2.1
@ -59,3 +86,5 @@ steps:
commands: commands:
- sh ./notifymail.sh - sh ./notifymail.sh
depends_on: [ docker-build-and-push ] depends_on: [ docker-build-and-push ]

3
.gitignore vendored

@ -6,6 +6,7 @@ dist
*.swo *.swo
.env .env
loginDatabase.php
# Cache file on macOS # Cache file on macOS
.DS_Store .DS_Store
@ -28,4 +29,4 @@ sftp-config.json
sftp-config-alt*.json sftp-config-alt*.json
*.log* *.log*
coverage/ coverage/

@ -0,0 +1,276 @@
[retour au README.md](../../../README.md)
[Retour aux Documents](../../README_DOCUMENTS.md)
[Retour au diagramme de classes](../README_DIAGRAMMES.md)
# BDD
## Modèle Logique de Données (MLD)
Le MLD représente la structure de données de l'application, décrivant les entités et les relations entre elles. Voici un aperçu des principales entités du MLD :
### Athlète (Athlete)
L'entité principale représentant un athlète avec ces informations propre à lui telles que l'identifiant, le nom, le prénom, l'email, etc. Les athlètes peuvent être coach avec le boolean idCoach et être liés par des amitiés, ou par un coaching via la table `Amitie`.
### Amitié (Friendship)
Une entité qui modélise les relations d'amitié entre les athlètes et de coaching entre les athlètes et les coachs. Elle stocke les identifiants des deux utilisateurs impliqués.
### Notification (Notification)
L'entité qui stocke les notifications destinées aux athlètes, avec des détails tels que le message, la date, le statut, et le degré d'urgence.
### Envoi de Notification (SendNotification)
Une entité de liaison entre les athlètes et les notifications, indiquant quel athlète ou coach a envoyé quelle notification. Cela peut-être utile lors d'une notification d'ajout d'amie par exemple.
### Statistique (Statistic)
Les statistiques relatives à un athlètes, y compris le poids, la fréquence cardiaque moyenne, la fréquence cardiaque maximale, etc.
### Entraînement (Training)
Détails sur les sessions d'entraînement planifiés par un coach pour ses athlètes, comprenant la date, la description, la localisation, etc. Les athlètes peuvent participer à des entraînements et donner leur feedback sur l'entrainement donné.
### Participation (Participate)
Une entité de liaison entre les athlètes et les entraînements, indiquant quels athlètes participent à quels entraînements.
### Don (GiveParticipation)
Une entité de liaison entre les coachs et les entraînements, indiquant quels coachs ont attribué quels entraînements.
### Source de Données (DataSource)
L'entité représentant la source des données des enregistrements sportif, telle que le type, le modèle, la précision, etc., utilisée par les athlètes pour enregistrer une ou des activités.
### Activité (Activity)
Les détails des activités des athlètes, y compris le type, la date, les heures de début et de fin, l'effort ressenti, etc.
### Fréquence Cardiaque (HeartRate)
Les données de fréquence cardiaque enregistrées pendant les activités, avec des informations telles que l'altitude, la température, etc.
Ce MLD forme la base de données sous-jacente pour l'application, offrant une structure organisée pour stocker et récupérer les informations relatives aux athlètes et à leurs activités.
```plantuml
@startuml
skinparam classAttributeIconSize 0
package MLD{
entity "Athlete" as athlete {
{static} idAthlete
username
nom
prenom
email
sexe
taille
poids
motDePasse
dateNaissance
isCoach
}
entity "Amitie" as friendship{
{static}# idAthlete1
{static}# idAthlete2
début
}
entity "Notification" as notif {
{static} idNotif
message
date
statut
urgence
#athleteId
}
entity "Envoi" as sendNotif{
{static}# idAthlete
{static}# idNotif
}
entity "Statistique" as stats {
{static} idStatistique
poids
fcMoyenne
fcMax
caloriesBruleesMoy
date
#athleteId
}
entity "Entrainement" as training {
{static} idEntrainement
date
description
latitude
longitude
feedback
#athleteId
}
entity "Participe" as takepart {
{static} #athleteId
{static} #entrainementId
}
entity "Donne" as givepart {
{static} #coachId
{static} #entrainementId
}
entity "SourceDonnee" as source {
{static} idSource
type
modele
precision
#athleteId
}
entity "Activite" as activity {
{static} idActivité
type
date
heureDeDebut
heureDeFin
effortRessent
variabilite
variance
ecartType
moyenne
maximum
minimum
temperatureMoyenne
#athleteId
#sourceId
}
entity "FréquenceCardiaque" as fc {
{static} idFc
altitude
temps : time
température
bpm
longitude
latitude
#activitéId
}
}
activity --> athlete
activity --> source
activity <-- fc
athlete <-- source
stats --> athlete
takepart --> athlete
takepart --> training
givepart --> athlete
givepart --> training
sendNotif --> athlete
sendNotif --> notif
friendship --> athlete
notif --> athlete
athlete <-- friendship
@enduml
```
```plantuml
@startuml
skinparam classAttributeIconSize 0
package MCD{
entity "Athlete" as athlete {
{static} idAthlete
username
nom
prenom
email
sexe
taille
poids
motDePasse
dateNaissance
isCoach
}
entity "Notification" as notif {
{static} idNotif
message
date
statut
urgence
#athleteId
}
entity "Statistique" as stats {
{static} idStatistique
poids
fcMoyenne
fcMax
caloriesBruleesMoy
date
#athleteId
}
entity "Entrainement" as training {
{static} idEntrainement
date
description
latitude
longitude
feedback
#athleteId
}
entity "SourceDonnee" as source {
{static} idSource
type
modele
precision
#athleteId
}
entity "Activite" as activity {
{static} idActivité
type
date
heureDeDebut
heureDeFin
effortRessent
variabilite
variance
ecartType
moyenne
maximum
minimum
temperatureMoyenne
#athleteId
#sourceId
}
entity "FréquenceCardiaque" as fc {
{static} idFc
altitude
temps : time
température
bpm
longitude
latitude
#activitéId
}
}
activity "0..n" --- "1..1" athlete : réalise
activity "1..n" --- "1..1" source : possede
activity "1..1" --- "1..n" fc : enregistre
athlete "1..n" --- "0..1" source : possede
stats "0..n" --- "1..1" athlete : possede
training "0..n" --- "1..n" athlete : participe
training "0..n" --- "1..1" athlete : donne
athlete "0..n" --- "1..n" athlete : est ami
notif "0..n" --- "1..n" athlete : recoit
notif "0..n" --- "1..1" athlete : envoie
@enduml
```

@ -28,11 +28,11 @@ Bienvenue dans l'écosystème dynamique de notre plateforme de gestion d'activit
- Les Utilisateurs ont un rôle spécifique (Athlete, Coach) qui détermine leurs fonctionnalités. - Les Utilisateurs ont un rôle spécifique (Athlete, Coach) qui détermine leurs fonctionnalités.
- Un Athlète peut enregistrer plusieurs Activités, Statistiques, et interagir avec différentes Sources de Données. - Un Athlète peut enregistrer plusieurs Activités, possède des Statistiques, et une Sources de Données qui est la plus utilisé.
- Les Entraînements sont liés aux Utilisateurs, permettant une planification efficace. - Les Entraînements sont liés aux Utilisateurs, permettant une planification efficace.
- Les Notifications informent les Utilisateurs des événements importants. - Les Notifications informent les Utilisateurs des événements importants tels qu'une demande d'amis ou une notification d'avertissement de ban.
Explorez ce diagramme pour comprendre comment notre plateforme offre une expérience complète, de la gestion des utilisateurs à l'enregistrement des activités sportives et au suivi des performances. Explorez ce diagramme pour comprendre comment notre plateforme offre une expérience complète, de la gestion des utilisateurs à l'enregistrement des activités sportives et au suivi des performances.

@ -18,7 +18,7 @@ Bienvenue dans le cœur de notre système, où les données prennent vie à trav
- **NotificationRepository :** Responsable de la gestion des notifications, assurant un accès structuré et une manipulation sécurisée de ces informations cruciales. - **NotificationRepository :** Responsable de la gestion des notifications, assurant un accès structuré et une manipulation sécurisée de ces informations cruciales.
- **RelationshipRequestRepository :** Facilite la gestion des demandes de relations entre utilisateurs, garantissant une interaction claire et ordonnée. - **RelationshipRequestRepository :** Facilite la gestion des demandes de relations entre utilisateurs (amitiés), garantissant une interaction claire et ordonnée au sein de l'application.
- **TrainingRepository :** Permet l'accès et la manipulation des données liées aux entraînements, facilitant le suivi des performances athlétiques. - **TrainingRepository :** Permet l'accès et la manipulation des données liées aux entraînements, facilitant le suivi des performances athlétiques.
@ -26,7 +26,7 @@ Explorez ce diagramme pour découvrir la robustesse de notre architecture de ges
```plantuml ```plantuml
@startuml couche_acces_aux_donnees @startuml couche_acces_aux_donnees
abstract class IGenericRepository { interface IGenericRepository {
+ getItemById(int id) : object + getItemById(int id) : object
+ getNbItems() : int + getNbItems() : int
+ getItems(int index, int count, string orderingPropertyName, bool descending) : array + getItems(int index, int count, string orderingPropertyName, bool descending) : array
@ -36,7 +36,7 @@ abstract class IGenericRepository {
+ addItem(item) : void + addItem(item) : void
+ deleteItem(item) : bool + deleteItem(item) : bool
} }
abstract class IUserRepository extends IGenericRepository { interface IUserRepository extends IGenericRepository {
} }
interface INotificationRepository extends IGenericRepository { interface INotificationRepository extends IGenericRepository {
} }

@ -4,15 +4,15 @@
# Introduction au Diagramme de Classes : Statistiques pour Coach # Introduction au Diagramme de Classes : Statistiques pour Coach
Bienvenue dans l'univers captivant de notre système de gestion d'activités sportives avec une mise au point spéciale sur les statistiques destinées aux coaches. Ce diagramme de classes offre une vue approfondie de la manière dont les utilisateurs, en particulier les athlètes et les coaches, interagissent avec les données de performance. Bienvenue dans l'univers captivant de notre système de gestion d'activités sportives avec une mise au point spéciale sur les statistiques destinées aux athlètes. Ce diagramme de classes offre une vue approfondie de la manière dont les utilisateurs, en particulier les athlètes, interagissent avec leurs statistiques.
**Entités Principales :** **Entités Principales :**
- **Utilisateur (User) :** Représente les individus inscrits sur notre plateforme, avec des détails personnels et un rôle spécifique dans l'écosystème sportif. - **Utilisateur (User) :** Représente les individus inscrits sur notre plateforme, avec des détails personnels et un rôle spécifique dans l'écosystème sportif.
- **Athlète (Athlete) :** Un type spécialisé d'utilisateur qui peut enregistrer des statistiques liées à ses activités sportives. - **Athlète (Athlete) :** Un type spécialisé d'utilisateur qui possède des statistiques liées à ses activités sportives.
- **Coach (Coach) :** Un rôle qui s'étend à partir de la classe abstraite Role, dédié à la gestion des athlètes et de leurs statistiques. - **Coach (Coach) :** Un rôle qui s'étend à partir de la classe abstraite Role, dédié à la gestion des athlètes et de la vision de leurs statistiques.
- **Statistique (Statistique) :** Contient des informations détaillées sur les performances sportives d'un athlète, telles que la distance totale, le poids, le temps total, la fréquence cardiaque moyenne, minimale et maximale, ainsi que les calories brûlées. - **Statistique (Statistique) :** Contient des informations détaillées sur les performances sportives d'un athlète, telles que la distance totale, le poids, le temps total, la fréquence cardiaque moyenne, minimale et maximale, ainsi que les calories brûlées.
@ -22,11 +22,11 @@ Bienvenue dans l'univers captivant de notre système de gestion d'activités spo
- Un Coach peut gérer une liste d'athlètes et avoir accès à leurs statistiques. - Un Coach peut gérer une liste d'athlètes et avoir accès à leurs statistiques.
- Un Athlète peut enregistrer plusieurs statistiques liées à ses activités. - Un Athlète peut enregistrer plusieurs activités afin d'avoir des statistiques liées à celle-ci.
**Objectif Principal :** **Objectif Principal :**
- Permettre aux coaches d'accéder et de surveiller les statistiques détaillées de leurs athlètes, offrant ainsi un aperçu complet de leurs performances sportives. - Permettre aux coachs d'accéder et de surveiller les statistiques détaillées de leurs athlètes, offrant ainsi un aperçu complet de leurs performances sportives.
Explorez ce diagramme pour découvrir comment notre application crée une synergie entre les utilisateurs, les rôles, et les statistiques, contribuant ainsi à une expérience enrichissante dans le suivi des activités sportives. Explorez ce diagramme pour découvrir comment notre application crée une synergie entre les utilisateurs, les rôles, et les statistiques, contribuant ainsi à une expérience enrichissante dans le suivi des activités sportives.

@ -4,7 +4,7 @@
# Introduction au Modèle de Données de l'Application # Introduction au Modèle de Données de l'Application
L'architecture de données de notre application de suivi d'activités sportives repose sur un modèle robuste, avec des entités clés pour représenter les activités, les athlètes et les coachs. Découvrez les composants principaux de notre modèle de données : L'architecture de données de notre application de suivi d'activités sportives repose sur un modèle robuste, avec des entités clés pour représenter les activités, les athlètes et les coachs et la récupération de ces données au sein de notre application. Découvrez les composants principaux de notre modèle de données :
## Activité ## Activité
L'entité Activité représente une session d'activité sportive avec des détails variés tels que le type d'activité, la date, la durée, l'effort ressenti, etc. Le `ActiviteEntity` encapsule ces données, tandis que le `ActiviteGateway` gère la communication avec la base de données pour les activités. L'entité Activité représente une session d'activité sportive avec des détails variés tels que le type d'activité, la date, la durée, l'effort ressenti, etc. Le `ActiviteEntity` encapsule ces données, tandis que le `ActiviteGateway` gère la communication avec la base de données pour les activités.

@ -4,12 +4,12 @@
# Diagramme de classes pour l'importation de fichiers .fit # Diagramme de classes pour l'importation de fichiers .fit
Bienvenue dans le monde de la gestion d'activités sportives avec notre application innovante ! Cette user story se concentre sur une fonctionnalité essentielle qui améliorera l'expérience des utilisateurs : l'importation de fichiers .fit. Nous avons conçu un diagramme de classes pour vous offrir une vision claire et structurée de la manière dont cette fonctionnalité est implémentée au sein de notre application. Bienvenue dans le monde de la gestion d'activités sportives avec notre application innovante ! Ce diagramme de classe se concentre sur une fonctionnalité essentielle qui améliorera l'expérience des utilisateurs : l'importation de fichiers .fit. Nous avons conçu un diagramme de classes pour vous offrir une vision claire et structurée de la manière dont cette fonctionnalité est implémentée au sein de notre application.
**Acteurs Principaux :** **Acteurs Principaux :**
- Utilisateur (User) : Représente un individu inscrit sur notre plateforme, avec la capacité d'importer des fichiers .fit. - Utilisateur (User) : Représente un individu inscrit sur notre plateforme.
- Athlète (Athlete) : Un type spécialisé d'utilisateur, bénéficiant de fonctionnalités supplémentaires liées à la gestion d'activités sportives. - Athlète (Athlete) : Un type spécialisé d'utilisateur, bénéficiant de fonctionnalités supplémentaires liées à la gestion d'activités sportives et avec la capacité d'importer des fichiers .fit.
**Entités Clés :** **Entités Clés :**
@ -18,13 +18,13 @@ Bienvenue dans le monde de la gestion d'activités sportives avec notre applicat
**Fonctionnalité Clé :** **Fonctionnalité Clé :**
- Importation de fichiers .fit : Permet aux utilisateurs de charger des données provenant de fichiers .fit, générés par des dispositifs de suivi d'activité. Ces fichiers contiennent des informations précieuses telles que la fréquence cardiaque, la distance parcourue et d'autres métriques essentielles. - Importation de fichiers .fit : Permet aux utilisateurs de charger des données provenant de fichiers .fit via la bibliothèque `php-fit-file-analysis`, générés par des dispositifs de suivi d'activité. Ces fichiers contiennent des informations précieuses telles que la fréquence cardiaque, la distance parcourue et d'autres données de santé importante pour nos analyses.
**Architecture :** **Architecture :**
- AuthService (Service d'Authentification) : Gère l'authentification des utilisateurs, garantissant un accès sécurisé à la fonction d'importation. - AuthService (Service d'Authentification) : Gère l'authentification des utilisateurs, garantissant un accès sécurisé à la fonction d'importation.
- UserManager (Gestionnaire d'Utilisateurs) : Gère les opérations liées aux utilisateurs, y compris l'importation de fichiers .fit. - UserManager (Gestionnaire d'Utilisateurs) : Gère les opérations liées aux utilisateurs, y compris l'importation de fichiers .fit.
ActivityManager (Gestionnaire d'Activités) : Responsable du stockage et de la gestion des activités importées. - ActivityManager (Gestionnaire d'Activités) : Responsable du stockage et de la gestion des activités importées.
**Objectif :** **Objectif :**

@ -20,4 +20,7 @@
## Diagrammes de cas d'utilisation ## Diagrammes de cas d'utilisation
- [Cas d'utilisation pour la gestion du compte et des amitiés](CasUtilisations/README_gestionCompteAmitie.md) - [Cas d'utilisation pour la gestion du compte et des amitiés](CasUtilisations/README_gestionCompteAmitie.md)
- [Cas d'utilisation pour la gestion des activités et données](CasUtilisations/README_gestionActivites.md) - [Cas d'utilisation pour la gestion des activités et données](CasUtilisations/README_gestionActivites.md)
- [Cas d'utilisation pour la suivi d'une équipe sportive](CasUtilisations/README_coachSuiviSportif.md) - [Cas d'utilisation pour la suivi d'une équipe sportive](CasUtilisations/README_coachSuiviSportif.md)
## Base de Données
- [MLD](BDD/README_BDD.md)

@ -71,7 +71,8 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
### Prerequisites ### Prerequisites
* [Visual Studio code](https://code.visualstudio.com/) - exemple d'IDE gratuit * [Visual Studio code](https://code.visualstudio.com/) - exemple d'IDE gratuit
* [Git](https://git-scm.com/) - Versioning * [Git](https://git-scm.com/) - Versioning
* [XAMPP : X, Apache, MySQL, Perl, PHP](https://www.apachefriends.org/fr/index.html) - Langages * [XAMPP : X, Apache, MySQL, Perl, PHP](https://www.apachefriends.org/fr/index.html) - Languages
* [PostgreSQL](https://www.postgresql.org/) - Base de Donnée
## Getting Started ## Getting Started
1. Cloner le répos 1. Cloner le répos
@ -80,7 +81,7 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
4. Lancer le serveur Apache et MySQL 4. Lancer le serveur Apache et MySQL
5. Lancer le projet avec `php -S localhost:8000 -t Sources/` 5. Lancer le projet avec `php -S localhost:8000 -t Sources/`
6. Ouvrir le navigateur et aller sur `localhost:8000/index.php` 6. Ouvrir le navigateur et aller sur `localhost:8000/index.php`
## Features ## Features
* [x] Import de fichier .fit * [x] Import de fichier .fit
* [x] Ajout d'amis * [x] Ajout d'amis

@ -0,0 +1,2 @@
AddType text/css .css
AddType application/javascript .js

@ -1,17 +1,31 @@
FROM php:8.2-fpm FROM php:8.2-apache as base
# Installation de dépendances nécessaires pour Composer # Installation de dépendances nécessaires pour Composer
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
unzip unzip
# Installation de Composer # Installation de Composer
# TODO : should use a image with composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo pdo_mysql RUN docker-php-ext-install pdo pdo_mysql
COPY . /var/www/ # Copy configs
COPY ./config/virtual-host.conf /etc/apache2/sites-available/000-default.conf
COPY ./config/httpd.conf /etc/apache2/httpd.conf
# Setup App
RUN mkdir -p /app/public && chown -R www-data:www-data /app
WORKDIR /app
# add sources code
COPY . /app
ENV VOLUME_PATH /app/public
RUN composer install
WORKDIR /var/www/ EXPOSE 80
RUN composer install CMD ["apache2-foreground"]

@ -5,6 +5,7 @@ use Shared\Log;
$dotenv = Dotenv::createUnsafeImmutable(__DIR__,'.env'); $dotenv = Dotenv::createUnsafeImmutable(__DIR__,'.env');
$dotenv->safeLoad(); $dotenv->safeLoad();
// echo($_ENV);
// apenrently getEnv is not a good thing cause // apenrently getEnv is not a good thing cause
// const DB_HOST = $_ENV['DB_HOST'] ?? 'localhost'; // const DB_HOST = $_ENV['DB_HOST'] ?? 'localhost';
// const DB_DATABASE = $_ENV['DB_DATABASE'] ?? 'heartTrack'; // const DB_DATABASE = $_ENV['DB_DATABASE'] ?? 'heartTrack';

@ -0,0 +1 @@
SetEnv ASSET_PREFIX containers/HeartDev-web/

@ -1,28 +1,19 @@
server { server {
listen 80; listen 80;
index index.php; index index.php index.html index.htm;
root /var/www/public; root /usr/share/nginx/html;
error_page 404 /index.php; error_page 404 /index.php;
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/public;
}
location ~ \.php$ { location ~ \.php$ {
fastcgi_pass web:9000; # service name defined in docker-compose.yml file like web
fastcgi_param REQUEST_METHOD $request_method; fastcgi_param REQUEST_METHOD $request_method;
fastcgi_index index.php; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; include fastcgi_params;
} }
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location / { location / {
try_files $uri $uri/ /index.php?$query_string; root /usr/share/nginx/html;
try_files $uri /index.php;
} }
} }

@ -0,0 +1,39 @@
<VirtualHost *:80>
ServerName default
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory ${VOLUME_PATH}>
AllowOverride All
Require all granted
</Directory>
DocumentRoot ${VOLUME_PATH}
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /proc/self/fd/1 combined
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Multiple DirectoryIndex directives within the same context will add
# to the list of resources to look for rather than replace
# https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex
DirectoryIndex disabled
DirectoryIndex index.php index.html
</VirtualHost>

@ -65,12 +65,4 @@ $appFactory->registerService(\Twig\Environment::class,\Twig\Environment::class);
// $databaseContext = DatabaseContext::getInstance(); // $databaseContext = DatabaseContext::getInstance();
$appFactory->AddControllers(); $appFactory->AddControllers();
$app = $appFactory->create();
if (!is_null($app)){
// Ajout des Middleware
/*$app->use(new LoggingMiddleware());*/
$app->use(new AuthMiddleware());
$app->mapControllers();
$app->run(RequestFactory::createFromGlobals());
}

@ -1,563 +0,0 @@
<?php
namespace App\Controller;
use App\Container;
use App\Router\Request\IRequest;
use App\Router\Response\Response;
use Shared\Attributes\Route;
use Twig\Environment;
use Data\Core\Preferences;
use Shared\Log;
// TODO : Remove this BaseClass
class Controller extends BaseController
{
private Environment $twig;
protected Preferences $preference;
public function __construct()
{
session_start();
$this->preference = new Preferences();
}
#[Route(path: '/', name: 'home', methods: ['GET'])]
public function index(): Response
{
return $this->render('./page/index.html',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/analyses', name: 'analyses', methods: ['GET'])]
public function analyses(): Response
{
return $this->render('./page/analyze.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/activity', name: 'activity', methods: ['GET'])]
public function activity(): Response
{
return $this->render('./page/activity.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/exercices', name: 'exercices', methods: ['POST'])] // 8
public function exercices(String $type, String $intensite, String $date, IRequest $req): Response
{
$exercicesArray = [
[
'date' => $date,
'type' => $type,
'intensite' => $intensite,
'status' => 'A venur',
]
];
return $this->render('./page/exercice.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => $exercicesArray,
'member' => []
]);
}
#[Route(path: '/search-user', name: 'search-user', methods: ['GET'])]
public function searchUser(string $username, IRequest $req): Response
{
$taberror = [];
// FILTER
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'john_doe',
'username' => 'johndoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'alice_smith',
'username' => 'alicesmith',
],
];
// if(!Validation::val_string($name)){
try {
//code...
// $model->userMgr->addFriend($name);
return $this->render('./page/addfriend.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => $utiliArray,
'infoUser' => [],
'exos' => [],
'member' => [],
'responce' => "Notification d'ajout envoyée à $username"
]);
} catch (\Throwable $th) {
//throw $th;
// return $this->render("addfriend.html.twig", ['tabError' => $taberror ]);
}
// }
}
#[Route(path: '/search-member', name: 'search-member', methods: ['GET'])]
public function searchMember(string $username, IRequest $req): Response
{
$taberror = [];
// FILTER
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'john_doe',
'username' => 'johndoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'alice_smith',
'username' => 'alicesmith',
],
];
// if(!Validation::val_string($name)){
try {
//code...
// $model->userMgr->addFriend($name);
return $this->render('./page/addmember.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => $utiliArray,
'infoUser' => [],
'exos' => [],
'member' => [],
'responce' => "Notification d'ajout envoyée à $username"
]);
} catch (\Throwable $th) {
//throw $th;
// return $this->render("addfriend.html.twig", ['tabError' => $taberror ]);
}
// }
}
#[Route(path: '/add-member', name: 'add-member', methods: ['POST'])]
public function addmember(string $username, IRequest $req): Response
{
$taberror = [];
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'john_doe',
'username' => 'johndoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'alice_smith',
'username' => 'alicesmith',
],
];
// if(!Validation::val_string($name)){
try {
//code...
// $model->userMgr->addFriend($name);
return $this->render('./page/addmember.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => $utiliArray,
'infoUser' => [],
'exos' => [],
'member' => [],
'responce' => "Notification d'ajout envoyée à $username"
]);
} catch (\Throwable $th) {
//throw $th;
// return $this->render("addfriend.html.twig", ['tabError' => $taberror ]);
}
// }
}
#[Route(path: '/member', name: 'member', methods: ['GET'])]
public function member(): Response
{
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'john_doe',
'username' => 'johndoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'alice_smith',
'username' => 'alicesmith',
],
];
return $this->render('./page/addmember.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => $utiliArray,
'infoUser' => [],
'exos' => [],
'member' => [],
]);
}
#[Route(path: '/friendlist', name: 'friendlist', methods: ['POST'])]
public function friendlist(string $username, IRequest $req): Response
{
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'john_doe',
'username' => 'johndoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'alice_smith',
'username' => 'alicesmith',
],
];
/* TODO */
// -> Enlever ou bloquer un utilisateur en fonction de son username
return $this->render('./page/friend.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => $utiliArray,
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => [],
]);
}
#[Route(path: '/friendlist', name: 'friendlist2', methods: ['GET'])]
public function friendlist2(): Response
{
$utiliArray = [
[
'nom' => 'John',
'prenom' => 'Doe',
'img' => 'test',
'status' => 'johndoe',
'username' => 'jdoe',
],
[
'nom' => 'Alice',
'prenom' => 'Smith',
'img' => 'test2',
'status' => 'alicesmith',
'username' => 'asmith',
],
];
return $this->render('./page/friend.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => $utiliArray,
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => [],
]);
}
#[Route(path: '/coaching', name: 'coaching', methods: ['GET'])]
public function coaching(): Response
{
return $this->render('./page/coaching.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/mail', name: 'mail', methods: ['GET'])]
public function mail(): Response
{
return $this->render('./page/mail.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/import', name: 'import', methods: ['GET'])]
public function import(): Response
{
return $this->render('./page/import.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/profile', name: 'profile', methods: ['GET'])]
public function profile(): Response
{
return $this->render('./page/profile.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/psettings', name: 'psettings', methods: ['POST'])]
public function psettings(string $nom,string $prenom,string $dateNaissance,string $mail,string $tel, IRequest $req): Response
{
return $this->render('./page/settings.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => $prenom,
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/login', name: 'login', methods: ['POST'])]
public function login(string $username,string $mdp, IRequest $req): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/home.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/log', name: 'log', methods: ['GET'])]
public function login2(): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/login.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/register', name: 'register', methods: ['POST'])]
public function register(string $username,string $mdp,string $confirmMdp,string $nom,string $prenom,string $dateNaissance,string $sexe,string $taille,string $poids, IRequest $req): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/home.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/regist', name: 'regist', methods: ['GET'])]
public function register2(): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/register.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/pass', name: 'pass', methods: ['GET'])]
public function pass(): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/password.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
#[Route(path: '/password', name: 'password', methods: ['POST'])]
public function password(string $email, IRequest $req): Response
{
// CONFIRMER LES DONNESS !!!!! IMPORTANT
return $this->render('./page/login.html.twig',[
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => []
]);
}
}
Loading…
Cancel
Save