Academia Deltamontero · Documentación
Desarrollolocal_deltamodules

Clientes

Empresas cliente como cohortes cli_*, sus módulos, sus usuarios, los códigos de registro, el autorregistro y la expiración del acceso.

La capacitación externa se organiza por empresas cliente. La lógica está en classes/clients.php; la pantalla es clients.php (barra superior "Clientes") y el autorregistro, clientsignup.php.

Modelo

ElementoImplementación
EmpresaCohorte de sistema con idnumber cli_ + 10 caracteres (clients::PREFIX). El nombre debe ser único entre las empresas.
Datos de la empresaTabla local_deltamodules_client (una fila por cohorte): razón social, RUC, nombre comercial, sector, dirección, ciudad, teléfono, correo, contacto y su cargo, teléfono y correo, inicio, acceso hasta (fin), activa y notas. Los campos editables y sus etiquetas están en clients::FIELDS.
UsuariosMiembros de la cohorte de la empresa y, además, de la cohorte general "Clientes" (clientes), para que Personal Deltamontero los muestre como tipo Cliente.
MódulosMatrícula por cohorte (rol student, nombre de instancia "Cliente") en cada curso asignado. Se puede asignar cualquier curso menos PTS.
Códigos de registroTabla local_deltamodules_clientcode: código CL-XXXXX, vencimiento (0 = no vence, al final del día), usos máximos (0 = sin límite), usos, anulado y nota.

API de clients

MétodoQué hace
all(), get($id)Empresas con conteos (usuarios, módulos, códigos vigentes), datos y si está activa. get valida que la cohorte sea cli_*.
create($name, $note), update(...)Crear o renombrar una empresa.
data($cohortid), save_data($cohortid, $in)Leer (creando la fila vacía si falta) y guardar los datos.
is_active($cohortid)Activa y dentro de su fecha de acceso.
set_active($cohortid, $on)Desactivar suspende a todos sus usuarios y cierra sus sesiones; activar los reactiva (y borra una fecha de acceso ya vencida). El avance se conserva.
set_user_active($cohortid, $userid, $on)Suspender o reactivar a una persona de la empresa.
expire()Desactiva las empresas cuya fecha fin pasó. La ejecuta la tarea diaria client_expiry.
delete($id)Elimina la empresa completa: suspende al instante a sus usuarios (en tandas de 500) y encola la tarea ad hoc delete_client_users para borrarlos en segundo plano; quien también pertenece a otra empresa solo sale de esta. Borra instancias de matrícula, códigos, datos y la cohorte.
courses(), assigned($cohortid), set_modules($cohortid, $courseids)Cursos asignables, asignados, y dejar asignados exactamente los indicados.
members, company_of, add_user, remove_userUsuarios de la empresa y empresas de un usuario.
progress($cohortid)Porcentaje de avance de cada usuario en cada módulo de la empresa (core_completion\progress).
codes, code_state, generate_code, revoke_code, valid_codeCódigos: estados activo, vencido, usado, anulado. Un código solo es válido si está activo y la empresa también.
message($company, $k)Texto listo para enviar con el enlace y el código.
register($code, $d)Crea la cuenta (usuario = correo en minúsculas, cédula en idnumber, contraseña elegida), la agrega a la empresa, suma un uso al código, sincroniza matrículas y envía el correo clientwelcome.

Autorregistro: clientsignup.php

Página pública (enlazada desde la portada y la pantalla de ingreso). Paso 1: el código de la empresa. Paso 2: nombres, apellidos, cédula, correo y contraseña; se crea la cuenta y entra directo. Después entra siempre con su correo (el sitio permite iniciar sesión con el correo, authloginviaemail = 1). Límite anti-abuso: 10 envíos fallidos por equipo cada 30 minutos. Al entrar, Moodle le pide aceptar el aviso de datos personales como a todos.

Pantalla clients.php

Capacidad local/deltamodules:manageclients (por perfil, solo el Jefe de Talento Humano; y el super administrador). Pestañas en el orden de trabajo: 1 Datos → 2 Módulos → 3 Código de registro → 4 Usuarios y avance. Sin pestaña elegida abre el primer paso que falta. Desde Códigos se puede enviar el código por correo (mailer::client_code, tipo clientcode).

Tareas

TareaTipoCuándoQué hace
local_deltamodules\task\client_expiryProgramadaTodos los días a la 01:30clients::expire()
local_deltamodules\task\delete_client_usersAd hocAl eliminar una empresaBorra con delete_user() las cuentas indicadas, salvo super administradores y quien, mientras tanto, pertenezca a otra empresa cli_* o tenga una cohorte cargo_*.

En esta página