Pular para o conteúdo principal

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_calendar configurada no curso (we-dhedalos/functions/acfs/group_663b721c7c208.php).
  • Flag enable_calendar configurada na turma (we-dhedalos/functions/acfs/group_662bf6328d87e.php).
  • Facilitador com sb_provider_id em user meta (we-dhedalos/functions/acfs/group_65a16c278d213.php).
  • Usuario logado para os endpoints de agenda.

Fluxo principal

  1. Admin configura enable_calendar no curso e na turma.
  2. API de turmas retorna enable_calendar efetivo por AND entre curso e turma (we-dhedalos/functions/rest/classes.php:541-547 e we-dhedalos/functions/rest/classes.php:1521-1522).
  3. Participante consulta disponibilidade/slots e agenda mentoria (we-dhedalos/functions/rest/individual_disponibility.php, we-dhedalos/functions/rest/individual_booking.php).
  4. Facilitador consulta agenda semanal (we-dhedalos/functions/rest/calendar.php:47-63).

Fluxos alternativos

  • Usuario fora da turma: erro 404 em 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: erro 400 (we-dhedalos/functions/rest/individual_disponibility.php:25-27, we-dhedalos/functions/rest/calendar.php:55-57).
  • Parametro week fora 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_calendar efetivo da turma = enable_calendar(curso) && enable_calendar(classes). Fonte: we-dhedalos/functions/rest/classes.php:541-547 e we-dhedalos/functions/rest/classes.php:1521-1522.
  • GET da agenda do facilitador exige user_is_facilitator; bloqueio/desbloqueio de agenda exige user_is_admin (funcao que aceita facilitator, supervisor e administrator). 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_calendar no curso: 0 (inativo) ou 1 (ativo).
  • enable_calendar na turma: 0 (inativo) ou 1 (ativo).
  • Estado efetivo da agenda na turma (retornado pela API): false ou true.

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 (retorna enable_calendar)
  • OpenAPI GET /dhedalos/v1/classes/facilitator (retorna enable_calendar)

Tabelas/CPTs afetados

  • model.md curso (meta enable_calendar)
  • model.md classes (meta enable_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_calendar esta desligado; a flag aparece como dado de saida para consumo do cliente.