Preregistro de Estudiantes (Pre-Register)

El modulo de pre-registros permite que cualquier persona realizar una pre-inscripción. Luego un admin verifica la información de pago y lo confirma. Cuando se confirma un pre-registro se crea un nuevo estudiante.


Routes

Method URI Action
GET /preregistered-students index
GET /preregistered-students/{id} show
POST /preregistered-students store
PATCH /preregistered-students/{id} update
DELETE /preregistered-students/{id} delete
POST /preregistered-students/{id}/confirm confirma el preregistro

Model Attributes

{
  "id": 1,
  "email": "diana80@lakin.org",
  "id_document": 20337257,
  "first_name": "Stan Keebler",
  "last_name": "Carroll",
  "gender": "male",
  "schedule_shift": "morning",
  "address": "6478 Willa Extension Apt. 425\nJakubowskichester, IL 88307",
  "birth_place": "6478 Willa Extension Apt. 425\nJakubowskichester, IL 88307",
  "birth_date": "2002-03-30",
  "phone": "+4440421601623",
  "mobile_phone": "+4440421601623",

  "payment_date": "2020-03-30",
  "payment_receipt_number": 19997765,
  "payment_amount": 500000000,   // este valor se guarda en centimos. 500000000 -> 5000000.00
  "payment_type": "bank_transfer",

  "educational_background": "superior",
  "educational_title": "Prof.",
  "educational_institution_name": "Genevieve Stoltenberg",
  "educational_graduation_date": "2019-03-30",
  "educational_current_activity": "trabajando?",

  "representative_email": "mossie.beer@yahoo.com",
  "representative_name": "Shea Murray",
  "representative_profession": "Wellhead Pumper",
  "representative_address": "6478 Willa Extension Apt. 425\nJakubowskichester, IL 88307",

  "confirmed_at": null, // datetime cuando sea confirmado 

  "period_id": 1, // referencia al periodo en el que se ore-registro el estudiante
  "specialization_id": 1, // la especialidad que eligio el estudiante, se usara como recordatorio al llegar al 3er semestre

  "updated_at": "2020-03-30 20:44:34",
  "created_at": "2020-03-30 20:44:34",

  "social_networks": { // o null
    "instagram": "http://...",
    "facebook": "http://...",
    "twitter": "http://..."
  }
}

Tipos de pagos

Tipo Valor manejado
Efectivo 1
Transferencia Bancaria 3
Trasferencia Zelle 5

Index

Route GET /preregistered-students

Policies

  • admin
  • low admin

Filters extends Query Filters

Filter Description
search=string Filtra a traves de email, first_name, last_name, id_document, payment_receipt_number
confirmed Obtiene los pre-registros confirmados
not_confirmed Obtiene los pre-registros no confirmados
gender=string Filtra por genero
specialization=int Obtiene los pertenecientes a una especialidad especifica specialization_id
payment_date=Y-m-d Filtra a traves de fecha de pago. Soporta operadores de busqueda >, <, >=, <=
payment_type=string Filtra por tipo de pago
payment_amount=string Filtra por monto del pago. Soporta operadores de busqueda >, <, >=, <=

Response 200

[
  {
    // Model Attributes
  }
]

Store

Esta ruta es publica, no requiere de autorizaciones por lo que cualquier persona puede pre-inscribirse.


Para poder pre-registrarse hace falta un periodo que permita pre-registros. De no detectar ninguno que no cumpla esta condiciones se retornara el error correspondiente.

{primary} La búsqueda del periodo toma como punto de inicio el periodo habilitado, si el periodo habilitado no permite pre-registros entonces se busca el "siguiente periodo" cercano, si este tampoco permite se retornara un error

Route POST /preregistered-students

Policies

  • Es una ruta pública

Request Body

{
  "email": "required|email|unique:preregistered_students,email|unique:users,email",
  "id_document": "required|string",
  "first_name": "required|string",
  "last_name": "required|string",
  "gender": "required|string|in:male,female",
  "schedule_shift": "required|string|in:morning,afternoon,mixed",
  "specialization": "required|string",
  "address": "required|string",
  "birth_place": "required|string",
  "birth_date": "required|date_format:Y-m-d|before:now",
  "phone": "required|string",
  "mobile_phone": "required|string",

  "payment_date": "required|date_format:Y-m-d",
  "payment_receipt_number": "required|string",
  "payment_amount": "required|integer|min:0", // en centimos
  "payment_type": "required|string|in:1,3,5",

  "educational_background": "required|string|in:medium,superior",
  "educational_title": "required|string",
  "educational_institution_name": "required|string",
  "educational_graduation_date": "required|date_format:Y-m-d|before:now",
  "educational_current_activity": "required|string",

  "representative_email": "required|email",
  "representative_name": "required|string",
  "representative_profession": "required|string",
  "representative_address": "required|string",

  "specialization_id": "required|integer|exists:specializations,id" // la especialidad del estudiante, se usara como recordatorio al llegar al 3er semestre

  "social_networks.instagram": "nullable|url|max:128", 
  "social_networks.facebook": "nullable|url|max:128", 
  "social_networks.twitter": "nullable|url|max:128" 
}

Update

Route PATCH /preregistered-students/{id}

Policies

  • admin
  • low admin

Request Body

{
  "id_document": "string",
  "first_name": "string",
  "last_name": "string",
  "gender": "string|in:male,female",
  "schedule_shift": "string",
  "specialization": "string",
  "address": "string",
  "birth_place": "string",
  "birth_date": "date_format:Y-m-d",
  "phone": "string",
  "mobile_phone": "string",

  "payment_date": "date_format:Y-m-d",
  "payment_receipt_number": "string",
  "payment_amount": "integer|min:0",
  "payment_type": "string|in:1,3,5",

  "educational_background": "string|in:medium,superior",
  "educational_title": "string",
  "educational_institution_name": "string",
  "educational_graduation_date": "date_format:Y-m-d",
  "educational_current_activity": "string",

  "representative_email": "email",
  "representative_name": "string",
  "representative_profession": "string",
  "representative_address": "string",

  "specialization_id": "integer|exists:specializations,id" // la especialidad del estudiante, se usara como recordatorio al llegar al 3er semestre
}

Delete

Route DELETE /preregistered-students/{id}

Policies

  • admin
  • low admin

Response 204 No Content

Confirmar Pre-Registro

Que efectos tiene este accion?

  1. Guarda el usuario preregistrado como un estudiante
  2. Se le asigna al estudiante creado el pensum por defecto segun el periodo del pre-registro.
  3. Se le asigna el estudiante auna sección según su pensum.
  4. Actualiza la sección asignada al estudiante para reducir los cupos disponibles.
  5. Por cada course_section.id se crea un course_section_student al estudiante
  6. Envia la notifiación Pre-registro Confirmado al correo asociado .
  7. Genera un usuario al estudiante y se envia la notifiación de Confirma Usuario.
  8. Marca el pre-registro como confirmado, esto asegura no poder volverlo a confirmar.


Posibles errores

  • Si no se encontro secciones con las relaciones utilizadas (specialization_id del pensum, semester_id del pensum y period_id del pre-gistro)
  • Si una sección esta llena o no tiene cupos disponibles definidos en el limite de la sección (puede no estar llena, pero podria no tener cupos para estudiantes hombres)
  • Si pensum no tiene semestre asociado (Se debe asegurar que cada pensum tenga un semestre asociado)
  • Si el pre-registro ya esta confirmado confirmed_at !== null

{info} La asignación de sección es aleatoria

Route POST /preregistered-students/{id}/confirm

Policies

  • admin
  • low admin

Response 204