End of the DS and the Project

This commit is contained in:
2024-01-23 09:25:23 +01:00
parent dc480c8377
commit 58d47e0737
82 changed files with 216446 additions and 8179 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal" created-in="PS-232.10072.32">
<component name="dataSourceStorageLocal" created-in="PS-233.13135.108">
<data-source name="postgres@172.29.205.116" uuid="ea349d8e-8a78-4229-a175-518b1e682b00">
<database-info product="PostgreSQL" version="15.3 (Debian 15.3-0+deb12u1)" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.6.0" dbms="POSTGRES" exact-version="15.3" exact-driver-version="42.6">
<database-info product="PostgreSQL" version="15.5 (Debian 15.5-0+deb12u1)" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.6.0" dbms="POSTGRES" exact-version="15.5" exact-driver-version="42.6">
<identifier-quote-string>&quot;</identifier-quote-string>
</database-info>
<case-sensitivity plain-identifiers="lower" quoted-identifiers="exact" />
@@ -11,11 +11,10 @@
<schema-mapping>
<introspection-scope>
<node negative="1">
<node kind="database" negative="1">
<name qname="@" />
<node kind="database" negative="1" />
<node kind="database">
<name qname="citations" />
</node>
<node kind="database" qname="citations">
<name qname="solde" />
<node kind="schema" qname="public" />
</node>
</node>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:pg_catalog
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -1,2 +1,2 @@
#n:public
!<md> [893, 0, null, null, -2147483648, -2147483648]
!<md> [47915, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:pg_catalog
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:pg_catalog
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -0,0 +1,2 @@
#n:public
!<md> [47918, 0, null, null, -2147483648, -2147483648]

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.

8
DS/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
DS/.idea/DS.iml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

7
DS/.idea/discord.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

8
DS/.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/DS.iml" filepath="$PROJECT_DIR$/.idea/DS.iml" />
</modules>
</component>
</project>

19
DS/.idea/php.xml generated Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

6
DS/.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

49
DS/index.php Normal file
View File

@@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="fr" data-bs-theme="dark" >
<head>
<meta charset="utf-8">
<title> Acceuil </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body >
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Login.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
$pdo = dbConnect();
?>
<div class="container">
<h1 class="page-title text-center justify-content-center">Se connecter</h1>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="username" class="form-label">Nom d'utilisateur</label>
<input type="text" class="form-control" name="username" id="username" placeholder="fmarquet">
<label for="password" class="form-label">Mot de passe</label>
<input type="password" class="form-control" name="password" id="password" placeholder="********">
<br>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-success">Se connecter</button>
</div>
</form>
<br>
<?php
if(!empty($_POST['username']) && !empty($_POST['password'])){
$login = Login($pdo,$_POST["username"],$_POST["password"]);
if($login != false){
error_log("Login success");
$_SESSION['user_id'] = $login;
echo '<meta http-equiv="refresh" content="0;url=soldes.php">';
} else {
error_log("Login failed");
}
}
?>
<h2 class="page-title text-center justify-content-center">Vous n'avez pas de compte</h2>
<br>
<div class="text-center justify-content-center">
<a href="register.php" class="btn btn-primary">S'inscrire</a>
</div>
</div>
</body>

BIN
DS/marquet.zip Normal file

Binary file not shown.

54
DS/register.php Normal file
View File

@@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="fr" data-bs-theme="dark">
<head>
<meta charset="utf-8">
<title> Register </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Register.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
$pdo = dbConnect();
?>
<div class="container">
<h1 class="page-title text-center justify-content-center">S'inscrire</h1>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="nom" class="form-label">Nom</label>
<input type="text" class="form-control" name="nom" id="nom" placeholder="MARQUET">
<label for="prenom" class="form-label">Prénom</label>
<input type="text" class="form-control" name="prenom" id="prenom" placeholder="Félix">
<label for="password" class="form-label">Mot de passe</label>
<input type="password" class="form-control" name="password" id="password" placeholder="********">
<label for="passwordConfirm" class="form-label">Confirmer le mot de passe</label>
<input type="password" class="form-control" name="passwordConfirm" id="passwordConfirm" placeholder="********">
<p id="password-error" class="text-danger"> </p>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-success" id="signupButton">S'inscrire</button>
</div>
</form>
<?php
if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['password']) && !empty($_POST['passwordConfirm'])){
if($_POST['password'] == $_POST['passwordConfirm']){
$register = Insert($pdo,$_POST["nom"],$_POST["prenom"],$_POST["password"]);
if($register != false){
error_log("Register success");
echo '<meta http-equiv="refresh" content="0;url=index.php">';
} else {
error_log("Register failed");
}
} else {
echo '<script>document.getElementById("password-error").innerHTML = "Les mots de passe ne correspondent pas";</script>';
}
}
?>
<h2 class="page-title">Vous avez déjà un compte</h2>
<div class="text-center justify-content-center">
<a href="index.php" class="btn btn-primary">Se connecter</a>
</div>
</div>
</body>

59
DS/soldes.php Normal file
View File

@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="fr" data-bs-theme="dark">
<head>
<meta charset="utf-8">
<title> Solde </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Soldes.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
$pdo = dbConnect();
if(empty($_SESSION['user_id'])){
echo '<meta http-equiv="refresh" content="0;url=index.php">';
}
?>
<div class="container">
<div class="text-center justify-content-center mt-2">
<a href="src/php/scripts/disconect.php" class="btn btn-danger">Se Deconnecter</a>
</div>
<div class="d-flex flex-column">
<h1 class="page-title text-center justify-content-centers">Soldes</h1>
<?php
if(!empty($_SESSION['user_id'])){
GetUser($pdo,$_SESSION['user_id']);
}
?>
<div>
<h2 class="page-title">Votre Solde</h2>
<?php
DisplaySolde($pdo,$_SESSION['user_id']);
?>
</div>
<div>
<h2 class="page-title">Ajouter un solde</h2>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label for="montant" class="form-label">Montant</label>
<input type="number" class="form-control" name="montant" id="montant" placeholder="100">
<button type="submit" class="btn btn-primary mt-1">Ajouter</button>
</form>
<?php
if(!empty($_POST['montant'])){
$addSolde = AddSolde($pdo,$_SESSION['user_id'],$_POST['montant']);
if($addSolde != false){
error_log("Add solde success");
echo '<meta http-equiv="refresh" content="0;url=soldes.php">';
} else {
error_log("Add solde failed");
}
}
?>
</div>
</div>
</div>
</body>

7
DS/src/php/constants.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
define ("DB_USER", 'postgres');
define ("DB_PASSWORD", 'a');
define ("DB_NAME", 'solde');
define ("DB_SERVER", '172.29.205.116');
define ("DB_PORT", '5432');
?>

36
DS/src/php/db/Login.php Normal file
View File

@@ -0,0 +1,36 @@
<?php
function checkIfExists($pdo, $username){
$query = $pdo->prepare("SELECT COUNT(*) as count FROM \"solde\" WHERE username = :username");
$query->bindParam(':username', $username);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
function Login($pdo, $username, $password){
if(checkIfExists($pdo, $username)){
$query = $pdo->prepare("SELECT user_id, password FROM \"solde\" where username = :username");
$query->bindParam(':username', $username);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if($password == $result['password']){
echo "Login success";
return $result['user_id'];
} else {
echo "Login failed";
return false;
}
} else {
echo '<h3 class="text-danger text-center justify-content-center">Username not found</h3>';
return false;
}
}

View File

@@ -0,0 +1,22 @@
<?php
function Insert($pdo, $nom, $prenom, $password){
$username = strtolower(substr($prenom, 0, 1) . $nom);
$query = $pdo->prepare("INSERT INTO \"solde\" (username, password, solde, name, surname) VALUES (:username, :password, :solde, :name, :surname)");
$query->bindParam(':username', $username);
$query->bindParam(':password', $password);
$query->bindParam(':name', $nom);
$query->bindParam(':surname', $prenom);
$solde = 0;
$query->bindParam(':solde', $solde);
$query->execute();
//Check if user is well created in database
$query = $pdo->prepare("SELECT COUNT(*) as count FROM \"solde\" WHERE username = :username");
$query->bindParam(':username', $username);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}

37
DS/src/php/db/Soldes.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
function DisplaySolde($pdo, $id){
$querry = $pdo->prepare("SELECT username, solde FROM \"solde\" WHERE user_id = :id");
$querry->bindParam(':id', $id);
$querry->execute();
$solde = $querry->fetch();
echo '<table class="table">';
echo '<thead>';
echo '<tr>';
echo '<th scope="col">Nom d\'utilisateur</th>';
echo '<th scope="col">Solde</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
echo '<tr>';
echo '<td>'.$solde['username'].'</td>';
echo '<td>'.$solde['solde'].'</td>';
echo '</tr>';
echo '</tbody>';
echo '</table>';
}
function AddSolde($pdo, $id, $montant){
$querry = $pdo->prepare("UPDATE \"solde\" SET solde = solde + :montant WHERE user_id = :id");
$querry->bindParam(':id', $id);
$querry->bindParam(':montant', $montant);
$querry->execute();
return $querry->fetch();
}
function GetUser($pdo, $id){
$querry = $pdo->prepare("SELECT * FROM \"solde\" WHERE user_id = :id");
$querry->bindParam(':id', $id);
$querry->execute();
$user = $querry->fetch();
echo '<h3 class="page-title">Bonjour '.$user['name'].' '.$user['surname'].'</h3>';
}

View File

@@ -0,0 +1,24 @@
<?php
function dbConnect() //fonction de connexion à la base de données
{
try
{
$db = new PDO('pgsql:host='.DB_SERVER.';port='.DB_PORT.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $exception)
{
error_log('Connection error: '.$exception->getMessage());
return false;
}
return $db;
}
function console_log($data)
{
//Console Log comme en JS
echo '<script>';
echo 'console.log('. json_encode( $data ) .')';
echo '</script>';
}
?>

View File

@@ -0,0 +1,7 @@
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
unset($_SESSION['user_id']);
echo '<meta http-equiv="refresh" content="0;URL=../../../../index.php">';
?>

10
DS/src/sql/schema.sql Normal file
View File

@@ -0,0 +1,10 @@
CREATE TABLE public.solde(
user_id SERIAL NOT NULL ,
username VARCHAR (50) NOT NULL ,
password VARCHAR (50) NOT NULL ,
solde INT NOT NULL ,
name VARCHAR (50) NOT NULL ,
surname VARCHAR (50) NOT NULL ,
CONSTRAINT user_PK PRIMARY KEY (user_id)
)WITHOUT OIDS;

Binary file not shown.

View File

@@ -0,0 +1,90 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Oui....Stiti </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/components/token.php');
require('src/php/components/check.php');
require('src/php/components/user-login.php');
require('src/php/db/Patient.php');
require('src/php/db/Medecin.php');
require('src/php/db/Calendrier.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
checkPatient();
?>
</head>
<body>
<div id="topbar" class="d-flex justify-content-between flex-row">
<div>
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="d-flex flex-row align-items-center gap-3 me-2">
<div class="d-flex flex-row align-items-center gap-3 me-2">
<?php
loginUI($pdo);
?>
</div>
</div>
</div>
<div id="searchbar">
<form action="search.php" class="input-group p-5" method="post">
<input type="text" aria-label="First name" class="form-control" id="nom" name="nom" placeholder="Nom, spécialité, établissement ...">
<input type="text" aria-label="Last name" class="form-control" id="postal" name="postal" placeholder="Où ?">
<button class="btn btn-danger" type="submit" id="button-addon2">Rechercher</button>
</form>
</div>
<div class="h-100">
<div class="row">
<div class="col h-100 border-dark border-3 justify-content-center text-center ms-3 ">
<div class="d-flex flex-column justify-content-center gap-6">
<div>
<form class="mt-3" method="post">
<label for="date">Choisissez une date :</label>
<br>
<?php
echo '<input type="hidden" name="id" id="id" value="' . $_POST['id'] . '">';
echo '<input type="date" name="start" id="date" class="mt-2 form-control" value="' . $_POST['start'] . '">';
?>
<br>
<input type="submit" value="Valider" class="mt-2 btn btn-outline-danger">
</form>
</div>
<div>
<?php
DisplayMedecinCard($pdo, $_POST['id']);
?>
</div>
</div>
</div>
<div class="col-8 h-100 border-start border-dark border-3 me-3">
<div class="mt-3 d-flex flex-column gap-3">
<?php
if(!isset($_POST['start']) || $_POST['start'] == null){
echo '<p class="ms-5 mt-2 fw-bold">Veuillez choisir une date</p>';
}
else{
displayRDVForDate($pdo, $_POST['start'], $_POST['id']);
}
?>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Oui....Stiti </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<body style="background-color: #EEF2F7">
<div id="topbar">
<p id="DoctISEN" class="w-100" style="position: fixed; top: 0px; left: 0px; font-size: 36px">
Doct'ISEN
</p>
</div>
<div class="text-center align-content-center">
<h1>ERROR </h1>
<h2>Veuillez vous connecter</h2>
</div>

View File

@@ -0,0 +1 @@
https://www.figma.com/file/MOlWocRUCAOJnN9WMvIMeC/Projet-PHP-S3?type=design&mode=design&t=6HFvmksSB7bUTQdA-1

View File

@@ -0,0 +1,102 @@
from argon2 import PasswordHasher
from datetime import date
from random import randint
from faker import Faker
def hash_password(password):
ph = PasswordHasher()
return ph.hash(password)
def all(file):
with open(file, "w", encoding="utf-8") as projet:
print("Starting")
for i in range(1, 100):
faker3 = Faker('fr_FR')
adress3 = faker3.street_address()
ville3 = faker3.city()
postal3 = faker3.postcode()
projet.write(f"INSERT INTO lieu (l_adress, l_city, l_postal) VALUES (")
projet.write(f"'{adress3}', '{ville3}', '{postal3}');\n")
print("Lieu generated")
k = 1
for l in range(1, 99):
current_date = date.today().strftime("%Y-%m-%d")
time = "08:00:00 +00:00"
for i in range(1, 100):
for j in range(1, 11):
projet.write(f"INSERT INTO rendez_vous (rdv_date, rdv_time, l_id) VALUES (")
projet.write(f"'{current_date}', '{time}',")
projet.write(f"'{randint(1, 99)}');\n")
time_parts = time.split(':')
hours = int(time_parts[0])
hours = (hours + 1) % 24
time = f"{hours:02d}:{time_parts[1]}:{time_parts[2]}"
k += 1
current_date_parts = current_date.split('-')
year = int(current_date_parts[0])
month = int(current_date_parts[1])
day = int(current_date_parts[2])
if day == 28 and month == 2 and (year % 4 != 0 or (year % 100 == 0 and year % 400 != 0)):
day = 1
month += 1
elif day == 29 and month == 2:
day = 1
month += 1
elif day == 30 and (month == 4 or month == 6 or month == 9 or month == 11):
day = 1
month += 1
elif day == 31:
day = 1
if month == 12:
month = 1
year += 1
else:
month += 1
else:
day += 1
current_date = f"{year:04d}-{month:02d}-{day:02d}"
time = "08:00:00 +00:00"
spe = ["Généraliste", "Cardiologue", "Dermatologue", "Gynécologue", "Ophtalmologue", "ORL", "Pédiatre", "Pneumologue", "Psychiatre", "Rhumatologue", "Urologue", "Kinésitherpeute"]
print("Rdv generated")
for i in range(1, 1000):
faker3 = Faker('fr_FR')
name3 = faker3.first_name()
surname3 = faker3.last_name()
mail3 = faker3.email()
phone3 = faker3.phone_number()
phone3 = phone3.replace(" ", "")
phone3 = phone3.replace(".", "")
phone3 = phone3.replace("+33", "0")
phone3 = phone3.replace("0(0)", "0")
phone3 = phone3.replace("(0)", "0")
postal3 = faker3.postcode()
projet.write(f"INSERT INTO medecin (m_mail, m_name, m_surname, m_phone, m_password, m_postal, m_specialty) VALUES (")
projet.write(f"'{mail3}', '{name3}', '{surname3}', '{phone3}', '{hash_password('a')}")
projet.write(f"', '{postal3}'")
projet.write(f", '{spe[randint(0, len(spe) - 1)]}');\n")
print("Medecin generated")
for i in range(1, 100):
faker2 = Faker('fr_FR')
name2 = faker2.first_name()
surname2 = faker2.last_name()
mail2 = faker2.email()
phone2 = faker2.phone_number()
phone2 = phone2.replace(" ", "")
phone2 = phone2.replace(".", "")
phone2 = phone2.replace("+33", "0")
phone2 = phone2.replace("0(0)", "0")
phone2 = phone2.replace("(0)", "0")
projet.write(f"INSERT INTO patient (p_mail, p_name, p_surname, p_phone, p_password) VALUES (")
projet.write(f"'{mail2}', '{name2}', '{surname2}', '{phone2}', '{hash_password('a')}');\n")
print("Patient generated")
for i in range(1, 97021):
projet.write(f"INSERT INTO propose (rdv_id ,m_id) VALUES (")
projet.write(f"{i}, {randint(1, 999)});\n")
print("Propose generated")
projet.close()
print("Done")
print("Starting generation")
all("projet.sql")
print("Project generated")
print("Passwords for all users are 'a'")

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Forgot Password </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/ResetPassword.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="p-3 m-0 border-0 bd-example m-0 border-0">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">J'ai oublié mon mot de passe praticien</h5>
<form class="px-4 py-3" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com" name="mail">
</div>
<div class="mb-3">
<label for="password" class="form-label">Nouveau mot de passe</label>
<input type="password" class="form-control" id="password" placeholder="Password" name="password">
</div>
<div class="mb-3">
<label for="passwordConfirmation" class="form-label">Confirmation du nouveau mot de passe</label>
<input type="password" class="form-control" id="passwordConfirmation" placeholder="Password" name="passwordConfirmation">
</div>
</div>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-danger logButton">Réinitialiser le mot de passe</button>
</div>
</form>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password']) && !empty($_POST['passwordConfirmation'])){
$mail = ($_POST["mail"]);
$password = ($_POST["password"]);
$passwordConfirmation = ($_POST["passwordConfirmation"]);
if($password == $passwordConfirmation){
if(ResetPraticien::Reset($pdo,$mail,$password)){
error_log("Reset success");
echo '<meta http-equiv="refresh" content="0;url=login-praticien.php">';
} else {
error_log("Reset failed");
echo "<p class='text-center justify-content-center text-danger'>Erreur lors de la réinitialisation du mot de passe</p>";
}
} else {
error_log("Reset failed");
echo "<p class='text-center justify-content-center text-danger'>Les mots de passe ne correspondent pas</p>";
}
}
?>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Forgot Password </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/ResetPassword.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="p-3 m-0 border-0 bd-example m-0 border-0">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">J'ai oublié mon mot de passe</h5>
<form class="px-4 py-3" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com" name="mail">
</div>
<div class="mb-3">
<label for="password" class="form-label">Nouveau mot de passe</label>
<input type="password" class="form-control" id="password" placeholder="Password" name="password">
</div>
<div class="mb-3">
<label for="passwordConfirmation" class="form-label">Confirmation du nouveau mot de passe</label>
<input type="password" class="form-control" id="passwordConfirmation" placeholder="Password" name="passwordConfirmation">
</div>
</div>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-danger logButton">Réinitialiser le mot de passe</button>
</div>
</form>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password']) && !empty($_POST['passwordConfirmation'])){
$mail = ($_POST["mail"]);
$password = ($_POST["password"]);
$passwordConfirmation = ($_POST["passwordConfirmation"]);
if($password == $passwordConfirmation){
if(ResetPatient::Reset($pdo,$mail,$password)){
error_log("Reset success");
echo '<meta http-equiv="refresh" content="0;url=login.php">';
} else {
error_log("Reset failed");
echo "<p class='text-center justify-content-center text-danger'>Erreur lors de la réinitialisation du mot de passe</p>";
}
} else {
error_log("Reset failed");
echo "<p class='text-center justify-content-center text-danger'>Les mots de passe ne correspondent pas</p>";
}
}
?>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Acceuil </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<body>
<?php
require('src/php/db/dbconnect.php');
require('src/php/db/Patient.php');
require('src/php/db/Medecin.php');
require('src/php/constants.php');
require('src/php/components/check.php');
require('src/php/components/token.php');
require('src/php/components/user-login.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
$pdo = dbConnect();
?>
<div id="acceuil">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
<div class="d-flex position-fixed end-0 flex-row align-items-center gap-3 mt-2 top-0">
<?php
loginUI($pdo);
?>
</div>
<div id="rdv">
<p class="text-white fw-bold fs-3">Trouvez un rendez vous avec un medecin</p>
<form action="search.php" class="input-group" method="post">
<input type="text" aria-label="First name" class="form-control" id="nom" name="nom" placeholder="Nom, spécialité">
<input type="text" aria-label="Last name" class="form-control" id="postal" name="postal" placeholder="Où ?">
<button class="btn btn-success" type="submit" id="button-addon2">Rechercher</button>
</form>
</div>
<img src="src/img/img_index.png" alt="img_index" id="img_index">
<div class="d-flex justify-content-center gap-5 w-100" id="cardPos">
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Information</h5>
<h6 class="card-subtitle mb-2 text-body-secondary">Ligue contre le cancer</h6>
<p class="card-text">Mois sans tabac: cest le moment darrêter !</p>
</div>
</div>
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Information</h5>
<h6 class="card-subtitle mb-2 text-body-secondary">Pharmacie Sanchez</h6>
<p class="card-text">Le rôle du phramacien évolue: Venez nous voir.</p>
</div>
</div>
<div class="card" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">Information</h5>
<h6 class="card-subtitle mb-2 text-body-secondary">DoctISEN</h6>
<p class="card-text">Un empechement: Prevenez votre soignant.</p>
</div>
</div>
</div>
<footer class="fixed-bottom m-2 mx-4">
<p>Recherche de praticiens</p>
<p>DoctISEN, 33 QUATER Av. du Champ de Manœuvre, 44470 Carquefou</p>
<p class="text-secondary">Conditions générales d'utilisation • Conditions d'utilisation du site Doct'ISEN • Politique relative à la protection des données personnelles • Politique en matière de cookies • Gestion des cookies et consentement • Règles de référencement • Mentions légales</p>
<p class="text-secondary">Annuaire des médecins du CNOM • Annuaire des chirurgiens-dentistes de l'ONCD • Ordre National des Médecins • Ordre National des Chirurgiens-Dentistes</p>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Login </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Login.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="p-3 m-0 border-0 bd-example m-0 border-0">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">J'ai déjà un compte praticen Doct'ISEN</h5>
<form class="px-4 py-3" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com" name="mail">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password" name="password">
</div>
</div>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-danger logButton">Se connecter</button>
</div>
</form>
<div class="text-center justify-content-center">
<a href="forgotPassword-praticien.php" class="text-center justify-content-center">
<p class="text-center justify-content-center text-danger">Mot de passe oublié ?</p>
</a>
</div>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password'])){
$login = LoginMedecin::Login($pdo,$_POST["mail"],$_POST["password"]);
if($login != false){
error_log("Login success");
$_SESSION['token'] = base64_encode("medecin:".strval($login));
echo '<meta http-equiv="refresh" content="0;url=rdv-praticien.php">';
} else {
error_log('Erreur de connexion');
}
}
?>
</div>
</div>
<div class="p-3 m-0 border-0 bd-example m-0 border-0 text-center justify-content-center mt-5">
<div class="dropdown-menu text-center align-content-center">
<h5 class="fw-bold">Nouveau sur praticien Doct'ISEN?</h5>
<a href="signup-praticien.php" class="">
<button class="btn btn-danger logButton">S'inscrire</button>
</a>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Login </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Login.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
$pdo = dbConnect();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="h-100 d-flex flex-column gap-0 justify-content-center text-center w-50 mx-6">
<div class="p-3 m-0 border-0 bd-example m-0 border-0">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">J'ai déjà un compte Doct'ISEN</h5>
<form class="px-4 py-3" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com" name="mail">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password" name="password">
</div>
</div>
<div class="text-center justify-content-center">
<button type="submit" class="btn btn-danger logButton">Se connecter</button>
</div>
</form>
<div class="text-center justify-content-center">
<a href="forgotPassword.php" class="text-center justify-content-center">
<p class="text-center justify-content-center">Mot de passe oublié ?</p>
</a>
</div>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password'])){
$login = LoginPatient::Login($pdo,$_POST["mail"],$_POST["password"]);
if($login != false){
error_log("Login success");
$_SESSION['token'] = base64_encode("patient:".strval($login));
echo '<meta http-equiv="refresh" content="0;url=index.php">';
} else {
error_log('Erreur de connexion');
}
}
?>
</div>
</div>
<div class="p-3 m-0 border-0 bd-example m-0 border-0 text-center justify-content-center mt-5">
<div class="dropdown-menu text-center align-content-center">
<h5 class="fw-bold">Nouveau sur Doct'ISEN?</h5>
<a href="signup.php" class="">
<button class="btn btn-danger logButton">S'inscrire</button>
</a>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> RDV </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Login.php');
require('src/php/components/check.php');
require('src/php/components/token.php');
require('src/php/components/user-login.php');
require('src/php/db/Medecin.php');
require('src/php/db/Patient.php');
require('src/php/db/Rdv-praticien.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
checkMedecin();
?>
</head>
<body>
<div id="topbar" class="d-flex justify-content-between flex-row">
<div>
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="d-flex flex-row align-items-center gap-3 me-2">
<div class="d-flex flex-row align-items-center gap-3 me-2">
<?php
loginUI($pdo);
?>
</div>
</div>
</div>
<div class="h-100">
<div class="d-flex flex-row flex-wrap my-5 mx-5 gap-5 justify-content-center text-center">
<?php try {
$token = tokenDecode();
$rdv = getAllNiche($pdo, $token[1]);
if ($rdv != null && count($rdv) > 0){
foreach ($rdv as $row) {
$dateStr = $row["rdv_date"];
$dateString = new DateTime($dateStr);
$date = $dateString->format('d F Y');
$uglyTime = $row["rdv_time"];
$dateTime = new DateTime($uglyTime);
$time = $dateTime->format('H:i');
$patient = $row["patient"];
$mail = $row["p_mail"];
$phone = $row["p_phone"];
if ($mail != null){
echo '<div class="card rounded-4 mx-2 pointer">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>$date</p>";
echo "<p>$time</p>";
echo '</div>';
echo '</div>';
echo '<div class="card-body">';
echo "<h5 class='card-title'>$patient</h5>";
echo "<a href='mailto:" . $mail . "' class='card-subtitle mb-2 text-body-secondary'>$mail</a>";
echo '<br>';
echo "<a href='tel:" . "0" . $phone . "' class='card-subtitle mb-2 text-body-secondary'>$phone</a>";
echo '</div>';
echo '</div>';
} else {
echo '<div class="card rounded-4 mx-2 pointer">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>$date</p>";
echo "<p>$time</p>";
echo '</div>';
echo '</div>';
echo '<div class="card-body">';
echo "<h5 class='card-title'>Vous n'avez pas de" . "<br>" . "patient pour ce créneau</h5>";
echo '</div>';
echo '</div>';
}
}
} else {
echo 'error';
}
} catch (PDOException $e) {
error_log('Database query error: ' . $e->getMessage());
echo "Error fetching data from the database";
} ?>
</div>
<div class="d-flex flex-row flex-wrap my-5 mx-5 gap-5 justify-content-center text-center">
<?php
$token = tokenDecode();
$medID = $token[1];
$lieux = getAllLieux($pdo);
echo "<form action='src/php/db/scripts/createRDVToDB.php' method='post'>";
echo "<input type='hidden' name='medID' value='$medID'>";
echo "<input class='form-control' type='date' name='date'>";
echo "<input class='form-control' type='time' name='time'>";
echo "<select class='form-select' name='lieu' id='lieu'>";
echo "<option value=''>Choisissez un lieu</option>";
if ($lieux != null && count($lieux) > 0){
foreach ($lieux as $row){
$adress = $row["l_adress"];
$postal = $row["l_postal"];
$city = $row["l_city"];
$lieu = $adress . ', ' . $postal . ', ' . $city;
echo "<option value='$lieu'>$adress, $postal, $city</option>";
}
}
echo "</select>";
echo "<br><br>";
echo "<button type='submit' name='createRDV' class='btn btn-danger'>Créer un rendez-vous</button>";
echo "</form>";
?>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,239 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> RDV </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Login.php');
require('src/php/components/check.php');
require('src/php/components/token.php');
require('src/php/components/user-login.php');
require('src/php/db/Patient.php');
require('src/php/db/Medecin.php');
require('src/php/db/Rdv.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
checkPatient();
?>
</head>
<body>
<div id="topbar" class="d-flex justify-content-between flex-row">
<div>
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="d-flex flex-row align-items-center gap-3 me-2">
<div class="d-flex flex-row align-items-center gap-3 me-2">
<?php
loginUI($pdo);
?>
</div>
</div>
</div>
<div class="h-100">
<div class="row">
<div class="col-3 border-end border-dark border-3 h-100 mt-2 text-center d-flex flex-column justify-content-center">
<div class="d-flex flex-column">
<div class="border-bottom pb-3 border-dark border-3 align-self-center">
<h5 class="text-center">Vos rendez-vous à venir</h5>
<?php try {
$token = tokenDecode();
$rdv = getRdvByPatient($pdo, $token[1]);
if ($rdv != null && count($rdv) > 0){
foreach ($rdv as $row) {
$dateStr = $row["rdv_date"];
$dateString = new DateTime($dateStr);
$date = $dateString->format('d F Y');
$uglyTime = $row["rdv_time"];
$dateTime = new DateTime($uglyTime);
$time = $dateTime->format('H:i');
$medic = $row["medecin"];
$occupation = $row["m_specialty"];
echo '<div class="card rounded-4 mx-2">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>$date</p>";
echo "<p>$time</p>";
echo '</div>';
echo '</div>';
echo '<div class="card-body">';
echo "<h5 class='card-title'>$medic</h5>";
echo "<h6 class='card-subtitle mb-2 text-body-secondary'>$occupation</h6>";
echo '</div>';
echo '<div class="card-footer">';
echo "<p>Preparer la consulation</p>";
echo '</div>';
echo '</div>';
}
} else {
echo "Vous n'avez pas de rendez-vous à venir";
}
} catch (PDOException $e) {
error_log('Database query error: ' . $e->getMessage());
echo "Error fetching data from the database";
}
?>
</div>
<div class="mt-3 align-self-center d-flex flex-column gap-2">
<h5 class="text-center">Vos rendez-vous passés</h5>
<?php try {
$token = tokenDecode();
$rdv = getPastRdvByPatient($pdo, $token[1]);
if ($rdv != null && count($rdv) > 0){
foreach ($rdv as $row) {
$dateStr = $row["rdv_date"];
$dateString = new DateTime($dateStr);
$date = $dateString->format('d F Y');
$uglyTime = $row["rdv_time"];
$dateTime = new DateTime($uglyTime);
$time = $dateTime->format('H:i');
$medic = $row["medecin"];
$occupation = $row["m_specialty"];
$MedID = $row["m_id"];
echo '<div class="card rounded-4 mx-2 pointer">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>$date</p>";
echo "<p>$time</p>";
echo '</div>';
echo '</div>';
echo '<div class="card-body">';
echo "<h5 class='card-title'>$medic</h5>";
echo "<h6 class='card-subtitle mb-2 text-body-secondary'>$occupation</h6>";
echo '</div>';
echo '<div class="card-footer">';
echo '<form method="post" action="calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$MedID.'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" class="btn btn-link">Reprendre rendez-vous</button>';
echo '</form>';
echo '</div>';
echo '</div>';
}
} else {
echo "Vous n'avez pas de rendez-vous passé";
}
} catch (PDOException $e) {
error_log('Database query error: ' . $e->getMessage());
echo "Error fetching data from the database";
}
?>
</div>
</div>
</div>
<div class="col border-end border-dark border-3 h-100 mt-2 text-center d-flex flex-column justify-content-center">
<?php
$token = tokenDecode();
$rdv = getNextRdvByPatient($pdo, $token[1]);
if($rdv != null) {
$dateStr = $rdv["rdv_date"];
$dateString = new DateTime($dateStr);
$date = $dateString->format('d F Y');
$uglyTime = $rdv["rdv_time"];
$dateTime = new DateTime($uglyTime);
$time = $dateTime->format('H:i');
$medic = $rdv["medecin"];
$occupation = $rdv["m_specialty"];
$patient = $rdv["patient"];
$adresse = $rdv["adresse"];
$ville = $rdv["ville"];
$MedID = $rdv["m_id"];
echo '<div class="card rounded-4 mx-2">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>$date</p>";
echo "<p>$time</p>";
echo '</div>';
echo '</div>';
echo '<div class="card-body">';
echo "<h5 class='card-title'>$medic</h5>";
echo "<h6 class='card-subtitle mb-2 text-body-secondary'>$occupation</h6>";
echo '<form action="/src/php/db/scripts/CancelRDV.php" method="post">';
echo '<input type="hidden" name="rdv_id" value="'.$rdv["rdv_id"].'">';
echo '<input type="hidden" name="medecin_id" id="id" value="'.$MedID.'">';
echo '<input type="hidden" name="date" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" name="move_button" class="btn btn-outline-danger">Déplacer le RDV</button>';
echo '</form>';
echo '<form action="/src/php/db/scripts/CancelRDV.php" method="post">';
echo '<input type="hidden" name="rdv_id" value="'.$rdv["rdv_id"].'">';
echo '<br>';
echo '<button type="submit" name="cancel_button" class="btn btn-outline-danger">Annuler RDV</button>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '<div class="card rounded-4 mx-2 mt-3">';
echo '<div class="card-body">';
echo '<h5 class="card-title">Préparer la consulation</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">Pour gagner du temps et améliorer votre prise en charge.</h6>';
echo '<form action="src/php/db/scripts/uploadFile.php" method="post" enctype="multipart/form-data">';
echo '<label for="file">Sélectionner un fichier :</label>';
echo '<input type="hidden" name="rdv_id" value="'.$rdv["rdv_id"].'">';
echo '<input type="file" class="form-control" name="file" id="file" accept=".pdf, .jpeg, .jpg, .png" disabled>';
echo '<br><br>';
echo '<input type="submit" class="btn border-black border-1 disabled" name="submit" value="Envoyer le fichier">';
echo '<h6 class="card-subtitle text-danger">Maintenance en cours.</h6>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '<div class="card rounded-4 mx-2 mt-3">';
echo '<div class="card-body">';
echo '<h5 class="card-title">Patient</h5>';
echo "<h6 class='card-subtitle mb-2 text-body-secondary'>$patient</h6>";
echo '</div>';
echo '</div>';
echo '<div class="card rounded-4 mx-2 mt-3">';
echo '<div class="card-body">';
echo '<h5 class="card-title">Lieu de la consulation</h5>';
echo "<h6 class='card-subtitle mb-2 text-body-secondary'>$adresse<br>";
echo "$ville<br></h6>";
echo '</div>';
echo '</div>';
}else{
echo '<div class="card rounded-4 mx-2 pointer">';
echo '<div class="card-header bg-danger">';
echo '<div class="d-flex flex-row justify-content-between text-white">';
echo "<p>Vous n'avez pas de rendez-vous à venir</p>";
echo '</div>';
echo '</div>';
echo '</div>';
}
?>
</div>
<div class="col h-100">
<form class="input-group mt-5" method="post" action="search.php">
<input type="text" aria-label="First name" class="form-control" id="nom" name="nom" placeholder="Nom, spécialité">
<input type="text" aria-label="Last name" class="form-control" id="postal" name="postal" placeholder="Où ?">
<button class="btn btn-danger me-3" type="submit" id="button-addon2">Rechercher</button>
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Recherche </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/components/token.php');
require('src/php/components/check.php');
require('src/php/components/user-login.php');
require('src/php/db/Patient.php');
require('src/php/db/Medecin.php');
require ('src/php/db/Search.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
?>
</head>
<body>
<div id="topbar" class="d-flex justify-content-between flex-row">
<div>
<a href="index.php">
<p id="DoctISEN">
Doct'ISEN
</p>
</a>
</div>
<div class="d-flex flex-row align-items-center gap-3 me-2">
<div class="d-flex flex-row align-items-center gap-3 me-2">
<?php
loginUI($pdo);
?>
</div>
</div>
</div>
<div id="searchbar">
<form class="input-group p-5" action="search.php" method="post">
<input type="text" aria-label="First name" class="form-control" id="nom" name="nom" placeholder="Nom, spécialité">
<input type="text" aria-label="Last name" class="form-control" id="postal" name="postal" placeholder="Où ?">
<button class="btn btn-danger" type="submit" id="button-addon2">Rechercher</button>
</form>
</div>
<?php
search($pdo, $_POST['nom'], $_POST['postal']);
?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,115 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Connexion </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<script src="src/js/signup.js" defer></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Signup.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="signInSecondaryCard p-3 border-0 bd-example text-center justify-content-center">
<div class="dropdown-menu text-center align-content-center">
<h5 class="fw-bold">J'ai déjà un compte praticien Doct'ISEN?</h5>
<a href="login-praticien.php" class="">
<button class="btn btn-danger logButton">Se connecter</button>
</a>
</div>
</div>
<div class="SignInPrimaryCard p-3 border-0 bd-example border-0 text-center justify-content-center">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">Nouveau praticien sur Doct'ISEN ?</h5>
<form class="px-4 py-3" method="post">
<div class="align-content-center">
<div class="mb-3">
<label for="name" class="form-label align-baseline">Nom</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Veuillez mettre votre nom">
</div>
<div class="mb-3">
<label for="surname" class="form-label">Prénom</label>
<input type="text" class="form-control" id="surname" name="surname" placeholder="Veuillez mettre votre prénom">
</div>
<div class="mb-3">
<label for="phone" class="form-label">Numéro de téléphone</label>
<input type="tel" pattern="[0-9]{10}" class="form-control" id="phone" name="phone" placeholder="Numéro de téléphone">
</div>
<div class="mb-3">
<label for="mail" class="form-label">Email address</label>
<input type="email" class="form-control" id="mail" name="mail" placeholder="email@example.com">
</div>
<div class="mb-3">
<label for="mailConfirmation" class="form-label">Email address confirmation</label>
<input type="email" class="form-control" id="mailConfirmation" name="mailConfirmation" placeholder="email@example.com">
<p class="text-danger fw-bold" id="mail-error"></p>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Password">
</div>
<div class="mb-3">
<label for="passwordConfirmation" class="form-label">Password Confirmation</label>
<input type="password" class="form-control" id="passwordConfirmation" name="passwordConfirmation" placeholder="Password">
<p class="text-danger fw-bold" id="password-error"></p>
</div>
<div class="mb-3">
<label for="codePostal" class="form-label">Code Postal</label>
<input type="text" pattern="[0-9]{5}" class="form-control" id="codePostal" name="codePostal" placeholder="Code Postal">
</div>
<div class="mb-3">
<label for="specialite" class="form-label">Spécialité</label>
<input type="text" class="form-control" id="specialite" name="specialite" placeholder="Spécialité">
</div>
<div class="align-content-center text-center ">
<button type="submit" class="btn btn-danger logButton disabled" id="signupButton">Se connecter</button>
</div>
</form>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password']) && !empty($_POST['name']) && !empty($_POST['surname']) && !empty($_POST['phone']) && !empty($_POST['password']) && !empty($_POST['passwordConfirmation']) && !empty($_POST['mailConfirmation']) && !empty($_POST['codePostal']) && !empty($_POST['specialite'])){
$mail = ($_POST["mail"]);
$password = ($_POST["password"]);
$name = ($_POST["name"]);
$surname = ($_POST["surname"]);
$phone = ($_POST["phone"]);
$codePostal = ($_POST["codePostal"]);
$specialite = ($_POST["specialite"]);
if(SignupMedecin::insertMedecin($pdo,$name,$surname,$mail, $password,$specialite,$phone,$codePostal)){
error_log("Signup success");
$_SESSION['id'] = $mail;
echo '<meta http-equiv="refresh" content="0;url=index.php">';
} else {
error_log("Erreur d'inscription");
}
}
else{
error_log("Un champ n'est pas rempli");
}
?>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Connexion </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"><link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<script src="src/js/signup.js" defer></script>
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>
<?php
require('src/php/db/dbconnect.php');
require('src/php/constants.php');
require('src/php/db/Signup.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
session_start();
?>
<body style="background-color: #EEF2F7">
<div id="topbar">
<a href="index.php">
<p id="DoctISEN" class="top-0">
Doct'ISEN
</p>
</a>
</div>
<div class="signInSecondaryCard p-3 m-0 border-0 bd-example m-0 border-0 text-center justify-content-center mt-5">
<div class="dropdown-menu text-center align-content-center">
<h5 class="fw-bold">J'ai déjà un compte Doct'ISEN?</h5>
<a href="login.php" class="">
<button class="btn btn-danger logButton">Se connecter</button>
</a>
</div>
</div>
<div class="SignInPrimaryCard p-3 m-0 border-0 bd-example m-0 border-0 text-center justify-content-center">
<div class="loginInsideCard dropdown-menu">
<h5 class="text-center fw-bold">Nouveau sur Doct'ISEN ?</h5>
<form class="px-4 py-3" method="post">
<div class="align-content-center">
<div class="mb-3">
<label for="Name" class="form-label align-baseline">Nom</label>
<input type="text" class="form-control" id="Name" name="name" placeholder="Veuillez mettre votre nom">
</div>
<div class="mb-3">
<label for="FirstName" class="form-label">Prénom</label>
<input type="text" class="form-control" id="FirstName" name="surname" placeholder="Veuillez mettre votre prénom">
</div>
<div class="mb-3">
<label for="Num" class="form-label">Numéro de téléphone</label>
<input type="tel" pattern="[0-9]{10}" class="form-control" id="Num" name="phone" placeholder="Numéro de téléphone">
</div>
<div class="mb-3">
<label for="mail" class="form-label">Email address</label>
<input type="email" class="form-control" id="mail" name="mail" placeholder="email@example.com">
</div>
<div class="mb-3">
<label for="mailConfirmation" class="form-label">Email address confirmation</label>
<input type="email" class="form-control" id="mailConfirmation" name="mailConfirmation" placeholder="email@example.com">
<p class="text-danger fw-bold" id="mail-error"></p>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password" placeholder="Password">
</div>
<div class="mb-3">
<label for="passwordConfirmation" class="form-label">Password Confirmation</label>
<input type="password" class="form-control" id="passwordConfirmation" name="passwordConfirmation" placeholder="Password">
<p class="text-danger fw-bold" id="password-error"></p>
</div>
<div class="align-content-center text-center ">
<button type="submit" class="btn btn-danger logButton disabled" id="signupButton">Se connecter</button>
</div>
</form>
<?php
if(!empty($_POST['mail']) && !empty($_POST['password']) && !empty($_POST['name']) && !empty($_POST['surname']) && !empty($_POST['phone']) && !empty($_POST['password']) && !empty($_POST['passwordConfirmation']) && !empty($_POST['mailConfirmation'])){
$mail = ($_POST["mail"]);
$password = ($_POST["password"]);
$name = ($_POST["name"]);
$surname = ($_POST["surname"]);
$phone = ($_POST["phone"]);
if(SignupPatient::Insert($pdo,$name,$surname,$mail,$password,$phone)){
error_log("Signup success");
$_SESSION['id'] = $mail;
echo '<meta http-equiv="refresh" content="0;url=index.php">';
} else {
error_log('Erreur de connexion');
}
}
else{
error_log('Erreur de connexion');
}
?>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,117 @@
#DoctISEN{
font-family: 'Just Me Again Down Here', cursive;
color: white;
font-size: 36px
}
#topbar{
background-color: #ff0000;
height: 6vh;
width: 100%;
}
#acceuil{
background-color: #ff0000;
height: 50vh;
}
.text-red-700{
color: #842029;
}
#rdv{
position: fixed;
top: 15%;
left: 15%;
}
#img_index{
max-width: 100%;
max-height: 100%;
position: fixed;
right: 0;
top: 6vh;
}
#cardPos{
position: fixed;
top: 48vh;
}
.loginPrimaryCard{
position: fixed;
top: 15%;
left: 30%;
width: 40%;
height: 70%;
}
.loginSecondaryCard{
position: fixed;
top: 45%;
left: 30%;
width: 40%;
height: 70%;
}
.loginInsideCard{
padding-left: 15%;
padding-right: 15%;
padding-top: 5%;
}
.logButton{
width: 30%;
height: 100%;
background-color: #ff0000;
color: white;
font-weight: bold;
}
.pointer{
cursor: pointer;
}
.signInSecondaryCard{
left: 30%;
width: 40%;
}
.SignInPrimaryCard{
left: 30%;
width: 40%;
}
#searchbar{
background-color: #ff0000;
}
.gap-6 {
gap: 22rem !important;
}
.ms-6{
margin-left: 6rem !important;
}
.mx-6{
margin-left: 24rem !important;
margin-right: 24rem !important;
}
.thumbnail{
max-width: 100%;
height: auto;
}
.cardImg{
width: 17%;
}
a{
text-decoration: none;
}
a:hover{
text-decoration: underline;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -0,0 +1,43 @@
function checkMailMatch(mailContainer, mailConfirmContainer, signupButton) {
if (mailContainer.value !== mailConfirmContainer.value) {
signupButton.classList.add("disabled");
document.getElementById("mail-error").innerHTML = "Emails don't match";
} else {
signupButton.classList.remove("disabled");
document.getElementById("mail-error").innerHTML = "";
}
}
function checkPasswordMatch(passwordContainer, passwordConfirmContainer, signupButton) {
if (passwordContainer.value !== passwordConfirmContainer.value) {
signupButton.classList.add("disabled");
document.getElementById("password-error").innerHTML = "Passwords don't match";
} else {
signupButton.classList.remove("disabled");
document.getElementById("password-error").innerHTML = "";
}
}
document.addEventListener("DOMContentLoaded", function() {
const mailContainer = document.getElementById("mail");
const mailConfirmContainer = document.getElementById("mailConfirmation");
const passwordContainer = document.getElementById("password");
const passwordConfirmContainer = document.getElementById("passwordConfirmation");
const signupButton = document.getElementById("signupButton");
mailContainer.addEventListener("keyup", function() {
checkMailMatch(mailContainer, mailConfirmContainer, signupButton);
});
mailConfirmContainer.addEventListener("keyup", function() {
checkMailMatch(mailContainer, mailConfirmContainer, signupButton);
});
passwordContainer.addEventListener("keyup", function() {
checkPasswordMatch(passwordContainer, passwordConfirmContainer, signupButton);
});
passwordConfirmContainer.addEventListener("keyup", function() {
checkPasswordMatch(passwordContainer, passwordConfirmContainer, signupButton);
});
});

View File

@@ -0,0 +1,50 @@
<?php
function checklogin(){
if(isset($_SESSION['token'])){
return true;
} else {
return false;
}
}
function checkMedecin(){
if(isset($_SESSION['token'])){
$token = tokenDecode();
if($token[0] == "medecin"){
return true;
} else {
if($token[0] == "patient"){
echo '<meta http-equiv="refresh" content="0;url=index.php">';
return false;
} else {
echo '<meta http-equiv="refresh" content="0;url=login-praticien.php">';
return false;
}
}
} else {
echo '<meta http-equiv="refresh" content="0;url=index.php">';
return false;
}
}
function checkPatient(){
if(isset($_SESSION['token'])){
$token = tokenDecode();
if($token[0] == "patient"){
return true;
} else {
if($token[0] == "medecin"){
echo '<meta http-equiv="refresh" content="0;url=index.php">';
return false;
} else {
echo '<meta http-equiv="refresh" content="0;url=login.php">';
return false;
}
}
} else {
echo '<meta http-equiv="refresh" content="0;url=index.php">';
return false;
}
}
?>

View File

@@ -0,0 +1,7 @@
<?php
function tokenDecode(){
$token = base64_decode($_SESSION['token']);
$token = explode(":",$token);
return $token;
};
?>

View File

@@ -0,0 +1,30 @@
<?php
function loginUI($pdo){
if (checklogin()){
$token = tokenDecode();
if ($token[0] == "patient" ){
$user = Patient::getPatientFromId($pdo, $token[1]);
$mail = $user['p_mail'];
$surname = $user['p_surname'];
$name = $user['p_name'];
} else {
$user = Medecin::getMedecinFromId($pdo, $token[1]);
$mail = $user['m_mail'];
$surname = $user['m_surname'];
$name = $user['m_name'];
}
echo '<div class="d-flex flex-row align-items-center gap-3 me-2">
<img src="https://www.gravatar.com/avatar/' . md5($mail) . '?s=64" alt="avatar" id="avatar" style="width: 14.3%; height: auto; border-radius: 50%">
<div>
<a href="src/php/db/scripts/deconnexion.php" class="text-white fw-bold mt-3 link-underline-opacity-75-hover link-underline link-underline-opacity-0 link-offset-3-hover link-underline-light">'.$surname." ".$name.'</a>
</div>';
if($token[0] == "patient"){
echo '<a href="rdv.php" class="text-white fw-bold link-underline-opacity-75-hover link-underline link-underline-opacity-0 link-offset-3-hover link-underline-light">Mes rendez-vous</a></div>';
} else {
echo '<a href="rdv-praticien.php" class="text-white fw-bold link-underline-opacity-75-hover link-underline link-underline-opacity-0 link-offset-3-hover link-underline-light">Mon calendrier</a></div>';
}
} else {
echo '<a href="login-praticien.php"> <button type="button" class="btn btn-danger" style="top: 0.4375em;">Vous êtes praticien ?</button> </a><a href="login.php"> <button type="button" class="btn btn-danger" style="top: 0.4375em;">Se connecter</button></a><p> </p>';
}
}
?>

View File

@@ -0,0 +1,7 @@
<?php
define ("DB_USER", '');
define ("DB_PASSWORD", '');
define ("DB_NAME", '');
define ("DB_SERVER", '');
define ("DB_PORT", '');
?>

View File

@@ -0,0 +1,82 @@
<?php
function selectRDVTimeByID($pdo, $id){
$query = $pdo->prepare("SELECT * FROM rendez_vous WHERE rdv_id = :id");
$query->bindParam(':id', $id);
$query->execute();
$result = $query->fetchAll();
if (!empty($result)) {
return $result[0]['rdv_time'];
} else {
return null;
}
}
function selectRDVForDate($pdo, $date, $medecin){
$availableHours = array();
$query = $pdo->prepare("select * from rendez_vous rdv join public.propose p using (rdv_id) where p.m_id = :m_id and rdv.rdv_date = :date AND rdv.p_id IS NULL ORDER BY rdv_time ASC");
$query->bindParam(':date', $date);
$query->bindParam(':m_id', $medecin);
$query->execute();
$outerResult = $query->fetchAll();
foreach ($outerResult as $row) {
array_push($availableHours, $row['rdv_id']);
}
return $availableHours;
}
function displayRDVForDate($pdo, $date, $medecin){
$availableHours = selectRDVForDate($pdo, $date, $medecin);
if(!$availableHours){
echo '<p class="ms-5 mt-2 fw-bold">Aucun rendez-vous disponible</p>';
}
else{
echo '<p class="ms-5 mt-2 fw-bold">Rendez-vous disponible :</p>';
foreach ($availableHours as $hour){
$hourValue = selectRDVTimeByID($pdo, $hour);
$hourValue = substr($hourValue, 0, 5);
$token = tokenDecode();
$patient = $token[1];
echo '<a href="./src/php/db/scripts/addRDVToDB.php?id='.$hour.'&patient='.$patient.'" class="btn btn-danger w-100">'.$hourValue.'</a>';
}
}
}
function DisplayMedecinCard($pdo, $medecin){
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_id = :id");
$query->bindParam(':id', $medecin);
$query->execute();
$result = $query->fetchAll();
foreach ($result as $row){
echo '<div class="card mb-3">';
echo '<div class="row g-0">';
echo '<div class="col-md-4">';
$imageUrl = 'https://thispersondoesnotexist.com';
echo '<img src="' . $imageUrl . '" alt="doctor" class="img-fluid rounded-start" width="300" height="300">';
echo '</div>';
echo '<div class="col-md-8">';
echo '<div class="card-body">';
echo '<h5 class="card-title">'.$row['m_name'].' '.$row['m_surname'].'</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">'.$row['m_specialty'].'</h6>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
}
function addRDVToDBThenRedirect($pdo, $rdv, $patient){
$query = $pdo->prepare("UPDATE rendez_vous SET p_id = :p_id WHERE rdv_id = :rdv_id");
$query->bindParam(':p_id', $patient);
$query->bindParam(':rdv_id', $rdv);
$query->execute();
//Redirect to the rdv.php page
echo '<meta http-equiv="refresh" content="0;URL=../../../rdv.php">';
}
?>

View File

@@ -0,0 +1,80 @@
<?php
class LoginPatient {
public static function checkMail($pdo, $mail) {
$query = $pdo->prepare("SELECT COUNT(*) as count FROM patient WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
public static function Login($pdo,$mail,$password) {
if(LoginPatient::checkMail($pdo,$mail)){
$query = $pdo->prepare("SELECT p_id,p_password FROM patient where p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if(password_verify($password,$result['p_password'])){
echo "Login success";
return $result['p_id'];
} else {
echo "Login failed";
return false;
}
} else {
echo "Mail not found";
return false;
}
}
}
class LoginMedecin {
public static function checkMail($pdo, $mail) {
$query = $pdo->prepare("SELECT COUNT(*) as count FROM medecin WHERE m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
public static function Login($pdo,$mail,$password) {
if(LoginMedecin::checkMail($pdo,$mail)){
$query = $pdo->prepare("SELECT m_id, m_password FROM medecin where m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if(password_verify($password,$result['m_password'])){
echo "Login success";
return $result['m_id'];
} else {
echo "Login failed";
return false;
}
} else {
echo "Mail not found";
return false;
}
}
}
?>

View File

@@ -0,0 +1,46 @@
<?php
class Medecin
{
public static function getMedecinFromId($pdo,$id) {
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_id = :id");
$query->bindParam(':id', $id);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getMedecin($pdo,$mail) {
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getMedecinByNom($pdo,$nom) {
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_name = :nom");
$query->bindParam(':nom', $nom);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getMedecinBySpecialite($pdo,$specialite) {
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_specialty = :specialite");
$query->bindParam(':specialite', $specialite);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getMedecinByNameAndSpecialite($pdo,$nom,$specialite) {
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_name = :nom AND m_specialty = :specialite");
$query->bindParam(':nom', $nom);
$query->bindParam(':specialite', $specialite);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
}

View File

@@ -0,0 +1,31 @@
<?php
class Patient {
public static function getPatientFromId($pdo,$id) {
$query = $pdo->prepare("SELECT * FROM patient WHERE p_id = :id");
$query->bindParam(':id', $id);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getPatient($pdo,$mail) {
$query = $pdo->prepare("SELECT * FROM patient WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function GetRDV($pdo,$mail){
$query = $pdo->prepare("SELECT * FROM rendez_vous WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
}
?>

View File

@@ -0,0 +1,53 @@
<?php
function getAllNiche($pdo, $id){
$statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(p_name,' ', p_surname) as patient, p_mail, p_phone
FROM rendez_vous
LEFT JOIN patient ON rendez_vous.p_id = patient.p_id
INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id
INNER JOIN medecin ON propose.m_id = medecin.m_id
INNER JOIN lieu ON lieu.l_id = rendez_vous.l_id
WHERE CURRENT_DATE = rdv_date AND medecin.m_id = :id
ORDER BY rdv_date, rdv_time ASC");
$statement->bindParam(':id', $id);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result;
} else {
return null;
}
}
function getLieuID($pdo, $adress, $postal, $city){
$statement = $pdo->prepare("SELECT l_id FROM lieu WHERE l_adress = :adress AND l_city = :city AND l_postal = :postal");
$statement->bindParam(':adress', $adress);
$statement->bindParam(':city', $city);
$statement->bindParam(':postal', $postal);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result['l_id'];
} else {
return null;
}
}
function getAllLieux($pdo){
$statement = $pdo->prepare("SELECT l_adress, l_city, l_postal FROM lieu");
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result;
} else {
return null;
}
}
?>

View File

@@ -0,0 +1,72 @@
<?php
function getRdvByPatient($pdo, $id){
$statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville
FROM rendez_vous
INNER JOIN patient ON rendez_vous.p_id = patient.p_id
INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id
INNER JOIN medecin ON propose.m_id = medecin.m_id
INNER JOIN lieu on lieu.l_id = rendez_vous.l_id
WHERE NOW() <= (rdv_date + rdv_time) AND patient.p_id = :id
ORDER BY rdv_date, rdv_time ASC");
$statement->bindParam(':id', $id);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result;
} else {
return null;
}
}
function getPastRdvByPatient($pdo, $id){
$statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville
FROM rendez_vous
INNER JOIN patient ON rendez_vous.p_id = patient.p_id
INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id
INNER JOIN medecin ON propose.m_id = medecin.m_id
INNER JOIN lieu on lieu.l_id = rendez_vous.l_id
WHERE NOW() > (rdv_date + rdv_time) AND patient.p_id = :id
ORDER BY rdv_date, rdv_time ASC");
$statement->bindParam(':id', $id);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result;
} else {
return null;
}
}
function getNextRdvByPatient($pdo, $id){
$statement = $pdo->prepare("SELECT rdv_date, rdv_time, rendez_vous.rdv_id, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville
FROM rendez_vous
INNER JOIN patient ON rendez_vous.p_id = patient.p_id
INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id
INNER JOIN medecin ON propose.m_id = medecin.m_id
INNER JOIN lieu on lieu.l_id = rendez_vous.l_id
WHERE NOW() <= (rdv_date + rdv_time) AND patient.p_id = :id
ORDER BY rdv_date, rdv_time ASC");
$statement->bindParam(':id', $id);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
if (!empty($result)) {
return $result;
} else {
return null;
}
}
function CancelRDV($pdo, $id){
$statement = $pdo->prepare("DELETE FROM propose WHERE rdv_id = :id");
$statement->bindParam(':id', $id);
$statement->execute();
$statement = $pdo->prepare("DELETE FROM rendez_vous WHERE rdv_id = :id");
$statement->bindParam(':id', $id);
$statement->execute();
}

View File

@@ -0,0 +1,74 @@
<?php
class ResetPraticien{
static function checkMail($pdo, $mail) {
$query = $pdo->prepare("SELECT COUNT(*) as count FROM medecin WHERE m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
static function getIdFromMail($pdo, $mail) {
$query = $pdo->prepare("SELECT m_id FROM medecin WHERE m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result['m_id'];
}
public static function Reset($pdo,$mail,$password) {
if(ResetPraticien::checkMail($pdo,$mail)){
$password = password_hash($password, PASSWORD_ARGON2ID);
$id = ResetPraticien::getIdFromMail($pdo,$mail);
$query = $pdo->prepare("UPDATE medecin SET m_password = :password WHERE m_id = :id");
$query->bindParam(':password', $password);
$query->bindParam(':id', $id);
$query->execute();
return true;
} else {
return false;
}
}
}
class ResetPatient{
static function checkMail($pdo, $mail) {
$query = $pdo->prepare("SELECT COUNT(*) as count FROM patient WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
static function getIdFromMail($pdo, $mail) {
$query = $pdo->prepare("SELECT p_id FROM patient WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
return $result['p_id'];
}
public static function Reset($pdo,$mail,$password) {
if(ResetPatient::checkMail($pdo,$mail)){
$password = password_hash($password, PASSWORD_ARGON2ID);
$id = ResetPatient::getIdFromMail($pdo,$mail);
$query = $pdo->prepare("UPDATE patient SET p_password = :password WHERE p_id = :id");
$query->bindParam(':password', $password);
$query->bindParam(':id', $id);
$query->execute();
return true;
} else {
return false;
}
}
}

View File

@@ -0,0 +1,228 @@
<?php
function search($pdo, $nom, $postal){
if($_POST["nom"] == null && $_POST["postal"] == null){
echo '<p class="ms-5 mt-2 fw-bold">Veuillez entrer un nom ou un lieu</p>';
}
else if($_POST['postal'] == null){
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_name = :nom");
$query->bindParam(':nom', $_POST['nom']);
$query->execute();
$result = $query->fetchAll();
if($result == null){
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_specialty = :specialite");
$query->bindParam(':specialite', $_POST['nom']);
$query->execute();
$result = $query->fetchAll();
}
$count = 0;
foreach($result as $row){
$count++;
}
echo '<p class="ms-5 mt-2 fw-bold">'.$count.' Résultats</p>';
if($count == 0){
echo '<p class="ms-5 mt-2 fw-bold">Aucun résultat</p>';
}
else{
echo '<div class="d-flex flex-row flex-wrap mx-5 gap-5">';
foreach($result as $row){
echo '<div class="card mb-3">';
echo '<div class="row g-0">';
echo '<div class="col-md-4">';
$imageUrl = 'https://thispersondoesnotexist.com';
echo '<img src="' . $imageUrl . '" alt="doctor" class="img-fluid rounded-start" width="300" height="300">';
echo '</div>';
echo '<div class="col-md-8">';
echo '<div class="card-body">';
echo '<h5 class="card-title">'.$row['m_name'].' '.$row['m_surname'].'</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">'.$row['m_specialty'].'</h6>';
$query = $pdo->prepare("SELECT * FROM propose WHERE m_id = :id");
$query->bindParam(':id', $row['m_id']);
$query->execute();
$result = $query->fetchAll();
$count = 0;
foreach($result as $row2){
$count++;
}
echo '<p class="card-text">Disponiblilité :'. $count .'</p>';
echo '<form method="post" action="../../../calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$row['m_id'].'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" class="btn btn-danger">Prendre rendez-vous</button>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
}
else if($_POST['nom'] == null){
if(strlen($_POST['postal']) != 5){
$postal = substr($_POST['postal'], 0, 2);
$postal = $postal.'%';
$query = $pdo->prepare("SELECT * FROM medecin WHERE CAST(m_postal AS TEXT) LIKE :postal");
$query->bindParam(':postal', $postal);
$query->execute();
$result = $query->fetchAll();
$count = 0;
foreach($result as $row){
$count++;
}
echo '<p class="ms-5 mt-2 fw-bold">'.$count.' Résultats</p>';
if($count == 0){
echo '<p class="ms-5 mt-2 fw-bold">Aucun résultat</p>';
}
else{
echo '<div class="d-flex flex-row flex-wrap mx-5 gap-5">';
foreach($result as $row){
echo '<div class="card mb-3">';
echo '<div class="row g-0">';
echo '<div class="col-md-4">';
$imageUrl = 'https://thispersondoesnotexist.com';
echo '<img src="' . $imageUrl . '" alt="doctor" class="img-fluid rounded-start" width="300" height="300">';
echo '</div>';
echo '<div class="col-md-8">';
echo '<div class="card-body">';
echo '<h5 class="card-title">'.$row['m_name'].' '.$row['m_surname'].'</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">'.$row['m_specialty'].'</h6>';
echo '<p class="card-text">Disponiblilité :'. $count .'</p>';
echo '<form method="post" action="../../../calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$row['m_id'].'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" class="btn btn-danger">Prendre rendez-vous</button>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
}
else{
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_postal = :postal");
$query->bindParam(':postal', $_POST['postal']);
$query->execute();
$result = $query->fetchAll();
$count = 0;
foreach($result as $row){
$count++;
}
echo '<p class="ms-5 mt-2 fw-bold">'.$count.' Résultats</p>';
if($count == 0){
echo '<p class="ms-5 mt-2 fw-bold">Aucun résultat</p>';
}
else{
echo '<div class="d-flex flex-row flex-wrap mx-5 gap-5">';
foreach($result as $row){
echo '<div class="card mb-3">';
echo '<div class="row g-0">';
echo '<div class="col-md-4">';
$imageUrl = 'https://thispersondoesnotexist.com';
echo '<img src="' . $imageUrl . '" alt="doctor" class="img-fluid rounded-start" width="300" height="300">';
echo '</div>';
echo '<div class="col-md-8">';
echo '<div class="card-body">';
echo '<h5 class="card-title">'.$row['m_name'].' '.$row['m_surname'].'</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">'.$row['m_specialty'].'</h6>';
echo '<p class="card-text">Disponiblilité :'. $count .'</p>';
echo '<form method="post" action="../../../calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$row['m_id'].'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" class="btn btn-danger">Prendre rendez-vous</button>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
}
}
else {
if(strlen($_POST['postal']) != 5){
$postal = substr($_POST['postal'], 0, 2);
$postal = $postal.'%';
$query = $pdo->prepare("SELECT * FROM medecin WHERE CAST(m_postal AS TEXT) LIKE :postal AND m_name = :nom");
$query->bindParam(':postal', $postal);
$query->bindParam(':nom', $_POST['nom']);
$query->execute();
$result = $query->fetchAll();
}
else{
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_name = :nom AND m_postal = :postal");
$query->bindParam(':nom', $_POST['nom']);
$query->bindParam(':postal', $_POST['postal']);
$query->execute();
$result = $query->fetchAll();
}
if ($result == null) {
if(strlen($_POST['postal']) != 5){
$postal = substr($_POST['postal'], 0, 2);
$postal = $postal.'%';
$query = $pdo->prepare("SELECT * FROM medecin WHERE CAST(m_postal AS TEXT) LIKE :postal AND m_specialty = :specialite");
$query->bindParam(':postal', $postal);
$query->bindParam(':specialite', $_POST['nom']);
$query->execute();
$result = $query->fetchAll();
}
else{
$query = $pdo->prepare("SELECT * FROM medecin WHERE m_specialty = :specialite AND m_postal = :postal");
$query->bindParam(':specialite', $_POST['nom']);
$query->bindParam(':postal', $_POST['postal']);
$query->execute();
$result = $query->fetchAll();
}
}
$count = 0;
foreach ($result as $row) {
$count++;
}
echo '<p class="ms-5 mt-2 fw-bold">' . $count . ' Résultats</p>';
if ($count == 0) {
echo '<p class="ms-5 mt-2 fw-bold">Aucun résultat</p>';
} else {
echo '<div class="d-flex flex-row flex-wrap mx-5 gap-5">';
foreach ($result as $row) {
echo '<div class="card mb-3">';
echo '<div class="row g-0">';
echo '<div class="col-md-4">';
$imageUrl = 'https://thispersondoesnotexist.com';
echo '<img src="' . $imageUrl . '" alt="doctor" class="img-fluid rounded-start" width="300" height="300">';
echo '</div>';
echo '<div class="col-md-8">';
echo '<div class="card-body">';
echo '<h5 class="card-title">' . $row['m_name'] . ' ' . $row['m_surname'] . '</h5>';
echo '<h6 class="card-subtitle mb-2 text-body-secondary">' . $row['m_specialty'] . '</h6>';
echo '<p class="card-text">Disponiblilité :'. $count .'</p>';
echo '<form method="post" action="../../../calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$row['m_id'].'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<button type="submit" class="btn btn-danger">Prendre rendez-vous</button>';
echo '</form>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
}
}
?>

View File

@@ -0,0 +1,52 @@
<?php
class SignupPatient
{
public static function Insert($pdo,$name,$surname,$mail,$password,$phone){
$password = password_hash($password, PASSWORD_ARGON2ID);
$query = $pdo->prepare("INSERT INTO patient (p_name,p_surname,p_mail,p_password,p_phone) VALUES (:name,:surname,:mail,:password,:phone)");
$query->bindParam(':name', $name);
$query->bindParam(':surname', $surname);
$query->bindParam(':mail', $mail);
$query->bindParam(':password', $password);
$query->bindParam(':phone', $phone);
$query->execute();
//Check if user is well created in database
$query = $pdo->prepare("SELECT COUNT(*) as count FROM patient WHERE p_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
}
class SignupMedecin
{
public static function insertMedecin($pdo,$name,$surname,$mail,$password,$specialite,$phone,$postal) {
$password = password_hash($password, PASSWORD_ARGON2ID);
$query = $pdo->prepare("INSERT INTO medecin (m_name,m_surname,m_mail,m_password,m_specialty,m_phone,m_postal) VALUES (:name,:surname,:mail,:password,:specialite,:phone,:postal)");
$query->bindParam(':name', $name);
$query->bindParam(':surname', $surname);
$query->bindParam(':mail', $mail);
$query->bindParam(':password', $password);
$query->bindParam(':specialite', $specialite);
$query->bindParam(':phone', $phone);
$query->bindParam(':postal', $postal);
$query->execute();
//Check if user is well created in database
$query = $pdo->prepare("SELECT COUNT(*) as count FROM medecin WHERE m_mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 0) {
return false;
} else {
return true;
}
}
}

View File

@@ -0,0 +1,24 @@
<?php
function dbConnect() //fonction de connexion à la base de données
{
try
{
$db = new PDO('pgsql:host='.DB_SERVER.';port='.DB_PORT.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $exception)
{
error_log('Connection error: '.$exception->getMessage());
return false;
}
return $db;
}
function console_log($data)
{
//Console Log comme en JS
echo '<script>';
echo 'console.log('. json_encode( $data ) .')';
echo '</script>';
}
?>

View File

@@ -0,0 +1,46 @@
<?php
require('../dbconnect.php');
require('../../constants.php');
require('../Login.php');
require('../Rdv.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
if (isset($_POST['cancel_button'])) {
$rdv_id = $_POST['rdv_id'];
CancelRDV($pdo, $rdv_id);
header("Location: ../../../../rdv.php");
exit();
}
if (isset($_POST['move_button'])) {
$rdv_id = $_POST['rdv_id'];
$MedID = $_POST['medecin_id'];
$date = $_POST['date'];
CancelRDV($pdo, $rdv_id);
echo '<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title> Déplacer RDV </title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Just+Me+Again+Down+Here&family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="src/css/styles.css">
<link rel="icon" href="src/img/favicon.png" type="image/x-icon"/>
</head>';
echo '<form method="post" action="../../../../calendrier.php">';
echo '<input type="hidden" name="id" id="id" value="'.$MedID.'">';
echo '<input type="hidden" name="start" id="start" value="'.date("Y-m-d").'">';
echo '<div class="d-flex flex-row flex-wrap my-5 mx-5 gap-5 justify-content-center text-center">';
echo '<button type="submit" class="btn btn-danger ">Sélectionner un nouveau rendez-vous</button>';
echo '</div>';
echo '</form>';
exit();
}
?>

View File

@@ -0,0 +1,20 @@
<?php
require('../dbconnect.php');
require('../../constants.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
$rdv = $_GET['id'];
$patient = $_GET['patient'];
$query = $pdo->prepare("UPDATE rendez_vous SET p_id = :p_id WHERE rdv_id = :rdv_id");
$query->bindParam(':p_id', $patient);
$query->bindParam(':rdv_id', $rdv);
$query->execute();
//Redirect to the rdv.php page
echo '<meta http-equiv="refresh" content="0;URL=../../../../rdv.php">';
?>

View File

@@ -0,0 +1,40 @@
<?php
require('../dbconnect.php');
require('../../constants.php');
require('../Login.php');
require('../Rdv-praticien.php');
ini_set('display_errors', 1);
error_reporting(E_ALL);
$pdo = dbConnect();
if (isset($_POST['createRDV'])) {
$medID = $_POST['medID'];
$dateUse = $_POST['date'];
$dateInter = new DateTime($dateUse);
$date = $dateInter->format('Y-m-d');
$timeUse = $_POST['time'];
$timeInter = new DateTime($timeUse);
$time = $timeInter->format('H:i:s');
$lieu = $_POST['lieu'];
$place = explode(", ", $lieu);
$lieuID = getLieuID($pdo, $place[0], $place[1], $place[2]);
if ($medID != null && $date != null && $time != null && $lieuID != null) {
$query = $pdo->prepare("INSERT INTO rendez_vous (rdv_date, rdv_time, l_id) VALUES (:date, :time, :lieuID )");
$query->bindParam(':date', $date);
$query->bindParam(':time', $time);
$query->bindParam(':lieuID', $lieuID);
$query->execute();
$rdvID = $pdo->lastInsertId();
$query = $pdo->prepare("INSERT INTO propose (m_id, rdv_id) VALUES (:medID, :rdvID)");
$query->bindParam(':medID', $medID);
$query->bindParam(':rdvID', $rdvID);
$query->execute();
}
header("Location: ../../../../rdv-praticien.php");
exit();
}
?>

View File

@@ -0,0 +1,9 @@
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
unset($_SESSION["token"]);
//Redirect to the rdv.php page
echo '<meta http-equiv="refresh" content="0;URL=../../../../index.php">';
?>

View File

@@ -0,0 +1,16 @@
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["file"])) {
$uploadDir = "src/uploadFiles/";
$nameOfFile = "RDV" . $_POST['rdv_id'];
$uploadFile = $uploadDir . $nameOfFile . ".pdf";
echo "Chemin du fichier de destination : " . $uploadFile . "<br>";
if (move_uploaded_file($_FILES["file"]["tmp_name"], $uploadFile)) {
echo "Le fichier a été téléchargé avec succès.";
} else {
echo "Erreur lors du téléchargement du fichier. Code d'erreur : " . $_FILES["file"]["error"];
error_log("Erreur lors du téléchargement du fichier: " . $_FILES["file"]["error"]);
}
}
?>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,75 @@
------------------------------------------------------------
-- Script Postgre
------------------------------------------------------------
------------------------------------------------------------
-- Table: Patient
------------------------------------------------------------
CREATE TABLE public.Patient(
P_ID SERIAL NOT NULL ,
P_Mail VARCHAR (50) NOT NULL ,
P_Name VARCHAR (50) NOT NULL ,
P_Surname VARCHAR (50) NOT NULL ,
P_Phone INT NOT NULL ,
P_Password VARCHAR (150) NOT NULL ,
CONSTRAINT Patient_PK PRIMARY KEY (P_ID)
)WITHOUT OIDS;
------------------------------------------------------------
-- Table: Medecin
------------------------------------------------------------
CREATE TABLE public.Medecin(
M_ID SERIAL NOT NULL ,
M_Mail VARCHAR (50) NOT NULL ,
M_Name VARCHAR (50) NOT NULL ,
M_Surname VARCHAR (50) NOT NULL ,
M_Password VARCHAR (150) NOT NULL ,
M_Postal INT NOT NULL ,
M_Phone INT NOT NULL ,
M_Specialty VARCHAR (50) NOT NULL ,
CONSTRAINT Medecin_PK PRIMARY KEY (M_ID)
)WITHOUT OIDS;
------------------------------------------------------------
-- Table: Lieu
------------------------------------------------------------
CREATE TABLE public.Lieu(
L_Id SERIAL NOT NULL ,
L_Adress VARCHAR (200) NOT NULL ,
L_City VARCHAR (50) NOT NULL ,
L_Postal INT NOT NULL ,
CONSTRAINT Lieu_PK PRIMARY KEY (L_Id)
)WITHOUT OIDS;
------------------------------------------------------------
-- Table: Rendez-Vous
------------------------------------------------------------
CREATE TABLE public.Rendez_Vous(
RDV_Id SERIAL NOT NULL ,
RDV_Date DATE NOT NULL ,
RDV_Time TIMETZ NOT NULL ,
P_ID INT ,
L_Id INT NOT NULL ,
CONSTRAINT Rendez_Vous_PK PRIMARY KEY (RDV_Id)
,CONSTRAINT Rendez_Vous_Patient_FK FOREIGN KEY (P_ID) REFERENCES public.Patient(P_ID)
,CONSTRAINT Rendez_Vous_Lieu0_FK FOREIGN KEY (L_Id) REFERENCES public.Lieu(L_Id)
)WITHOUT OIDS;
------------------------------------------------------------
-- Table: Propose
------------------------------------------------------------
CREATE TABLE public.Propose(
RDV_Id INT NOT NULL ,
M_ID INT NOT NULL ,
CONSTRAINT Propose_PK PRIMARY KEY (RDV_Id,M_ID)
,CONSTRAINT Propose_Rendez_Vous_FK FOREIGN KEY (RDV_Id) REFERENCES public.Rendez_Vous(RDV_Id)
,CONSTRAINT Propose_Medecin0_FK FOREIGN KEY (M_ID) REFERENCES public.Medecin(M_ID)
)WITHOUT OIDS;

7
TP8/PHP/constants.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
const DB_USER = 'postgres';
const DB_PASSWORD = 'a';
const DB_NAME = 'daesh';
const DB_SERVER = "192.168.21.193";
const DB_PORT = '5432';
?>