# TravelMate Admin - Panneau d'Administration .NET MAUI Application desktop (Mac/Windows) pour gérer les demandes clients depuis une base de données MariaDB/MySQL. ## 🎯 Fonctionnalités - **Dashboard** : Vue d'ensemble avec statistiques des demandes (en attente vs traitées) - **Messages** : Gestion des demandes de suppression de données et messages généraux - **Support** : Gestion des demandes d'assistance technique - **Filtres** : Voir tout, seulement les demandes à faire, ou seulement les traitées - **Actions** : Marquer une demande comme traitée/non traitée d'un clic - **Design** : Interface moderne avec dark theme ## 🛠️ Stack Technique - **.NET MAUI** (Multi-platform App UI) - **Pattern MVVM** avec CommunityToolkit.Mvvm - **MariaDB/MySQL** via MySqlConnector - **Injection de dépendance** native MAUI ## 📋 Prérequis - .NET 8+ ou .NET 9+ - Visual Studio 2022 17.8+ ou VS Code avec extension C# Dev Kit - MariaDB ou MySQL Server - macOS (pour MacCatalyst) ou Windows ## 🚀 Installation ### 1. Cloner le projet ```bash git clone cd TravelMateAdmin ``` ### 2. Configurer la base de données Exécutez le script SQL fourni pour créer la base de données et les tables : ```bash mysql -u root -p < database_setup.sql ``` Ou manuellement dans MySQL/MariaDB : ```sql source database_setup.sql ``` ### 3. Configurer la connexion Modifiez le fichier `Configuration/AppSettings.cs` avec vos paramètres : ```csharp public const string Server = "localhost"; // Votre serveur MySQL public const string Port = "3306"; // Port MySQL (défaut: 3306) public const string Database = "travelmateadmin"; public const string User = "root"; // Votre utilisateur MySQL public const string Password = "yourpassword"; // Votre mot de passe MySQL ``` ### 4. Restaurer les packages NuGet ```bash dotnet restore ``` ### 5. Lancer l'application Pour macOS (MacCatalyst) : ```bash dotnet build -t:Run -f net10.0-maccatalyst ``` Pour Windows : ```bash dotnet build -t:Run -f net10.0-windows10.0.19041.0 ``` Ou utilisez Visual Studio : sélectionnez la plateforme cible et appuyez sur F5. ## 📁 Structure du Projet ``` TravelMateAdmin/ ├── Configuration/ │ └── AppSettings.cs # Configuration de la connexion DB ├── Converters/ │ └── BoolConverters.cs # Converters XAML pour les boutons ├── Models/ │ ├── Message.cs # Modèle pour les messages │ └── SupportRequest.cs # Modèle pour les demandes support ├── Services/ │ ├── IDatabaseService.cs # Interface du service DB │ └── DatabaseService.cs # Implémentation du service DB ├── ViewModels/ │ ├── DashboardViewModel.cs # ViewModel du dashboard │ ├── MessagesViewModel.cs # ViewModel des messages │ └── SupportViewModel.cs # ViewModel du support ├── Views/ │ ├── DashboardPage.xaml(.cs) # Page dashboard │ ├── MessagesPage.xaml(.cs) # Page messages │ └── SupportPage.xaml(.cs) # Page support ├── App.xaml(.cs) # Configuration de l'app ├── AppShell.xaml(.cs) # Navigation Shell └── MauiProgram.cs # Configuration DI et services ``` ## 🗃️ Structure de la Base de Données ### Table `messages` | Colonne | Type | Description | |------------|--------------|--------------------------------| | id | INT | Clé primaire (auto-increment) | | nom | VARCHAR(100) | Nom du demandeur | | prenom | VARCHAR(100) | Prénom du demandeur | | email | VARCHAR(255) | Email du demandeur | | message | TEXT | Contenu du message | | done | BOOLEAN | Statut (traité ou non) | | created_at | TIMESTAMP | Date de création | ### Table `support_requests` | Colonne | Type | Description | |----------------|--------------|--------------------------------| | id | INT | Clé primaire (auto-increment) | | nom | VARCHAR(100) | Nom du demandeur | | prenom | VARCHAR(100) | Prénom du demandeur | | account_email | VARCHAR(255) | Email du compte | | contact_email | VARCHAR(255) | Email de contact | | message | TEXT | Description du problème | | done | BOOLEAN | Statut (traité ou non) | | created_at | TIMESTAMP | Date de création | ## 💡 Utilisation 1. **Dashboard** : Visualisez rapidement les statistiques. Cliquez sur une carte pour accéder aux détails. 2. **Messages/Support** : - Utilisez le filtre en haut pour afficher tout, seulement les tâches à faire, ou seulement celles faites - Cliquez sur le bouton dans chaque carte pour changer le statut - Utilisez le bouton ↻ pour rafraîchir les données 3. **Navigation** : Utilisez les onglets en bas (ou le menu) pour naviguer entre les sections ## 🎨 Personnalisation ### Changer les couleurs Modifiez les couleurs dans les fichiers XAML (section ``) : ```xml #1a1a1a #2d2d2d #5E50D9 #4CAF50 #FFA726 ``` ### Ajouter de nouvelles fonctionnalités 1. Créez un nouveau Model dans `Models/` 2. Ajoutez les méthodes nécessaires dans `IDatabaseService` et `DatabaseService` 3. Créez un ViewModel dans `ViewModels/` 4. Créez la Vue XAML dans `Views/` 5. Enregistrez-les dans `MauiProgram.cs` 6. Ajoutez la navigation dans `AppShell.xaml` ## 🐛 Dépannage ### Erreur de connexion à la base de données - Vérifiez que MySQL/MariaDB est bien démarré - Vérifiez les paramètres dans `AppSettings.cs` - Vérifiez les droits de l'utilisateur MySQL - Regardez les logs dans la console de débogage ### L'application ne se lance pas - Assurez-vous d'avoir restauré les packages NuGet - Vérifiez que vous avez la bonne version de .NET installée - Nettoyez et reconstruisez le projet : ```bash dotnet clean dotnet build ``` ### Les données ne s'affichent pas - Vérifiez que les tables existent dans la base de données - Vérifiez qu'il y a des données dans les tables - Regardez les logs de débogage pour voir les erreurs SQL ## 📦 Packages NuGet Utilisés - `CommunityToolkit.Mvvm` (8.3.2) - Pour le pattern MVVM - `MySqlConnector` (2.4.0) - Pour la connexion MySQL/MariaDB ## 📝 License Ce projet est à usage personnel/éducatif. ## 👨‍💻 Développement Créé avec ❤️ en utilisant .NET MAUI --- **Note**: N'oubliez pas de modifier le mot de passe MySQL dans `AppSettings.cs` avant de déployer en production !