Files
TravelMateAdmin/README.md
Van Leemput Dayron 74586c20ba first commit
2026-01-12 18:03:21 +01:00

208 lines
7.0 KiB
Markdown

# 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 <your-repo-url>
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 `<ContentPage.Resources>`) :
```xml
<Color x:Key="Primary">#1a1a1a</Color> <!-- Fond principal -->
<Color x:Key="Secondary">#2d2d2d</Color> <!-- Fond secondaire -->
<Color x:Key="Accent">#5E50D9</Color> <!-- Couleur d'accent -->
<Color x:Key="Success">#4CAF50</Color> <!-- Vert (succès) -->
<Color x:Key="Warning">#FFA726</Color> <!-- Orange (warning) -->
```
### 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 !