# Gestion des Événements - StayManager

## Vue d'ensemble

Le module de gestion des événements permet de gérer les salles d'événements et les réservations d'événements dans l'hôtel. Il comprend deux parties principales :

1. **Gestion des salles d'événements** (`event_rooms`)
2. **Gestion des réservations d'événements** (`event_bookings`)

## Fonctionnalités

### 🏢 Gestion des Salles d'Événements

#### Fonctionnalités CRUD
- **Créer** : Ajouter une nouvelle salle d'événement
- **Lire** : Consulter la liste des salles et leurs détails
- **Mettre à jour** : Modifier les informations d'une salle
- **Supprimer** : Supprimer une salle (avec vérification des réservations liées)

#### Champs disponibles
- **Nom** : Nom de la salle
- **Capacité** : Nombre maximum de personnes
- **Prix** : Tarif de location (FCFA)
- **Description** : Description détaillée de la salle
- **Équipements** : Liste des équipements disponibles (JSON)
- **Statut** : Active/Inactive

#### Fonctionnalités avancées
- ✅ Recherche et filtrage
- ✅ Pagination
- ✅ Export Excel/CSV
- ✅ Vérification de disponibilité
- ✅ Statistiques

### 📅 Gestion des Réservations d'Événements

#### Fonctionnalités CRUD
- **Créer** : Créer une nouvelle réservation d'événement
- **Lire** : Consulter la liste des réservations et leurs détails
- **Mettre à jour** : Modifier une réservation
- **Supprimer** : Supprimer une réservation

#### Champs disponibles
- **Numéro de réservation** : Généré automatiquement (format: EVT + date + code)
- **Salle** : Salle d'événement sélectionnée
- **Client** : Client qui fait la réservation
- **Date d'événement** : Date de l'événement
- **Heure de début et fin** : Horaires de l'événement
- **Type d'événement** : Mariage, Séminaire, Anniversaire, Dîner de gala, Autre
- **Nombre de participants** : Nombre de personnes attendues
- **Montant total** : Coût total de la réservation
- **Montant payé** : Montant déjà payé
- **Statut** : En attente, Confirmée, Terminée, Annulée
- **Exigences spéciales** : Notes et demandes particulières

#### Fonctionnalités avancées
- ✅ Recherche et filtrage avancés
- ✅ Pagination
- ✅ Export Excel/CSV
- ✅ Vérification de disponibilité des salles
- ✅ Gestion des conflits d'horaires
- ✅ Notifications automatiques
- ✅ Statistiques détaillées
- ✅ Gestion des paiements liés

## Intégration avec les Paiements

Le module des événements est intégré avec le système de paiements existant :

- Les réservations d'événements peuvent avoir des paiements associés
- Le champ `event_booking_id` dans la table `payments` permet de lier les paiements aux événements
- Affichage des paiements dans les détails d'une réservation d'événement

## Structure de la Base de Données

### Table `event_rooms`
```sql
CREATE TABLE event_rooms (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    capacity INT NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    description TEXT,
    amenities JSON,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```

### Table `event_bookings`
```sql
CREATE TABLE event_bookings (
    id INT PRIMARY KEY AUTO_INCREMENT,
    booking_number VARCHAR(20) NOT NULL UNIQUE,
    event_room_id INT NOT NULL,
    client_id INT NOT NULL,
    event_date DATE NOT NULL,
    start_time TIME NOT NULL,
    end_time TIME NOT NULL,
    event_type ENUM('wedding', 'seminar', 'birthday', 'gala_dinner', 'other') NOT NULL,
    attendees INT NOT NULL,
    total_amount DECIMAL(10,2) NOT NULL,
    paid_amount DECIMAL(10,2) DEFAULT 0,
    status ENUM('pending', 'confirmed', 'completed', 'cancelled') DEFAULT 'pending',
    requirements TEXT,
    created_by INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (event_room_id) REFERENCES event_rooms(id),
    FOREIGN KEY (client_id) REFERENCES clients(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);
```

## Fichiers Principaux

### Contrôleurs
- `controllers/EventRoomController.php` - Gestion des salles d'événements
- `controllers/EventBookingController.php` - Gestion des réservations d'événements

### Modèles
- `models/EventRoom.php` - Modèle pour les salles d'événements
- `models/EventBooking.php` - Modèle pour les réservations d'événements

### Vues
- `views/events/index.php` - Page principale avec onglets
- `views/event_rooms/` - Vues pour les salles d'événements
- `views/event_bookings/` - Vues pour les réservations d'événements

### Fichiers d'entrée
- `events.php` - Page principale de gestion des événements
- `event_rooms.php` - Gestion des salles d'événements
- `event_bookings.php` - Gestion des réservations d'événements

## Permissions Requises

Le module nécessite la permission `events` pour être accessible.

## Utilisation

### Accès au module
1. Se connecter à l'application
2. Cliquer sur "Événements" dans le menu de navigation
3. Choisir entre "Réservations d'événements" ou "Salles d'événements"

### Créer une salle d'événement
1. Aller dans l'onglet "Salles d'événements"
2. Cliquer sur "Nouvelle salle"
3. Remplir le formulaire avec les informations de la salle
4. Sauvegarder

### Créer une réservation d'événement
1. Aller dans l'onglet "Réservations d'événements"
2. Cliquer sur "Nouvelle réservation"
3. Sélectionner une salle disponible
4. Choisir un client
5. Définir la date, l'heure et le type d'événement
6. Sauvegarder

### Vérifier la disponibilité
Le système vérifie automatiquement la disponibilité des salles lors de la création ou modification d'une réservation.

## Export et Rapports

### Export Excel/CSV
- **Salles d'événements** : Export avec nom, capacité, prix, description, équipements, statut
- **Réservations d'événements** : Export complet avec toutes les informations

### Statistiques
- Nombre total de salles
- Salles actives/inactives
- Nombre de réservations par statut
- Chiffre d'affaires total
- Montant total payé

## Notifications

Le système peut envoyer des notifications automatiques :
- Confirmation de réservation
- Rappels d'événements
- Notifications de paiement

## Sécurité

- Vérification des permissions utilisateur
- Validation des données d'entrée
- Protection contre les injections SQL
- Vérification de la disponibilité des salles

## Maintenance

### Sauvegarde
Les tables `event_rooms` et `event_bookings` sont incluses dans les sauvegardes automatiques.

### Logs
Toutes les actions importantes sont enregistrées dans les logs système.

## Support

Pour toute question ou problème avec le module de gestion des événements, consultez la documentation technique ou contactez l'équipe de développement.













