Pular para o conteúdo principal

Feature: Rematricula

Visao geral

A rematricula e controlada pela flag de curso is_re_enroll_enabled. Quando ativa, os checks de matricula consideram o ciclo disponivel atual para decidir se o usuario pode se matricular novamente.

Atores

  • Participante.
  • Servico/backend de inscricao.
  • Admin/supervisor (configura flag no curso).

Pre-condicoes

  • Curso com is_re_enroll_enabled configurado (we-dhedalos/functions/acfs/group_663b721c7c208.php:104-123).
  • Existencia de ciclo/turma disponivel para o curso (we-dhedalos/functions/rest/course/enroll.php:41-57).
  • Usuario valido (we-dhedalos/functions/rest/course/enroll.php:47-51).

Fluxo principal

  1. Endpoint de inscricao busca status is_re_enroll_enabled por slug (get_re_enroll_status_by_slug). Fonte: we-dhedalos/functions/rest/course/enroll.php:90-94, we-dhedalos/functions/utils/classes_tools.php:555-590.
  2. Com rematricula ativa, inscricoes antigas sao filtradas para o ciclo atual (filter_user_enrolls_from_diff_cycle). Fonte: we-dhedalos/functions/rest/course/enroll.php:92-94.
  3. user_can_enroll aplica regras de matricula ativa/cancelada e retorna re_enroll. Fonte: we-dhedalos/functions/rest/course/enroll.php:205-276.
  4. Matricula e criada em students com meta is_re_enroll. Fonte: we-dhedalos/functions/utils/classes_tools.php:193-201.

Fluxos alternativos

  • Sem ciclos/turmas disponiveis: erro 400 (we-dhedalos/functions/rest/course/enroll.php:43-57).
  • Usuario ja inscrito/nao elegivel: erro 400 com mensagem de regra (we-dhedalos/functions/rest/course/enroll.php:103-105).
  • No endpoint de status de inscricao, sem ciclos disponiveis tambem retorna erro 400. Fonte: we-dhedalos/functions/rest/course/enrolled.php:34-42.

Regras de negocio

  • Flag da rematricula e lida por slug com cache (re_enroll_status_<slug>). Fonte: we-dhedalos/functions/utils/classes_tools.php:557-588.
  • Se houver matricula ativa, usuario nao pode matricular novamente. Fonte: we-dhedalos/functions/rest/course/enroll.php:231-238.
  • Matriculas canceladas contam para elegibilidade (janela de 1 ano no endpoint de status). Fonte: we-dhedalos/functions/rest/course/enrolled.php:49-75.
  • Regras de conflito de periodo (quando curso bloqueia) tambem interferem na inscricao. Fonte: we-dhedalos/functions/utils/classes_tools.php:342-391.

Estados possiveis

  • Flag do curso: is_re_enroll_enabled = 0|1.
  • Resultado de avaliacao: user_can_enroll = true|false e re_enroll = true|false.

Endpoints envolvidos

  • OpenAPI POST /dhedalos/v1/enroll/{slug_curso}
  • OpenAPI GET /dhedalos/v1/course/enrolled/{slug_curso}/{user_id}
  • OpenAPI GET /dhedalos/v1/enroll/{slug_curso}/status

Tabelas/CPTs afetados

  • model.md curso (meta is_re_enroll_enabled)
  • model.md ciclo / classes (selecao da oferta atual)
  • model.md students (meta is_re_enroll, is_enroll_canceled, cancel_date)

Pendencias/duvidas

  • Em user_can_enroll, a variavel $cancel_date e usada sem definicao explicita na closure (we-dhedalos/functions/rest/course/enroll.php:247-252), o que pode afetar a regra de janela temporal para cancelamentos.