Développement d'un Système de Notifications
Introduction
Ce document présente une explication détaillée et une feuille de route pour développer un système de
notifications basé sur HTML, CSS, JavaScript, MySQL et PHP. Le système gère les notifications entre trois
rôles : employé, gestionnaire RH et directeur.
Prérequis
1. Connaissances en HTML, CSS, JavaScript, PHP et SQL.
2. Environnement de développement configuré (ex. WAMP ou XAMPP).
3. Base de données MySQL pour stocker les informations.
Structure des Rôles et Notifications
1. Employé
Reçoit des notifications de la part du gestionnaire RH sur :
o Acceptation ou refus des demandes de congés.
2. Gestionnaire RH
Reçoit :
o Notifications sur l’absence d’un employé (via le système de suivi des présences).
o Notifications du directeur concernant les demandes de congés qui nécessitent une
approbation finale.
Envoie :
o Notifications à l’employé pour valider ou refuser une demande de congé.
3. Directeur
Reçoit :
o Notifications du gestionnaire RH pour les demandes de congés qui demandent une
approbation finale.
Envoie :
o Notifications au gestionnaire RH pour valider ou refuser une demande de congé.
Architecture du Système
Base de données MySQL
1. Tables principales :
o utilisateurs : Stocke les informations des employés, gestionnaires RH et directeurs.
o notifications : Stocke les notifications avec des références aux utilisateurs.
o demandes_conge : Stocke les demandes de congés des employés.
o presences : Stocke les données de présence des employés.
2. Structure des tables :
Table utilisateurs
CREATE TABLE utilisateurs (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(50),
role ENUM('employe', 'gestionnaire_rh', 'directeur'),
email VARCHAR(100),
password VARCHAR(255)
);
Table notifications
CREATE TABLE notifications (
id INT AUTO_INCREMENT PRIMARY KEY,
utilisateur_id INT,
message TEXT,
type ENUM('validation_conge', 'absence', 'action_directeur'),
date_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
lu BOOLEAN DEFAULT FALSE,
FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id)
);
Table demandes_conge
CREATE TABLE demandes_conge (
id INT AUTO_INCREMENT PRIMARY KEY,
employe_id INT,
statut ENUM('en_attente', 'accepte', 'refuse') DEFAULT 'en_attente',
date_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (employe_id) REFERENCES utilisateurs(id)
);
Table presences
CREATE TABLE presences (
id INT AUTO_INCREMENT PRIMARY KEY,
employe_id INT,
date DATE,
matin BOOLEAN DEFAULT FALSE,
apres_midi BOOLEAN DEFAULT FALSE,
FOREIGN KEY (employe_id) REFERENCES utilisateurs(id)
);
Backend en PHP
1. Génération des Notifications :
Notification pour l’absence :
function verifierAbsence($employe_id, $date) {
global $conn; // Connexion à la base de données
$query = "SELECT * FROM presences WHERE employe_id = ? AND date = ?";
$stmt = $conn->prepare($query);
$stmt->execute([$employe_id, $date]);
if ($stmt->rowCount() === 0) {
// Ajouter une notification
$message = "Absence détectée pour l'employé ID: $employe_id.";
ajouterNotification($employe_id, 'absence', $message);
}
}
function ajouterNotification($utilisateur_id, $type, $message) {
global $conn;
$query = "INSERT INTO notifications (utilisateur_id, type, message) VALUES
(?, ?, ?)";
$stmt = $conn->prepare($query);
$stmt->execute([$utilisateur_id, $type, $message]);
}
Notification pour les congés :
function traiterDemandeConge($demande_id, $statut) {
global $conn;
// Mettre à jour la demande de congé
$query = "UPDATE demandes_conge SET statut = ? WHERE id = ?";
$stmt = $conn->prepare($query);
$stmt->execute([$statut, $demande_id]);
// Récupérer l'employé associé
$query = "SELECT employe_id FROM demandes_conge WHERE id = ?";
$stmt = $conn->prepare($query);
$stmt->execute([$demande_id]);
$employe_id = $stmt->fetchColumn();
// Ajouter une notification
$message = ($statut === 'accepte') ? "Votre demande de congé a été acceptée." :
"Votre demande de congé a été refusée.";
ajouterNotification($employe_id, 'validation_conge', $message);
}
Frontend en HTML/CSS/JS
1. Mise en page des Notifications
HTML :
<div class="notifications">
<h2>Centre de Notifications</h2>
<ul id="notification-list">
<!-- Les notifications s’afficheront ici -->
</ul>
</div>
CSS :
.notifications {
width: 300px;
border: 1px solid #ccc;
border-radius: 5px;
padding: 10px;
background: #f9f9f9;
}
.notifications h2 {
font-size: 18px;
margin-bottom: 10px;
}
.notifications ul {
list-style-type: none;
padding: 0;
}
.notifications li {
padding: 5px;
border-bottom: 1px solid #ddd;
}
.notifications li:last-child {
border-bottom: none;
}
2. Affichage Dynamique avec JavaScript :
function chargerNotifications() {
fetch('get_notifications.php')
.then(response => response.json())
.then(data => {
const notificationList = document.getElementById('notification-list');
notificationList.innerHTML = '';
data.forEach(notification => {
const li = document.createElement('li');
li.textContent = notification.message;
notificationList.appendChild(li);
});
});
}
// Charger les notifications au chargement de la page
window.onload = chargerNotifications;
Conclusion
Ce système permet une communication efficace entre les employés
Structure Globale pour une Application de Gestion des Présences et Congés
Pour développer une application web qui gère à la fois les présences et les congés tout en intégrant un système de
notifications, voici la structure globale des pages et des fichiers nécessaires, avec une vue d'ensemble des
fonctionnalités à implémenter.
I. Titres des Pages Principales
1. Page d'authentification (Login)
o URL : login.php
o Description : Permet aux utilisateurs (employés, gestionnaire RH, directeur) de se connecter avec des
rôles différents.
2. Page d’accueil (Dashboard)
o URL : dashboard.php
o Description : Affiche un tableau de bord personnalisé selon le rôle de l'utilisateur, y compris un
"Centre de Notifications".
3. Gestion des Présences
o Employés :
URL : mark_attendance.php
Fonction : Enregistrer leur présence (matin et après-midi).
o Gestionnaire RH :
URL : view_attendance.php
Fonction : Consulter, valider ou exporter les présences.
4. Gestion des Congés
o Employés :
URL : request_leave.php
Fonction : Soumettre une demande de congé.
o Gestionnaire RH :
URL : manage_leave.php
Fonction : Valider ou refuser les congés.
o Directeur :
URL : review_leave.php
Fonction : Donner une approbation finale pour les congés.
5. Centre de Notifications
o URL : notifications.php
o Description : Permet de visualiser toutes les notifications envoyées par le système.
6. Gestion des Comptes
o URL : manage_accounts.php
o Description : Gestion par le gestionnaire RH (ajout, modification, désactivation).
7. Statistiques et Rapports
o URL : reports.php
o Description : Affiche des graphiques sur les présences, absences, et congés.
8. Page de Paramètres
o URL : settings.php
o Description : Permet à chaque utilisateur de modifier son mot de passe.
II. Structure des Dossiers
1. Dossier Racine
o index.php (Redirige vers login.php)
o login.php (Page d'authentification)
2. Dossier pour les fichiers Frontend
o css/ : Contient les fichiers CSS.
styles.css (Style général de l'application)
o js/ : Contient les fichiers JavaScript.
scripts.js (Fonctions JS globales)
notifications.js (Gestion des notifications en temps réel)
o images/ : Contient les images et icônes.
3. Dossier pour les fichiers Backend
o php/ : Scripts PHP pour la logique serveur.
db.php : Connexion à la base de données.
auth.php : Gestion des connexions et déconnexions.
attendance.php : Logique de gestion des présences.
leave.php : Logique de gestion des congés.
notifications.php : Gestion des notifications.
o classes/ : Contient les classes PHP.
User.php : Classe pour la gestion des utilisateurs.
Notification.php : Classe pour les notifications.
Attendance.php : Classe pour les présences.
Leave.php : Classe pour les congés.
4. Dossier pour les pages utilisateurs
o employee/ :
dashboard.php
mark_attendance.php
request_leave.php
notifications.php
o rh_manager/ :
dashboard.php
view_attendance.php
manage_leave.php
manage_accounts.php
o director/ :
dashboard.php
review_leave.php
5. Base de Données
o Tables principales :
users (Stocke les informations utilisateur : nom, email, rôle, etc.)
attendance (Stocke les enregistrements de présence)
leaves (Stocke les demandes de congés)
notifications (Stocke les notifications)
o Connexion : db.php
III. Exemple de Flux de Développement
1. Création de la Base de Données
o Structure les tables (users, attendance, leaves, notifications) dans MySQL.
o Configure db.php pour se connecter à la base de données.
2. Développement du Backend
o Crée des classes PHP pour chaque entité importante (User, Notification, etc.).
o Implémente les contrôleurs pour les fonctionnalités clés (CRUD sur les présences, congés).
3. Création des Pages Frontend
o Développe les interfaces HTML/CSS pour chaque rôle.
o Intègre des fonctionnalités dynamiques avec JavaScript et Ajax (par exemple, notifications en temps
réel).
4. Implémentation du Système de Notifications
o Utilise JavaScript/Ajax pour récupérer périodiquement les notifications depuis notifications.php.
o Affiche les notifications dans une section dédiée sur le tableau de bord.
5. Tests
o Vérifie chaque fonctionnalité individuellement (tests unitaires).
o Simule différents rôles pour valider les relations (tests fonctionnels).
IV. Points Clés
Système de Notifications : Les notifications sont générées automatiquement par des actions spécifiques (ex.
demande de congé).
Séparation des Rôles : Chaque utilisateur a des permissions bien définies.
Statistiques en Temps Réel : Utilisez des graphiques pour les rapports.
Responsive Design : Assurez-vous que l'interface est adaptée à différents écrans.
Si vous voulez des détails supplémentaires sur une partie spécifique, dites-le-moi !