Skip to content
Extraits de code Groupes Projets
Valider 4c8ca8a7 rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

Improve booking logic #113

parent 4503ef16
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -2,8 +2,5 @@ LanguageLab utilise le site https://cal.com pour programmer les séances entre l
Afin que l'intégration soit réussie, il est nécessaire de suivre les étapes suivantes:
- Créer un compte sur https://cal.com.
- Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]).
- Créer un webhook (onglet "Webhooks") avec l'URL https://languagelab.sipr.ucl.ac.be/api/v1/webhooks/sessions comme Lien de l'abonné. Tous les "Déclencheurs d'évènement" (triggers) peuvent être laissés tels quel. "Secret" peut être laissé vide. [Créer un webhook]
![](cal-webhook.png)
- Copier le lien vers l'évènement [🔗], p.ex. https://cal.com/username/eventtype
- Coller le lien dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots.
- Créer un nouveau type d'événement de 60 mins (https://app.cal.com/event-types -> [+ Nouveau]) avec un nom cohérent, par exemple `languagelab-tutorat`
- Indiquer le lien de l'évenement dans https://languagelab.sipr.ucl.ac.be/tutor/timeslots. Example: `username/languagelab-tutorat`
......@@ -40,7 +40,9 @@
"currentSessions": "Sessions en cours",
"plannedSessions": "Sessions planifiées",
"pastSessions": "Sessions terminées",
"newContact": "Ajouter un contact"
"newContact": "Ajouter un contact",
"bookingSuccessful": "Session réservée avec succès",
"bookingFailed": "Erreur lors de la réservation de la session"
},
"login": {
"email": "E-mail",
......
......@@ -17,7 +17,8 @@
getUserContactSessionsAPI
} from '$lib/api/users';
import { createSessionFromCalComAPI } from '$lib/api/sessions';
import { toastAlert, toastWarning } from '$lib/utils/toasts';
import { toastAlert, toastSuccess, toastWarning } from '$lib/utils/toasts';
import { get } from 'svelte/store';
let ready = false;
$: contacts = [] as User[];
......@@ -82,16 +83,27 @@
// @ts-ignore
Cal('on', {
action: 'bookingSuccessful',
callback: (e: any) => {
callback: async (e: any) => {
if (!contact || !$user || !e.detail.data) {
toastAlert('Automatic session creation failed');
toastAlert(get(t)('home.bookingFailed'));
return;
}
let date = new Date(e.detail.data.date);
let duration = e.detail.data.duration;
let end = new Date(date.getTime() + duration * 60000);
createSessionFromCalComAPI($user.id, contact.id, date, end);
const date = new Date(e.detail.data.date);
const duration = e.detail.data.duration;
const end = new Date(date.getTime() + duration * 60000);
const sess_id: number | null = await createSessionFromCalComAPI(
$user.id,
contact.id,
date,
end
);
if (!sess_id) {
toastAlert(get(t)('home.bookingFailed'));
return;
}
toastSuccess(get(t)('home.bookingSuccessful'));
contactSessions = Session.parseAll(await getUserContactSessionsAPI($user!.id, contact.id));
}
});
});
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter