Feature: Agenda
Visao geral
A feature de Agenda e controlada por flags de curso e turma (enable_calendar) e exposta no payload de turmas.
No backend, os endpoints de agenda individual/facilitador usam SimplyBook para disponibilidade, slots e agendamentos.
Atores
- Administrador/supervisor (configura flags e bloqueios de agenda de facilitador).
- Facilitador (consulta agenda propria).
- Participante (consulta disponibilidade e cria agendamento individual).
- Integracao externa: SimplyBook.
Pre-condicoes
- Flag
enable_calendarconfigurada no curso (we-dhedalos/functions/acfs/group_663b721c7c208.php). - Flag
enable_calendarconfigurada na turma (we-dhedalos/functions/acfs/group_662bf6328d87e.php). - Facilitador com
sb_provider_idem user meta (we-dhedalos/functions/acfs/group_65a16c278d213.php). - Usuario logado para os endpoints de agenda.
Fluxo principal
- Admin configura
enable_calendarno curso e na turma. - API de turmas retorna
enable_calendarefetivo porANDentre curso e turma (we-dhedalos/functions/rest/classes.php:541-547ewe-dhedalos/functions/rest/classes.php:1521-1522). - Participante consulta disponibilidade/slots e agenda mentoria (
we-dhedalos/functions/rest/individual_disponibility.php,we-dhedalos/functions/rest/individual_booking.php). - Facilitador consulta agenda semanal (
we-dhedalos/functions/rest/calendar.php:47-63).
Fluxos alternativos
- Usuario fora da turma: erro
404em endpoints individuais (we-dhedalos/functions/rest/individual_disponibility.php:14-16,we-dhedalos/functions/rest/individual_booking.php:17-19). - Facilitador sem
sb_provider_id: erro400(we-dhedalos/functions/rest/individual_disponibility.php:25-27,we-dhedalos/functions/rest/calendar.php:55-57). - Parametro
weekfora de 1..52 rejeitado por validacao (we-dhedalos/functions/rest/individual_disponibility.php:82-89,we-dhedalos/functions/rest/calendar.php:104-110).
Regras de negocio
enable_calendarefetivo da turma =enable_calendar(curso) && enable_calendar(classes). Fonte:we-dhedalos/functions/rest/classes.php:541-547ewe-dhedalos/functions/rest/classes.php:1521-1522.- GET da agenda do facilitador exige
user_is_facilitator; bloqueio/desbloqueio de agenda exigeuser_is_admin(funcao que aceitafacilitator,supervisoreadministrator). Fonte:we-dhedalos/functions/rest/calendar.php:96-123. - Criacao de booking individual valida data futura (
validate_datetime_in_future). Fonte:we-dhedalos/functions/rest/individual_booking.php:110-117.
Estados possiveis
enable_calendarno curso:0(inativo) ou1(ativo).enable_calendarna turma:0(inativo) ou1(ativo).- Estado efetivo da agenda na turma (retornado pela API):
falseoutrue.
Endpoints envolvidos
- OpenAPI
GET /dhedalos/v1/facilitator/calendar - OpenAPI
POST /dhedalos/v1/facilitator/calendar - OpenAPI
GET /dhedalos/v1/individual/disponibility - OpenAPI
GET /dhedalos/v1/individual/available-slots - OpenAPI
POST /dhedalos/v1/individual/booking - OpenAPI
DELETE /dhedalos/v1/individual/booking - OpenAPI
GET /dhedalos/v1/individual/bookings - OpenAPI
GET /dhedalos/v1/bookings/{booking_id} - OpenAPI
GET /dhedalos/v1/classes/subscriber(retornaenable_calendar) - OpenAPI
GET /dhedalos/v1/classes/facilitator(retornaenable_calendar)
Tabelas/CPTs afetados
- model.md
curso(metaenable_calendar) - model.md
classes(metaenable_calendar) - model.md
students(validacao de pertencimento de turma) - model.md
wp_users/wp_usermeta(sb_provider_id) - model.md
${prefix}simplybook_api_requests_log(log de chamadas SimplyBook)
Pendencias/duvidas
- Nao foi encontrada validacao backend bloqueando endpoints de agenda quando
enable_calendaresta desligado; a flag aparece como dado de saida para consumo do cliente.