Compare commits
89 Commits
@ -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
|
||||||
|
```
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 48 KiB |
@ -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"]
|
@ -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>
|
Before Width: | Height: | Size: 136 KiB |
Binary file not shown.
Before Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 586 B |
File diff suppressed because it is too large
Load Diff
@ -1,34 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Start Bootstrap - New Age v6.0.7 (https://startbootstrap.com/theme/new-age)
|
|
||||||
* Copyright 2013-2023 Start Bootstrap
|
|
||||||
* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-new-age/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
//
|
|
||||||
// Scripts
|
|
||||||
//
|
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', event => {
|
|
||||||
|
|
||||||
// Activate Bootstrap scrollspy on the main nav element
|
|
||||||
const mainNav = document.body.querySelector('#mainNav');
|
|
||||||
if (mainNav) {
|
|
||||||
new bootstrap.ScrollSpy(document.body, {
|
|
||||||
target: '#mainNav',
|
|
||||||
offset: 74,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Collapse responsive navbar when toggler is visible
|
|
||||||
const navbarToggler = document.body.querySelector('.navbar-toggler');
|
|
||||||
const responsiveNavItems = [].slice.call(
|
|
||||||
document.querySelectorAll('#navbarResponsive .nav-link')
|
|
||||||
);
|
|
||||||
responsiveNavItems.map(function (responsiveNavItem) {
|
|
||||||
responsiveNavItem.addEventListener('click', () => {
|
|
||||||
if (window.getComputedStyle(navbarToggler).display !== 'none') {
|
|
||||||
navbarToggler.click();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
@ -1,34 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Start Bootstrap - New Age v6.0.7 (https://startbootstrap.com/theme/new-age)
|
|
||||||
* Copyright 2013-2023 Start Bootstrap
|
|
||||||
* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-new-age/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
//
|
|
||||||
// Scripts
|
|
||||||
//
|
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', event => {
|
|
||||||
|
|
||||||
// Activate Bootstrap scrollspy on the main nav element
|
|
||||||
const mainNav = document.body.querySelector('#mainNav');
|
|
||||||
if (mainNav) {
|
|
||||||
new bootstrap.ScrollSpy(document.body, {
|
|
||||||
target: '#mainNav',
|
|
||||||
offset: 74,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Collapse responsive navbar when toggler is visible
|
|
||||||
const navbarToggler = document.body.querySelector('.navbar-toggler');
|
|
||||||
const responsiveNavItems = [].slice.call(
|
|
||||||
document.querySelectorAll('#navbarResponsive .nav-link')
|
|
||||||
);
|
|
||||||
responsiveNavItems.map(function (responsiveNavItem) {
|
|
||||||
responsiveNavItem.addEventListener('click', () => {
|
|
||||||
if (window.getComputedStyle(navbarToggler).display !== 'none') {
|
|
||||||
navbarToggler.click();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
@ -1,716 +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;
|
|
||||||
// private Preferences $preference;
|
|
||||||
|
|
||||||
// public function __construct()
|
|
||||||
// {
|
|
||||||
// session_start();
|
|
||||||
// $this->preference = new Preferences();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[Route(path: '/', name: 'index', 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: '/home', name: 'home', methods: ['GET'])]
|
|
||||||
// public function home(): Response
|
|
||||||
// {
|
|
||||||
// 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: '/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: '/exercice', name: 'exercice', methods: ['GET'])] // 8
|
|
||||||
// public function exercice(): Response
|
|
||||||
// {
|
|
||||||
// return $this->render('./page/exercice.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: '/add-friend', name: 'add-friend', methods: ['POST'])]
|
|
||||||
// public function addFriend(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/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: '/friend', name: 'friend', methods: ['GET'])]
|
|
||||||
// public function friend(): Response
|
|
||||||
// {
|
|
||||||
// $utiliArray = [
|
|
||||||
// [
|
|
||||||
// 'nom' => 'John',
|
|
||||||
// 'prenom' => 'Doe',
|
|
||||||
// 'img' => 'john_doe',
|
|
||||||
// 'username' => 'johndoe',
|
|
||||||
// ],
|
|
||||||
// [
|
|
||||||
// 'nom' => 'Alice',
|
|
||||||
// 'prenom' => 'Smith',
|
|
||||||
// 'img' => 'alice_smith',
|
|
||||||
// 'username' => 'alicesmith',
|
|
||||||
// ],
|
|
||||||
// ];
|
|
||||||
// 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' => [],
|
|
||||||
// ]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[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: '/settings', name: 'settings', methods: ['GET'])]
|
|
||||||
// public function settings(IRequest $req): Response
|
|
||||||
// {
|
|
||||||
// return $this->render('./page/settings.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: '/preferences', name: 'preferences', methods: ['POST'])]
|
|
||||||
// public function preferences(string $theme, IRequest $req): Response
|
|
||||||
// {
|
|
||||||
// /*TODO*/
|
|
||||||
|
|
||||||
// // VALIDER LES DONNEES
|
|
||||||
// $this->preference->majCookie($theme);
|
|
||||||
|
|
||||||
// return $this->render('./page/settings.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: '/mdp', name: 'mdp', methods: ['POST'])]
|
|
||||||
// public function mdp(string $ancienMotDePasse,string $nouveauMotDePasse,string $confirmerMotDePasse, IRequest $req): Response
|
|
||||||
// {
|
|
||||||
|
|
||||||
// // CONFIRMER LES DONNESS !!!!! IMPORTANT
|
|
||||||
|
|
||||||
// return $this->render('./page/settings.html.twig',[
|
|
||||||
// 'css' => $this->preference->getCookie(),
|
|
||||||
// 'pp' => "test2",
|
|
||||||
// 'user' => "Doe",
|
|
||||||
// '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()
|
|
||||||
// ]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[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()
|
|
||||||
// ]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #[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' => []
|
|
||||||
// ]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,45 +1,36 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
// namespace App\Controller;
|
||||||
|
|
||||||
use App\Container;
|
// use App\Container;
|
||||||
use App\Router\Request\IRequest;
|
// use App\Router\Request\IRequest;
|
||||||
use App\Router\Response\Response;
|
// use App\Router\Response\Response;
|
||||||
use Shared\Attributes\Route;
|
// use Shared\Attributes\Route;
|
||||||
use Twig\Environment;
|
// use Twig\Environment;
|
||||||
use Data\Core\Preferences;
|
// use Data\Core\Preferences;
|
||||||
use Shared\Log;
|
// use Shared\Log;
|
||||||
|
|
||||||
class HeartRateController extends BaseController
|
// class HeartRateController extends BaseController
|
||||||
{
|
// {
|
||||||
|
|
||||||
private Environment $twig;
|
|
||||||
protected Preferences $preference;
|
// #[Route(path: '/import', name: 'import', methods: ['GET'])]
|
||||||
|
// public function import(): Response
|
||||||
public function __construct()
|
// {
|
||||||
{
|
// return $this->render('./page/import.html.twig',[
|
||||||
session_start();
|
// 'css' => $this->preference->getCookie(),
|
||||||
$this->preference = new Preferences();
|
// 'pp' => "test2",
|
||||||
}
|
// 'user' => "Doe",
|
||||||
|
// 'role' => "Athlète",
|
||||||
|
// 'friendship' => [],
|
||||||
#[Route(path: '/import', name: 'import', methods: ['GET'])]
|
// 'analyzes' => [],
|
||||||
public function import(): Response
|
// 'mails' => [],
|
||||||
{
|
// 'users' => [],
|
||||||
return $this->render('./page/import.html.twig',[
|
// 'infoUser' => [],
|
||||||
'css' => $this->preference->getCookie(),
|
// 'exos' => [],
|
||||||
'pp' => "test2",
|
// 'member' => []
|
||||||
'user' => "Doe",
|
// ]);
|
||||||
'role' => "Athlète",
|
// }
|
||||||
'friendship' => [],
|
|
||||||
'analyzes' => [],
|
|
||||||
'mails' => [],
|
|
||||||
'users' => [],
|
|
||||||
'infoUser' => [],
|
|
||||||
'exos' => [],
|
|
||||||
'member' => []
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
@ -1,45 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
// namespace App\Controller;
|
||||||
|
|
||||||
use App\Container;
|
// use App\Container;
|
||||||
use App\Router\Request\IRequest;
|
// use App\Router\Request\IRequest;
|
||||||
use App\Router\Response\Response;
|
// use App\Router\Response\Response;
|
||||||
use Shared\Attributes\Route;
|
// use App\Router\Response\IResponse;
|
||||||
use Twig\Environment;
|
|
||||||
use Data\Core\Preferences;
|
|
||||||
use Shared\Log;
|
|
||||||
|
|
||||||
class SocialController extends BaseController
|
// use Shared\Attributes\Route;
|
||||||
{
|
// use Twig\Environment;
|
||||||
|
// use Data\Core\Preferences;
|
||||||
|
// use Shared\Log;
|
||||||
|
|
||||||
private Environment $twig;
|
|
||||||
protected Preferences $preference;
|
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
session_start();
|
|
||||||
$this->preference = new Preferences();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// #[Route(path: '/coach', name: 'coach')]
|
||||||
#[Route(path: '/mail', name: 'mail', methods: ['GET'])]
|
// class CoachController extends BaseController
|
||||||
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' => []
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,71 +1,71 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||||
<meta name="description" content="" />
|
<meta name="description" content="" />
|
||||||
<meta name="author" content="" />
|
<meta name="author" content="" />
|
||||||
<title>{% block title %}{% endblock %}</title>
|
<title>{% block title %}{% endblock %}</title>
|
||||||
<link href="/css/{% block css %}base_theme{% endblock %}.css" rel="stylesheet" />
|
<link href="/css/{% block css %}base_theme{% endblock %}.css" rel="stylesheet" />
|
||||||
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
|
<script src="https://use.fontawesome.com/releases/v6.3.0/js/all.js" crossorigin="anonymous"></script>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-primary">
|
<body class="bg-primary">
|
||||||
<div id="layoutAuthentication">
|
<div id="layoutAuthentication">
|
||||||
<div id="layoutAuthentication_content">
|
<div id="layoutAuthentication_content">
|
||||||
<main>
|
<main>
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-lg-5">
|
<div class="col-lg-5">
|
||||||
<div class="card shadow-lg border-0 rounded-lg mt-5">
|
<div class="card shadow-lg border-0 rounded-lg mt-5">
|
||||||
<div class="card-header"><h3 class="text-center font-weight-light my-4">Connexion</h3></div>
|
<div class="card-header"><h3 class="text-center font-weight-light my-4">Connexion</h3></div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form>
|
<form>
|
||||||
<div class="form-floating mb-3">
|
<div class="form-floating mb-3">
|
||||||
<input class="form-control" id="inputEmail" type="email" placeholder="nom@exemple.com" />
|
<input class="form-control" id="inputEmail" type="email" placeholder="nom@exemple.com" />
|
||||||
<label for="inputEmail">Adresse eMail</label>
|
<label for="inputEmail">Adresse eMail</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-floating mb-3">
|
<div class="form-floating mb-3">
|
||||||
<input class="form-control" id="inputPassword" type="password" placeholder="Mot de passe" />
|
<input class="form-control" id="inputPassword" type="password" placeholder="Mot de passe" />
|
||||||
<label for="inputPassword">Mot de passe</label>
|
<label for="inputPassword">Mot de passe</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check mb-3">
|
<div class="form-check mb-3">
|
||||||
<input class="form-check-input" id="inputRememberPassword" type="checkbox" value="" />
|
<input class="form-check-input" id="inputRememberPassword" type="checkbox" value="" />
|
||||||
<label class="form-check-label" for="inputRememberPassword">Mémoriser le mot de passe</label>
|
<label class="form-check-label" for="inputRememberPassword">Mémoriser le mot de passe</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
|
<div class="d-flex align-items-center justify-content-between mt-4 mb-0">
|
||||||
<a class="small" href="password.html">Mot de passe oublié ?</a>
|
<a class="small" href="password.html">Mot de passe oublié ?</a>
|
||||||
<a class="btn btn-primary" href="index.html">Se connecter</a>
|
<a class="btn btn-primary" href="index.html">Se connecter</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer text-center py-3">
|
<div class="card-footer text-center py-3">
|
||||||
<div class="small"><a href="register.html">Besoin d'un compte ? Inscrivez-vous !</a></div>
|
<div class="small"><a href="register.html">Besoin d'un compte ? Inscrivez-vous !</a></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{% endblock %}
|
||||||
{% endblock %}
|
</main>
|
||||||
</main>
|
</div>
|
||||||
</div>
|
<div id="layoutAuthentication_footer">
|
||||||
<div id="layoutAuthentication_footer">
|
<footer class="py-4 bg-light mt-auto">
|
||||||
<footer class="py-4 bg-light mt-auto">
|
<div class="container-fluid px-4">
|
||||||
<div class="container-fluid px-4">
|
<div class="d-flex align-items-center justify-content-between small">
|
||||||
<div class="d-flex align-items-center justify-content-between small">
|
<div class="text-muted">Copyright © HeartTrack 2023</div>
|
||||||
<div class="text-muted">Copyright © HeartTrack 2023</div>
|
<div>
|
||||||
<div>
|
<a href="#">Politique de confidentialité</a>
|
||||||
<a href="#">Politique de confidentialité</a>
|
·
|
||||||
·
|
<a href="#">Termes & Conditions d'utilisations</a>
|
||||||
<a href="#">Termes & Conditions d'utilisations</a>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</div>
|
||||||
</div>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||||
</div>
|
<script src="js/scripts.js"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
</body>
|
||||||
<script src="js/scripts.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,292 +1 @@
|
|||||||
<!DOCTYPE html>
|
<a href="/log">Se connecter</button>
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
|
||||||
<meta name="description" content="index page du site web" />
|
|
||||||
<meta name="author" content="PINAGOT Antoine" />
|
|
||||||
<title>HeartTrack - Getting Started</title>
|
|
||||||
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
|
|
||||||
<!-- Bootstrap icons-->
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
|
|
||||||
<!-- Google fonts-->
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,600;1,600&display=swap" rel="stylesheet" />
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,300;0,500;0,600;0,700;1,300;1,500;1,600;1,700&display=swap" rel="stylesheet" />
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Kanit:ital,wght@0,400;1,400&display=swap" rel="stylesheet" />
|
|
||||||
<!-- Core theme CSS (includes Bootstrap)-->
|
|
||||||
<link href="css/styles2.css" rel="stylesheet" />
|
|
||||||
</head>
|
|
||||||
<body id="page-top">
|
|
||||||
<!-- Navigation-->
|
|
||||||
<nav class="navbar navbar-expand-lg navbar-light fixed-top shadow-sm" id="mainNav">
|
|
||||||
<div class="container px-5">
|
|
||||||
<a class="navbar-brand fw-bold" href="/">HeartTrack</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
Menu
|
|
||||||
<i class="bi-list"></i>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
|
||||||
<ul class="navbar-nav ms-auto me-4 my-3 my-lg-0">
|
|
||||||
<li class="nav-item"><a class="nav-link me-lg-3" href="/log">Se connecter</a></li>
|
|
||||||
<li class="nav-item"><a class="nav-link me-lg-3" href="/regist">S'inscire</a></li>
|
|
||||||
</ul>
|
|
||||||
<button class="btn btn-primary rounded-pill px-3 mb-2 mb-lg-0" data-bs-toggle="modal" data-bs-target="#feedbackModal">
|
|
||||||
<span class="d-flex align-items-center">
|
|
||||||
<i class="bi-chat-text-fill me-2"></i>
|
|
||||||
<span class="small">Donnez votre avis</span>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<!-- Mashead header-->
|
|
||||||
<header class="masthead">
|
|
||||||
<div class="container px-5">
|
|
||||||
<div class="row gx-5 align-items-center">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<!-- Mashead text and app badges-->
|
|
||||||
<div class="mb-5 mb-lg-0 text-center text-lg-start">
|
|
||||||
<h1 class="display-1 lh-1 mb-3">HeartTrack pour mobile !</h1>
|
|
||||||
<p class="lead fw-normal text-muted mb-5">Une application pour suivre vos analyses en direct, est en cours de développement.</p>
|
|
||||||
<!-- <div class="d-flex flex-column flex-lg-row align-items-center">
|
|
||||||
<a class="me-lg-3 mb-4 mb-lg-0" href="#!"><img class="app-badge" src="assets/img/google-play-badge.svg" alt="..." /></a>
|
|
||||||
<a href="#!"><img class="app-badge" src="assets/img/app-store-badge.svg" alt="..." /></a>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<!-- Masthead device mockup feature-->
|
|
||||||
<div class="masthead-device-mockup">
|
|
||||||
<svg class="circle" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="circleGradient" gradientTransform="rotate(45)">
|
|
||||||
<stop class="gradient-start-color" offset="0%"></stop>
|
|
||||||
<stop class="gradient-end-color" offset="100%"></stop>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<circle cx="50" cy="50" r="50"></circle></svg
|
|
||||||
><svg class="shape-1 d-none d-sm-block" viewBox="0 0 240.83 240.83" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<rect x="-32.54" y="78.39" width="305.92" height="84.05" rx="42.03" transform="translate(120.42 -49.88) rotate(45)"></rect>
|
|
||||||
<rect x="-32.54" y="78.39" width="305.92" height="84.05" rx="42.03" transform="translate(-49.88 120.42) rotate(-45)"></rect></svg
|
|
||||||
><svg class="shape-2 d-none d-sm-block" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"></circle></svg>
|
|
||||||
<div class="device-wrapper">
|
|
||||||
<div class="device" data-device="iPhoneX" data-orientation="portrait" data-color="black">
|
|
||||||
<div class="screen bg-black">
|
|
||||||
<!-- PUT CONTENTS HERE:-->
|
|
||||||
<!-- * * This can be a video, image, or just about anything else.-->
|
|
||||||
<!-- * * Set the max width of your media to 100% and the height to-->
|
|
||||||
<!-- * * 100% like the demo example below.-->
|
|
||||||
<video muted="muted" autoplay="" loop="" style="max-width: 100%; height: 100%"><source src="assets/img/demo-screen.mp4" type="video/mp4" /></video>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<!-- Quote/testimonial aside-->
|
|
||||||
<aside class="text-center bg-gradient-primary-to-secondary">
|
|
||||||
<div class="container px-5">
|
|
||||||
<div class="row gx-5 justify-content-center">
|
|
||||||
<div class="col-xl-8">
|
|
||||||
<div class="h2 fs-1 text-white mb-4">"Une solution gratuite pour analyser vos données de fréquences cardiaques !"</div>
|
|
||||||
<img src="assets/img/tnw-logo.svg" alt="..." style="height: 3rem" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
||||||
<!-- App features section-->
|
|
||||||
<section id="features">
|
|
||||||
<div class="container px-5">
|
|
||||||
<div class="row gx-5 align-items-center">
|
|
||||||
<div class="col-lg-8 order-lg-1 mb-5 mb-lg-0">
|
|
||||||
<div class="container-fluid px-5">
|
|
||||||
<div class="row gx-5">
|
|
||||||
<div class="col-md-6 mb-5">
|
|
||||||
<!-- Feature item-->
|
|
||||||
<div class="text-center">
|
|
||||||
<i class="bi-phone icon-feature text-gradient d-block mb-3"></i>
|
|
||||||
<h3 class="font-alt">Web/Mobile</h3>
|
|
||||||
<p class="text-muted mb-0">Gardez les informations tant bien dans l'application que sur le site web avec la synchronisation des données !</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 mb-5">
|
|
||||||
<!-- Feature item-->
|
|
||||||
<div class="text-center">
|
|
||||||
<i class="bi-cast icon-feature text-gradient d-block mb-3"></i>
|
|
||||||
<h3 class="font-alt">Importez vos données</h3>
|
|
||||||
<p class="text-muted mb-0">Importez vos données directement depuis un fichier .FIT !</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 mb-5 mb-md-0">
|
|
||||||
<!-- Feature item-->
|
|
||||||
<div class="text-center">
|
|
||||||
<i class="bi-gift icon-feature text-gradient d-block mb-3"></i>
|
|
||||||
<h3 class="font-alt">Gratuit</h3>
|
|
||||||
<p class="text-muted mb-0">Ce site et cette application sont entièrement gratuites !</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6">
|
|
||||||
<!-- Feature item-->
|
|
||||||
<div class="text-center">
|
|
||||||
<i class="bi-patch-check icon-feature text-gradient d-block mb-3"></i>
|
|
||||||
<h3 class="font-alt">Open Source</h3>
|
|
||||||
<p class="text-muted mb-0">Ce projet est fait en Open Source, tout le monde peut y accéder !</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-4 order-lg-0">
|
|
||||||
<!-- Features section device mockup-->
|
|
||||||
<div class="features-device-mockup">
|
|
||||||
<svg class="circle" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="circleGradient" gradientTransform="rotate(45)">
|
|
||||||
<stop class="gradient-start-color" offset="0%"></stop>
|
|
||||||
<stop class="gradient-end-color" offset="100%"></stop>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<circle cx="50" cy="50" r="50"></circle></svg
|
|
||||||
><svg class="shape-1 d-none d-sm-block" viewBox="0 0 240.83 240.83" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<rect x="-32.54" y="78.39" width="305.92" height="84.05" rx="42.03" transform="translate(120.42 -49.88) rotate(45)"></rect>
|
|
||||||
<rect x="-32.54" y="78.39" width="305.92" height="84.05" rx="42.03" transform="translate(-49.88 120.42) rotate(-45)"></rect></svg
|
|
||||||
><svg class="shape-2 d-none d-sm-block" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"></circle></svg>
|
|
||||||
<div class="device-wrapper">
|
|
||||||
<div class="device" data-device="iPhoneX" data-orientation="portrait" data-color="black">
|
|
||||||
<div class="screen bg-black">
|
|
||||||
<!-- PUT CONTENTS HERE:-->
|
|
||||||
<!-- * * This can be a video, image, or just about anything else.-->
|
|
||||||
<!-- * * Set the max width of your media to 100% and the height to-->
|
|
||||||
<!-- * * 100% like the demo example below.-->
|
|
||||||
<video muted="muted" autoplay="" loop="" style="max-width: 100%; height: 100%"><source src="assets/img/demo-screen.mp4" type="video/mp4" /></video>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<!-- Basic features section-->
|
|
||||||
<section class="bg-light">
|
|
||||||
<div class="container px-5">
|
|
||||||
<div class="row gx-5 align-items-center justify-content-center justify-content-lg-between">
|
|
||||||
<div class="col-12 col-lg-5">
|
|
||||||
<h2 class="display-4 lh-1 mb-4">Fonctionnalité supplémentaire de notre application</h2>
|
|
||||||
<p class="lead fw-normal text-muted mb-5 mb-lg-0">Notre application propose un service de coaching personnalisé en fonction du besoin que vous avez en tant qu'athelète. Vous pouvez aussi fournir un service de coaching aux autres utilisateurs en vous inscrivant en tant que coach sportif.</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-8 col-md-6">
|
|
||||||
<div class="px-5 px-sm-0"><img class="img-fluid rounded-circle" src="./assets/img/bg1.png" alt="..." /></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<!-- Call to action section-->
|
|
||||||
<section class="cta">
|
|
||||||
<div class="cta-content">
|
|
||||||
<div class="container px-5">
|
|
||||||
<h2 class="text-white display-1 lh-1 mb-4">
|
|
||||||
Arrêtez d'attendre...
|
|
||||||
<br />
|
|
||||||
Inscrivez-vous !
|
|
||||||
</h2>
|
|
||||||
<!-- <a class="btn btn-outline-light py-3 px-4 rounded-pill" href="#" target="_blank">Download for free</a> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<!-- App badge section-->
|
|
||||||
<section class="bg-gradient-primary-to-secondary" id="download">
|
|
||||||
<div class="container px-5">
|
|
||||||
<h2 class="text-center text-white font-alt mb-4">Application bientôt disponible !</h2>
|
|
||||||
<!-- <div class="d-flex flex-column flex-lg-row align-items-center justify-content-center">
|
|
||||||
<a class="me-lg-3 mb-4 mb-lg-0" href="#!"><img class="app-badge" src="assets/img/google-play-badge.svg" alt="..." /></a>
|
|
||||||
<a href="#!"><img class="app-badge" src="assets/img/app-store-badge.svg" alt="..." /></a>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<!-- Footer-->
|
|
||||||
<footer class="bg-black text-center py-5">
|
|
||||||
<div class="container px-5">
|
|
||||||
<div class="text-white-50 small">
|
|
||||||
<div class="mb-2">© HeartTrack 2023. Tous droits réservé.</div>
|
|
||||||
<a href="#!">Politique de confidentialité</a>
|
|
||||||
<span class="mx-1">·</span>
|
|
||||||
<a href="#!">Termes & Conditions d'utilisation</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
<!-- Feedback Modal-->
|
|
||||||
<div class="modal fade" id="feedbackModal" tabindex="-1" aria-labelledby="feedbackModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header bg-gradient-primary-to-secondary p-4">
|
|
||||||
<h5 class="modal-title font-alt text-white" id="feedbackModalLabel">Envoyez votre avis</h5>
|
|
||||||
<button class="btn-close btn-close-white" type="button" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body border-0 p-4">
|
|
||||||
<!-- * * * * * * * * * * * * * * *-->
|
|
||||||
<!-- * * SB Forms Contact Form * *-->
|
|
||||||
<!-- * * * * * * * * * * * * * * *-->
|
|
||||||
<!-- This form is pre-integrated with SB Forms.-->
|
|
||||||
<!-- To make this form functional, sign up at-->
|
|
||||||
<!-- https://startbootstrap.com/solution/contact-forms-->
|
|
||||||
<!-- to get an API token!-->
|
|
||||||
<form id="contactForm" data-sb-form-api-token="API_TOKEN">
|
|
||||||
<!-- Name input-->
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input class="form-control" id="name" type="text" placeholder="Entrez votre nom complet..." data-sb-validations="required" />
|
|
||||||
<label for="name">Nom complet</label>
|
|
||||||
<div class="invalid-feedback" data-sb-feedback="name:required">Un nom est requis.</div>
|
|
||||||
</div>
|
|
||||||
<!-- Email address input-->
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input class="form-control" id="email" type="email" placeholder="nom@exemple.com" data-sb-validations="required,email" />
|
|
||||||
<label for="email">Adresse email</label>
|
|
||||||
<div class="invalid-feedback" data-sb-feedback="email:required">Adresse email requis.</div>
|
|
||||||
<div class="invalid-feedback" data-sb-feedback="email:email">L'adresse email n'est pas valide.</div>
|
|
||||||
</div>
|
|
||||||
<!-- Phone number input-->
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<input class="form-control" id="phone" type="tel" placeholder="06 12 34 56 78" data-sb-validations="required" />
|
|
||||||
<label for="phone">Numéro de téléphone</label>
|
|
||||||
<div class="invalid-feedback" data-sb-feedback="phone:required">Numéro de téléphone requis.</div>
|
|
||||||
</div>
|
|
||||||
<!-- Message input-->
|
|
||||||
<div class="form-floating mb-3">
|
|
||||||
<textarea class="form-control" id="message" type="text" placeholder="Entrez votre message..." style="height: 10rem" data-sb-validations="required"></textarea>
|
|
||||||
<label for="message">Message</label>
|
|
||||||
<div class="invalid-feedback" data-sb-feedback="message:required">Un message est requis.</div>
|
|
||||||
</div>
|
|
||||||
<!-- Submit success message-->
|
|
||||||
<!---->
|
|
||||||
<!-- This is what your users will see when the form-->
|
|
||||||
<!-- has successfully submitted-->
|
|
||||||
<div class="d-none" id="submitSuccessMessage">
|
|
||||||
<div class="text-center mb-3">
|
|
||||||
<div class="fw-bolder">Avis envoyé !</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- Submit error message-->
|
|
||||||
<!---->
|
|
||||||
<!-- This is what your users will see when there is-->
|
|
||||||
<!-- an error submitting the form-->
|
|
||||||
<div class="d-none" id="submitErrorMessage"><div class="text-center text-danger mb-3">Erreur du formulaire !</div></div>
|
|
||||||
<!-- Submit Button-->
|
|
||||||
<div class="d-grid"><button class="btn btn-primary rounded-pill btn-lg disabled" id="submitButton" type="submit">Envoyer</button></div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- Bootstrap core JS-->
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
||||||
<!-- Core theme JS-->
|
|
||||||
<script src="js/scripts2.js"></script>
|
|
||||||
<script src="https://cdn.startbootstrap.com/sb-forms-latest.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,132 +1,158 @@
|
|||||||
DROP TABLE IF EXISTS Athlete, Friendship, Notification, Statistique, Entrainement, Participe, SourceDonnee, Activite, FrequenceCardiaque CASCADE;
|
-- Athlete Table
|
||||||
|
|
||||||
CREATE TABLE Athlete (
|
CREATE TABLE Athlete (
|
||||||
idAthlete SERIAL PRIMARY KEY,
|
idAthlete SERIAL PRIMARY KEY,
|
||||||
nom VARCHAR(255),
|
nom VARCHAR(255),
|
||||||
prenom VARCHAR(255),
|
prenom VARCHAR(255),
|
||||||
email VARCHAR(255) UNIQUE,
|
email VARCHAR(255) UNIQUE,
|
||||||
sexe CHAR(1),
|
sexe CHAR(1),
|
||||||
taille DECIMAL,
|
taille DECIMAL,
|
||||||
poids DECIMAL,
|
poids DECIMAL,
|
||||||
motDePasse VARCHAR(255),
|
motDePasse VARCHAR(255),
|
||||||
dateNaissance DATE,
|
dateNaissance DATE
|
||||||
isCoach BOOLEAN
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Friendship Table
|
||||||
CREATE TABLE Friendship (
|
CREATE TABLE Friendship (
|
||||||
idAthlete1 INT,
|
idAthlete1 INT,
|
||||||
idAthlete2 INT,
|
idAthlete2 INT,
|
||||||
debut DATE,
|
debut DATE,
|
||||||
PRIMARY KEY (idAthlete1, idAthlete2),
|
PRIMARY KEY (idAthlete1, idAthlete2),
|
||||||
FOREIGN KEY (idAthlete1) REFERENCES Athlete(idAthlete),
|
FOREIGN KEY (idAthlete1) REFERENCES Athlete (idAthlete),
|
||||||
FOREIGN KEY (idAthlete2) REFERENCES Athlete(idAthlete)
|
FOREIGN KEY (idAthlete2) REFERENCES Athlete (idAthlete)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Notification Table
|
||||||
CREATE TABLE Notification (
|
CREATE TABLE Notification (
|
||||||
idNotif INT PRIMARY KEY,
|
idNotif SERIAL PRIMARY KEY,
|
||||||
message TEXT,
|
message TEXT,
|
||||||
date DATE,
|
date DATE,
|
||||||
statut BOOLEAN,
|
statut BOOLEAN,
|
||||||
urgence INT,
|
urgence INT,
|
||||||
athleteId INT,
|
athleteId INT,
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete)
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Coach Table
|
||||||
|
CREATE TABLE Coach (
|
||||||
|
idCoach SERIAL PRIMARY KEY,
|
||||||
|
athleteId INT,
|
||||||
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Statistique Table
|
||||||
CREATE TABLE Statistique (
|
CREATE TABLE Statistique (
|
||||||
idStatistique INT PRIMARY KEY,
|
idStatistique SERIAL PRIMARY KEY,
|
||||||
poids DECIMAL,
|
poids DECIMAL,
|
||||||
fcMoyenne DECIMAL,
|
fcMoyenne DECIMAL,
|
||||||
fcMax DECIMAL,
|
fcMax DECIMAL,
|
||||||
caloriesBruleesMoy DECIMAL,
|
caloriesBruleesMoy DECIMAL,
|
||||||
date DATE,
|
date DATE,
|
||||||
athleteId INT,
|
athleteId INT,
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete)
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Entrainement Table
|
||||||
CREATE TABLE Entrainement (
|
CREATE TABLE Entrainement (
|
||||||
idEntrainement INT PRIMARY KEY,
|
idEntrainement SERIAL PRIMARY KEY,
|
||||||
date DATE,
|
date DATE,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
latitude DECIMAL,
|
latitude DECIMAL,
|
||||||
longitude DECIMAL,
|
longitude DECIMAL,
|
||||||
feedback TEXT,
|
feedback TEXT,
|
||||||
athleteId INT,
|
coachId INT,
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete)
|
FOREIGN KEY (coachId) REFERENCES Coach (idCoach)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Participe Table
|
||||||
CREATE TABLE Participe (
|
CREATE TABLE Participe (
|
||||||
athleteId INT,
|
athleteId INT,
|
||||||
entrainementId INT,
|
entrainementId INT,
|
||||||
PRIMARY KEY (athleteId, entrainementId),
|
PRIMARY KEY (athleteId, entrainementId),
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete),
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete),
|
||||||
FOREIGN KEY (entrainementId) REFERENCES Entrainement(idEntrainement)
|
FOREIGN KEY (entrainementId) REFERENCES Entrainement (idEntrainement)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- SourceDonnee Table
|
||||||
CREATE TABLE SourceDonnee (
|
CREATE TABLE SourceDonnee (
|
||||||
idSource INT PRIMARY KEY,
|
idSource SERIAL PRIMARY KEY,
|
||||||
type VARCHAR(255),
|
type VARCHAR(255),
|
||||||
modele VARCHAR(255),
|
modele VARCHAR(255),
|
||||||
precision2 DECIMAL,
|
precision DECIMAL,
|
||||||
athleteId INT,
|
athleteId INT,
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete)
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- Activite Table
|
||||||
CREATE TABLE Activite (
|
CREATE TABLE Activite (
|
||||||
idActivite INT PRIMARY KEY,
|
idActivite SERIAL PRIMARY KEY,
|
||||||
type VARCHAR(255),
|
type VARCHAR(255),
|
||||||
date DATE,
|
date DATE,
|
||||||
heureDeDebut TIME,
|
heureDeDebut TIME,
|
||||||
heureDeFin TIME,
|
heureDeFin TIME,
|
||||||
effortRessent DECIMAL,
|
effortRessent DECIMAL,
|
||||||
variabilite DECIMAL,
|
variabilite DECIMAL,
|
||||||
variance DECIMAL,
|
variance DECIMAL,
|
||||||
ecartType DECIMAL,
|
ecartType DECIMAL,
|
||||||
moyenne DECIMAL,
|
moyenne DECIMAL,
|
||||||
maximum DECIMAL,
|
maximum DECIMAL,
|
||||||
minimum DECIMAL,
|
minimum DECIMAL,
|
||||||
temperatureMoyenne DECIMAL,
|
temperatureMoyenne DECIMAL,
|
||||||
athleteId INT,
|
athleteId INT,
|
||||||
sourceId INT,
|
sourceId INT,
|
||||||
FOREIGN KEY (athleteId) REFERENCES Athlete(idAthlete),
|
FOREIGN KEY (athleteId) REFERENCES Athlete (idAthlete),
|
||||||
FOREIGN KEY (sourceId) REFERENCES SourceDonnee(idSource)
|
FOREIGN KEY (sourceId) REFERENCES SourceDonnee (idSource)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- FrequenceCardiaque Table
|
||||||
CREATE TABLE FrequenceCardiaque (
|
CREATE TABLE FrequenceCardiaque (
|
||||||
idFc INT PRIMARY KEY,
|
idFc SERIAL PRIMARY KEY,
|
||||||
altitude DECIMAL,
|
altitude DECIMAL,
|
||||||
temps TIME,
|
temps TIME,
|
||||||
temperature DECIMAL,
|
temperature DECIMAL,
|
||||||
bpm INT,
|
bpm INT,
|
||||||
longitude DECIMAL,
|
longitude DECIMAL,
|
||||||
latitude DECIMAL,
|
latitude DECIMAL,
|
||||||
activiteId INT,
|
activiteId INT,
|
||||||
FOREIGN KEY (activiteId) REFERENCES Activite(idActivite)
|
FOREIGN KEY (activiteId) REFERENCES Activite (idActivite)
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO Athlete (idAthlete, nom, prenom, email, sexe, taille, poids, motDePasse, dateNaissance, isCoach) VALUES
|
-- Insertion de données dans la table Athlete
|
||||||
(1, 'Doe', 'John', 'john.doe@example.com', 'M', 1.80, 70, 'password123', '1990-01-01', FALSE),
|
INSERT INTO Athlete (nom, prenom, email, sexe, taille, poids, motDePasse, dateNaissance) VALUES
|
||||||
(2, 'Smith', 'Jane', 'jane.smith@example.com', 'F', 1.65, 60, 'password456', '1992-02-02', TRUE);
|
('Doe', 'John', 'john.doe@example.com', 'M', 1.80, 70, 'password123', '1990-01-01'),
|
||||||
|
('Smith', 'Jane', 'jane.smith@example.com', 'F', 1.65, 60, 'password456', '1992-02-02');
|
||||||
|
|
||||||
|
-- Insertion de données dans la table Friendship
|
||||||
INSERT INTO Friendship (idAthlete1, idAthlete2, debut) VALUES
|
INSERT INTO Friendship (idAthlete1, idAthlete2, debut) VALUES
|
||||||
(1, 2, '2023-01-01');
|
(1, 2, '2023-01-01');
|
||||||
|
|
||||||
|
-- Insertion de données dans la table Notification
|
||||||
|
INSERT INTO Notification (message, date, statut, urgence, athleteId) VALUES
|
||||||
|
('Training session at 10 AM', '2023-03-10', TRUE, 1, 1);
|
||||||
|
|
||||||
INSERT INTO Notification (idNotif, message, date, statut, urgence, athleteId) VALUES
|
-- Insertion de données dans la table Coach
|
||||||
(1, 'Training session at 10 AM', '2023-03-10', TRUE, 1, 1);
|
INSERT INTO Coach (athleteId) VALUES
|
||||||
|
(1);
|
||||||
|
|
||||||
INSERT INTO Statistique (idStatistique, poids, fcMoyenne, fcMax, caloriesBruleesMoy, date, athleteId) VALUES
|
-- Insertion de données dans la table Statistique
|
||||||
(1, 70, 80, 150, 500, '2023-03-10', 1);
|
INSERT INTO Statistique (poids, fcMoyenne, fcMax, caloriesBruleesMoy, date, athleteId) VALUES
|
||||||
|
(70, 80, 150, 500, '2023-03-10', 1);
|
||||||
|
|
||||||
INSERT INTO Entrainement (idEntrainement, date, description, latitude, longitude, feedback, athleteId) VALUES
|
-- Insertion de données dans la table Entrainement
|
||||||
(1, '2023-03-12', 'Long run in the park', 40.7128, -74.0060, 'Good effort', 1);
|
INSERT INTO Entrainement (date, description, latitude, longitude, feedback, coachId) VALUES
|
||||||
|
('2023-03-12', 'Long run in the park', 40.7128, -74.0060, 'Good effort', 1);
|
||||||
|
|
||||||
|
-- Insertion de données dans la table Participe
|
||||||
INSERT INTO Participe (athleteId, entrainementId) VALUES
|
INSERT INTO Participe (athleteId, entrainementId) VALUES
|
||||||
(1, 1);
|
(1, 1);
|
||||||
|
|
||||||
INSERT INTO SourceDonnee (idSource, type, modele, precision2, athleteId) VALUES
|
-- Insertion de données dans la table SourceDonnee
|
||||||
(1, 'Heart Rate Monitor', 'HRM-Pro', 98.5, 1);
|
INSERT INTO SourceDonnee (type, modele, precision, athleteId) VALUES
|
||||||
|
('Heart Rate Monitor', 'HRM-Pro', 98.5, 1);
|
||||||
|
|
||||||
INSERT INTO Activite (idActivite, type, date, heureDeDebut, heureDeFin, effortRessent, variabilite, variance, ecartType, moyenne, maximum, minimum, temperatureMoyenne, athleteId, sourceId) VALUES
|
-- Insertion de données dans la table Activite
|
||||||
(1, 'Running', '2023-03-10', '08:00:00', '09:00:00', 7, 0.5, 1, 0.1, 140, 160, 120, 20, 1, 1);
|
INSERT INTO Activite (type, date, heureDeDebut, heureDeFin, effortRessent, variabilite, variance, ecartType, moyenne, maximum, minimum, temperatureMoyenne, athleteId, sourceId) VALUES
|
||||||
|
('Running', '2023-03-10', '08:00:00', '09:00:00', 7, 0.5, 1, 0.1, 140, 160, 120, 20, 1, 1);
|
||||||
|
|
||||||
INSERT INTO FrequenceCardiaque (idFc, altitude, temps, temperature, bpm, longitude, latitude, activiteId) VALUES
|
-- Insertion de données dans la table FrequenceCardiaque
|
||||||
(1, 100, '08:15:00', 15, 130, -74.0060, 40.7128, 1);
|
INSERT INTO FrequenceCardiaque (altitude, temps, temperature, bpm, longitude, latitude, activiteId) VALUES
|
||||||
|
(100, '08:15:00', 15, 130, -74.0060, 40.7128, 1);
|
||||||
|
@ -1,215 +0,0 @@
|
|||||||
<?php
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
|
|
||||||
//use Database\{Connexion, AthleteGateway,AthleteEntity};
|
|
||||||
use Database\AthleteEntity;
|
|
||||||
use Database\AthleteGateway;
|
|
||||||
use Database\Connexion;
|
|
||||||
use Database\AthleteMapper;
|
|
||||||
use Database\CoachGateway;
|
|
||||||
use Database\CoachEntity;
|
|
||||||
use Database\CoachMapper;
|
|
||||||
|
|
||||||
class GatewayTest extends TestCase {
|
|
||||||
|
|
||||||
//Partie concernant les Athlètes
|
|
||||||
|
|
||||||
public function testGetAthlete() {
|
|
||||||
|
|
||||||
//$dsn = "pgsql:host=londres;port=8888;dbname=dbkemonteiro2;user=kemonteiro2;password=Mdp";
|
|
||||||
|
|
||||||
require "loginDatabase.php";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
$result = $athleteGateway->getAthlete();
|
|
||||||
//var_dump($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fonctionne mais en commentaire pour pas add et del a chaque fois
|
|
||||||
public function testAddAthlete(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
|
|
||||||
$dateSpecifique = "2023-11-26";
|
|
||||||
$timestamp = strtotime($dateSpecifique);
|
|
||||||
$dateSQL = date("Y-m-d", $timestamp);
|
|
||||||
|
|
||||||
$athleteEntity = new AthleteEntity();
|
|
||||||
$athleteEntity->setNom('John');
|
|
||||||
$athleteEntity->setPrenom('Doe');
|
|
||||||
$athleteEntity->setIdAthlete(1234);
|
|
||||||
$athleteEntity->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$athleteEntity->setSexe('H');
|
|
||||||
$athleteEntity->setTaille(169);
|
|
||||||
$athleteEntity->setPoids(69);
|
|
||||||
$athleteEntity->setMotDePasse('motdepasse');
|
|
||||||
$athleteEntity->setDateNaissance($dateSQL);
|
|
||||||
|
|
||||||
$result2 = $athleteGateway->addAthlete($athleteEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function testDeleteAthlete(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
$result = $athleteGateway->deleteAthlete( //idAthlete );
|
|
||||||
var_dump($result);
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public function testUpdateAthlete(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
|
|
||||||
$dateSpecifique = "2004-08-26";
|
|
||||||
$timestamp = strtotime($dateSpecifique);
|
|
||||||
$dateSQL = date("Y-m-d", $timestamp);
|
|
||||||
|
|
||||||
$athleteEntity = new AthleteEntity();
|
|
||||||
$athleteEntity->setNom('John');
|
|
||||||
$athleteEntity->setPrenom('Doe');
|
|
||||||
$athleteEntity->setIdAthlete(13);
|
|
||||||
$athleteEntity->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$athleteEntity->setSexe('H');
|
|
||||||
$athleteEntity->setTaille(169);
|
|
||||||
$athleteEntity->setPoids(69);
|
|
||||||
$athleteEntity->setMotDePasse('motdepasse');
|
|
||||||
$athleteEntity->setDateNaissance($dateSQL);
|
|
||||||
$athleteEntity->setIsCoach(FALSE);
|
|
||||||
$athleteEntity->setCoachId(NULL);
|
|
||||||
|
|
||||||
$athleteEntity2 = new AthleteEntity();
|
|
||||||
$athleteEntity2->setNom('Monteiro');
|
|
||||||
$athleteEntity2->setPrenom('Kevin');
|
|
||||||
$athleteEntity2->setIdAthlete(13);
|
|
||||||
$athleteEntity2->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$athleteEntity2->setSexe('H');
|
|
||||||
$athleteEntity2->setTaille(169);
|
|
||||||
$athleteEntity2->setPoids(69);
|
|
||||||
$athleteEntity2->setMotDePasse('motdepasse');
|
|
||||||
$athleteEntity2->setDateNaissance($dateSQL);
|
|
||||||
$athleteEntity2->setIsCoach(TRUE);
|
|
||||||
$athleteEntity2->setCoachId(1);
|
|
||||||
|
|
||||||
$result = $athleteGateway->updateAthlete($athleteEntity, $athleteEntity2);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Partie concernant les Coachs
|
|
||||||
|
|
||||||
public function testGetCoach() {
|
|
||||||
|
|
||||||
//$dsn = "pgsql:host=londres;port=8888;dbname=dbkemonteiro2;user=kemonteiro2;password=Mdp";
|
|
||||||
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
|
|
||||||
$coachGateway = new CoachGateway($connexion);
|
|
||||||
$result = $coachGateway->getCoach();
|
|
||||||
var_dump($result);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
//Fonctionne PAS A PARTIR DE LA
|
|
||||||
public function testAddCoach(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
|
|
||||||
$coachGateway = new CoachGateway($connexion);
|
|
||||||
|
|
||||||
$dateSpecifique = "2023-11-26";
|
|
||||||
$timestamp = strtotime($dateSpecifique);
|
|
||||||
$dateSQL = date("Y-m-d", $timestamp);
|
|
||||||
|
|
||||||
$coachEntity = new CoachEntity();
|
|
||||||
$coachEntity->setNom('John');
|
|
||||||
$coachEntity->setPrenom('Doe');
|
|
||||||
$coachEntity->setIdCoach(1234);
|
|
||||||
$coachEntity->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$coachEntity->setSexe('H');
|
|
||||||
$coachEntity->setTaille(169);
|
|
||||||
$coachEntity->setPoids(69);
|
|
||||||
$coachEntity->setMotDePasse('motdepasse');
|
|
||||||
$coachEntity->setDateNaissance($dateSQL);
|
|
||||||
|
|
||||||
$result2 = $coachGateway->addCoach($coachEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function testDeleteAthlete(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
$result = $athleteGateway->deleteAthlete( //idAthlete );
|
|
||||||
var_dump($result);
|
|
||||||
|
|
||||||
}*/
|
|
||||||
/*
|
|
||||||
public function testUpdateAthlete(){
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
|
|
||||||
$dateSpecifique = "2004-08-26";
|
|
||||||
$timestamp = strtotime($dateSpecifique);
|
|
||||||
$dateSQL = date("Y-m-d", $timestamp);
|
|
||||||
|
|
||||||
$athleteEntity = new AthleteEntity();
|
|
||||||
$athleteEntity->setNom('John');
|
|
||||||
$athleteEntity->setPrenom('Doe');
|
|
||||||
$athleteEntity->setIdAthlete(13);
|
|
||||||
$athleteEntity->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$athleteEntity->setSexe('H');
|
|
||||||
$athleteEntity->setTaille(169);
|
|
||||||
$athleteEntity->setPoids(69);
|
|
||||||
$athleteEntity->setMotDePasse('motdepasse');
|
|
||||||
$athleteEntity->setDateNaissance($dateSQL);
|
|
||||||
|
|
||||||
$athleteEntity2 = new AthleteEntity();
|
|
||||||
$athleteEntity2->setNom('Monteiro');
|
|
||||||
$athleteEntity2->setPrenom('Kevin');
|
|
||||||
$athleteEntity2->setIdAthlete(13);
|
|
||||||
$athleteEntity2->setEmail('kevin.monteiro@gmail.fr');
|
|
||||||
$athleteEntity2->setSexe('H');
|
|
||||||
$athleteEntity2->setTaille(169);
|
|
||||||
$athleteEntity2->setPoids(69);
|
|
||||||
$athleteEntity2->setMotDePasse('motdepasse');
|
|
||||||
$athleteEntity2->setDateNaissance($dateSQL);
|
|
||||||
|
|
||||||
$result = $athleteGateway->updateAthlete($athleteEntity, $athleteEntity2);
|
|
||||||
}*/
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
use Model\User;
|
|
||||||
use Database\AthleteEntity;
|
|
||||||
use Database\AthleteGateway;
|
|
||||||
use Database\Connexion;
|
|
||||||
use Database\AthleteMapper;
|
|
||||||
|
|
||||||
class MapperTest extends TestCase {
|
|
||||||
|
|
||||||
public function testMapperAthlete() {
|
|
||||||
|
|
||||||
//$dsn = "pgsql:host=londres;port=8888;dbname=dbkemonteiro2;user=kemonteiro2;password=Mdp";
|
|
||||||
|
|
||||||
$dsn = "mysql:host=londres;dbname=dbkemonteiro2;";
|
|
||||||
$username = "kemonteiro2";
|
|
||||||
$password = "#Phpmyadmin63";
|
|
||||||
|
|
||||||
$connexion = new Connexion($dsn,$username,$password);
|
|
||||||
|
|
||||||
|
|
||||||
$athleteGateway = new AthleteGateway($connexion);
|
|
||||||
$result = $athleteGateway->getAthlete();
|
|
||||||
|
|
||||||
$map = new AthleteMapper ();
|
|
||||||
//SQL To AthleteEntity
|
|
||||||
$athleteEntity = $map->athleteSqlToEntity($result);
|
|
||||||
|
|
||||||
|
|
||||||
foreach($athleteEntity as $ath){
|
|
||||||
|
|
||||||
$result = $ath->getNom();
|
|
||||||
var_dump($result);
|
|
||||||
//Pour chaque AthleteEntity : Athlete Entity To User avec Role Athlete(Model)
|
|
||||||
$user = $map->athleteEntityToModel($ath);
|
|
||||||
var_dump($user->getId());
|
|
||||||
//Pour chaque Athlete du Model -> Athlete Entity
|
|
||||||
$res = $map->athleteToEntity($user);
|
|
||||||
var_dump($res->getIdAthlete());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$dsn = "psql:host=localhost;dbname=sae_3;";
|
|
||||||
$username = "Perederii";
|
|
||||||
$password = "";
|
|
||||||
|
|
||||||
?>
|
|
Loading…
Reference in new issue