Réservation d'hôtel
Base de données
PostgreSQL, Entity Framework Core, Migrations
Technologies
C#, ASP.NET Core, MVVM, Bootstrap
Sécurité
Authentification, Autorisation, Hachage des mots de passe
Résultats obtenus
- Système de réservation fonctionnel avec vérification de disponibilité
- Interface utilisateur intuitive pour la recherche de chambres
- Système d'authentification sécurisé avec différents niveaux d'accès
- Base de données optimisée pour les requêtes de disponibilité
Présentation du projet
Ce projet a consisté à développer une application complète de gestion de réservation d'hôtel utilisant une base de données PostgreSQL. L'objectif était de créer un système permettant aux utilisateurs de consulter les chambres disponibles, de réserver une chambre pour une date donnée, et de gérer leurs réservations.
L'application dispose également d'un système d'authentification avec différents niveaux d'accès, permettant aux administrateurs de gérer les chambres, les réservations et les utilisateurs, tandis que les clients peuvent uniquement consulter et gérer leurs propres réservations.
Défis techniques
Conception de la base de données
La conception d'une base de données efficace pour gérer les réservations et éviter les conflits de disponibilité était un défi majeur.
Solution mise en œuvre
J'ai conçu un schéma de base de données avec des relations claires entre les chambres, les clients et les réservations. J'ai implémenté des contraintes d'intégrité pour garantir la cohérence des données et des index pour optimiser les requêtes de disponibilité. J'ai également utilisé des triggers PostgreSQL pour automatiser certaines vérifications.
Système de réservation
La mise en place d'un système de réservation fiable qui vérifie la disponibilité en temps réel et gère les conflits était complexe.
Solution mise en œuvre
J'ai développé un algorithme qui vérifie les réservations existantes pour détecter les chevauchements de dates. J'ai implémenté des transactions pour garantir l'intégrité des données lors des réservations simultanées. Le système calcule également automatiquement le prix total en fonction de la durée du séjour et du type de chambre.
Authentification et autorisation
La mise en place d'un système d'authentification sécurisé avec différents niveaux d'accès était essentielle pour protéger les données.
Solution mise en œuvre
J'ai utilisé ASP.NET Identity pour gérer l'authentification et l'autorisation. Les mots de passe sont hachés et salés avant d'être stockés dans la base de données. J'ai défini différents rôles (administrateur, employé, client) avec des permissions spécifiques pour chaque fonctionnalité de l'application.
Méthodologie et étapes
Analyse des besoins
Identification des fonctionnalités requises, des types d'utilisateurs et de leurs permissions, ainsi que des contraintes techniques et fonctionnelles.
Conception de la base de données
Création du schéma de base de données avec les tables, les relations, les contraintes et les index nécessaires pour gérer efficacement les données de l'application.
Développement du backend
Implémentation des modèles, des contrôleurs et des services pour gérer les opérations CRUD, les réservations, l'authentification et l'autorisation.
Création de l'interface utilisateur
Développement des vues pour la recherche de chambres, la réservation, la gestion des réservations et l'administration du système.
Tests et déploiement
Réalisation de tests unitaires et d'intégration pour valider le fonctionnement de l'application, puis déploiement sur un serveur de production.
Structure de la base de données
Table Chambres
- id_chambre (PK)
- numero
- type
- prix
- description
- statut
Table Clients
- id_client (PK)
- nom
- prenom
- telephone
- adresse
Table Réservations
- id_reservation (PK)
- id_chambre (FK)
- id_client (FK)
- date_debut
- date_fin
- statut
- prix_total
Table Utilisateurs
- id_utilisateur (PK)
- nom_utilisateur
- mot_de_passe
- role
- date_creation
Fonctionnalités principales
Recherche de chambres
Interface intuitive permettant aux utilisateurs de rechercher des chambres disponibles en fonction de critères comme les dates, le type de chambre et le prix.
Réservation en ligne
Processus de réservation simplifié avec vérification de disponibilité en temps réel et confirmation immédiate.
Gestion des utilisateurs
Système d'authentification sécurisé avec différents niveaux d'accès pour les administrateurs, les employés et les clients.
Administration
Interface d'administration complète permettant de gérer les chambres, les réservations, les clients et les utilisateurs.
Compétences acquises
PostgreSQL
Conception et optimisation de bases de données relationnelles, utilisation de fonctionnalités avancées comme les triggers et les procédures stockées.
C# et ASP.NET Core
Développement d'applications web avec le framework ASP.NET Core, utilisation du modèle MVVM et des fonctionnalités avancées de C#.
Entity Framework Core
Utilisation d'un ORM pour interagir avec la base de données, génération de modèles à partir de la base de données existante, migrations de schéma.
Sécurité des applications
Mise en place de mécanismes d'authentification et d'autorisation, protection contre les vulnérabilités courantes, sécurisation des données sensibles.
Conclusion
Ce projet de réservation d'hôtel m'a permis de mettre en pratique mes connaissances en développement d'applications avec C# et en gestion de bases de données PostgreSQL. J'ai pu approfondir ma compréhension du modèle MVVM et des techniques de scaffold pour générer des modèles à partir d'une base de données existante.
L'application développée offre une solution complète pour la gestion des réservations d'hôtel, avec une interface utilisateur intuitive et des fonctionnalités avancées pour les administrateurs. Les compétences acquises lors de ce projet sont directement applicables à d'autres projets de développement d'applications web avec des bases de données relationnelles.