Aller au contenu

Créneaux libres

phil/reservation
$slots = $bookable->slots($period, minutes: 60, bookings: $bookings, now: $now, quantity: 1, step: 30, limit: 100);

slots() donne, dans l'ordre, les créneaux de la période qu'obtiendrait une demande faite à $now : dans l'une des plages ouvertes de la ressource et dans la période, en suivant chaque règle, avec assez d'unités libres, marges comprises. Chaque créneau est un Interval sur l'horloge de la ressource.

ArgumentSens
$minutesLa durée d'un créneau
$quantityLes unités que chaque créneau doit avoir de libres ; hors de 1 à la capacité, aucun créneau
$stepLes minutes entre deux débuts, la durée d'un créneau par défaut
$limitLe plus grand nombre de créneaux donnés, de 1 à Bookable::MAX_SLOTS (1 000)

Les débuts avancent selon le pas depuis minuit sur l'horloge de la ressource, et repartent à chaque minuit : avec un pas de 30, une période qui ouvre à 9 h 10 offre d'abord 9 h 30 ; avec un pas de 7 heures, 0 h, 7 h, 14 h, 21 h, puis de nouveau 0 h. Un pas qui divise une journée garde une même grille d'un jour à l'autre.

Le parcours lit au plus Bookable::MAX_CANDIDATES (10 000) débuts par appel et renvoie ce qu'il a trouvé : une ressource entièrement réservée sur une longue période coûte un temps borné. Une durée, un pas ou une limite hors des bornes lève InvalidDefinition.

Unités libres

$bookable->free($interval, $bookings);          // 0 to the capacity
$bookable->free($interval, $bookings, 'b-1');   // as if b-1 were moved away

free() donne les unités encore libres sur tout l'intervalle, marges comprises : ce qu'une page montre à côté d'un créneau, ou le plus grand nombre de places qu'offre un formulaire.