Feature: Ajout de rendez-vous Google Calendar

Ajout d'un modal complet pour créer des événements directement dans Google Calendar avec toutes les fonctionnalités :

Backend (routes/calendar.routes.js) :
- Changement du scope de 'calendar.readonly' à 'calendar' pour permettre l'écriture
- Nouvelle route POST /api/calendar/events pour créer des événements
- Support complet des fonctionnalités Google Calendar :
  * Titre, description, dates de début/fin
  * Lieu
  * Participants (attendees) avec notifications automatiques
  * Rappels personnalisables (popup)
  * Récurrence (quotidienne, hebdomadaire, mensuelle, annuelle)
  * Visibilité (public, privé, par défaut)
  * Couleurs d'événement (11 couleurs disponibles)
  * Fuseau horaire Europe/Paris
- Synchronisation automatique après création pour mise à jour locale

Frontend :
- Service CalendarService.ts : nouvelle méthode createEvent()
- Bouton "Ajouter" dans la box Rendez-vous
- Modal complet avec formulaire de création d'événement
- Tous les champs Google Calendar disponibles :
  * Titre et description
  * Date/heure de début et fin (datetime-local)
  * Lieu
  * Participants (emails séparés par virgules)
  * Rappels (10min, 30min, 1h, 1 jour)
  * Récurrence (quotidienne, hebdomadaire, mensuelle, annuelle)
  * Visibilité (public/privé)
  * Couleur (11 options)
- Validation des champs obligatoires
- Messages de succès/erreur
- Rechargement automatique de la liste après création
This commit is contained in:
Claude committed 2025-11-12 14:57:46 +00:00
1 parent 1ae40ad84c
commit 822e0761a7
3 files changed
+320 -13

No files matched your search

+19
View File
@@ -91,6 +91,25 @@ class CalendarService {
return false;
}
}
/**
* Créer un événement dans Google Calendar
*/
async createEvent(eventData: {
title: string;
description?: string;
startDateTime: string;
endDateTime: string;
location?: string;
attendees?: string[];
reminders?: Array<{ method: string; minutes: number }>;
recurrence?: string[];
visibility?: string;
colorId?: string;
}): Promise<{ eventId: string; htmlLink: string }> {
const response = await axios.post(`${this.baseURL}/events`, eventData, this.getAuthHeader());
return response.data;
}
}
export default new CalendarService();