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_enabledconfigurado (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
- Endpoint de inscricao busca status
is_re_enroll_enabledpor 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. - 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. user_can_enrollaplica regras de matricula ativa/cancelada e retornare_enroll. Fonte:we-dhedalos/functions/rest/course/enroll.php:205-276.- Matricula e criada em
studentscom metais_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
400com 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|falseere_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(metais_re_enroll_enabled) - model.md
ciclo/classes(selecao da oferta atual) - model.md
students(metais_re_enroll,is_enroll_canceled,cancel_date)
Pendencias/duvidas
- Em
user_can_enroll, a variavel$cancel_datee 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.