Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ariellukezz/admision-web/llms.txt

Use this file to discover all available pages before exploring further.

The Sistema de Admisión Web ships with a comprehensive reporting layer that covers every stage of the admissions lifecycle — from first pre-registration through final biometric check-in. Reports are available in two output formats: PDF (rendered by barryvdh/laravel-dompdf via the Pdf facade) and Excel (generated by maatwebsite/excel). All report endpoints are scoped to auth()->user()->id_proceso, so switching the active process automatically changes the data set without any additional filtering.

Available Report Types

1. Pre-inscriptions Excel Export

ExcelController::export() produces a grouped XLSX file containing one sheet-block per program. Each record includes: id, id_postulante, DNI, full name (nombres, paterno, materno), phone, email, program, modality, process, registration date, sex, inscription status, and any observations. The file is streamed directly to the browser.
POST /export-excel
Content-Type: application/json

{
  "programa": 3,
  "term": "garcia"
}
The /export-excel route is not under the /admin prefix. It requires authentication (auth middleware) but is accessible to any authenticated user. When auth()->user()->programas is not null, the export is automatically scoped to the programs assigned to that user, enabling regional coordinators to download only their own programs.
The file is named {d-m-Y H:i:s}preinscritos.xlsx and is generated by the PreinscripcionExport class, which receives the collection already grouped by program.

2. Summary by Program (Pre-inscriptions vs Inscriptions)

ReporteController::reportePrograma() generates a side-by-side comparison of pre-inscription and inscription counts per program, including the numerical difference. Results can be returned as JSON for on-screen display or streamed directly as PDF.
# JSON response (on-screen display)
POST /admin/reporte-programa

# PDF download
POST /admin/reporte-programa
Content-Type: application/json
{ "descargar": 1 }
JSON response shape:
{
  "estado": true,
  "datos": [
    {
      "codigo": 3,
      "programa": "INGENIERÍA CIVIL",
      "inscripciones": 142,
      "preinscripciones": 189,
      "diferencia": 47
    }
  ],
  "totales": [
    {
      "total_inscripciones": 1840,
      "total_preinscripciones": 2310,
      "total_diferencia": 470
    }
  ]
}
PDFs are saved to public/documentos/{id_proceso}/reportes/ReporteProgramas_{timestamp}{user_id}.pdf before being streamed to the browser, creating a server-side audit copy.

3. Daily Inscription Report by Program

ReporteController::reporteProgramaDiario() pivots inscriptions by calendar date, generating one column per day that has at least one inscription. This is ideal for tracking registration momentum across the registration window. Returns HTTP 404 with { "message": "No hay datos disponibles para este proceso" } when no inscriptions exist for the process.
# JSON
POST /admin/reporte-programa-diario

# PDF download
POST /admin/reporte-programa-diario
Content-Type: application/json
{ "descargar": 1 }
JSON response shape:
{
  "estado": true,
  "datos": [
    { "programa": "INGENIERÍA CIVIL", "codigo": 3, "ins_2025-02-01": 12, "ins_2025-02-02": 8, "inscripciones": 142 }
  ],
  "fechas": ["2025-02-01", "2025-02-02"],
  "totales": [{ "ins_2025-02-01": 45, "ins_2025-02-02": 38, "total_inscripciones": 1840 }]
}
The PDF view (Reportes.programa_ins) is rendered on A4 portrait orientation via dompdf.

4. Daily Inscription Report by User (Inscriptor Activity)

ReporteController::reporteUsuarios() pivots inscriptions by the staff member who registered them (id_usuario), producing the same daily-column structure. This allows management to audit individual inscriptor performance and identify anomalies.
# JSON
POST /admin/reporte-usuarios

# PDF download
POST /admin/reporte-usuarios
Content-Type: application/json
{ "descargar": 1 }
JSON response shape:
{
  "estado": true,
  "datos": [
    { "name": "JUAN", "paterno": "MAMANI", "2025-02-01": 45, "2025-02-02": 38, "total": 83 }
  ],
  "fechas": ["2025-02-01", "2025-02-02"],
  "totales": [{ "2025-02-01": 100, "2025-02-02": 85, "total_inscripciones": 1840 }]
}

5. Enrollment Summary (Resumen de Inscripciones)

ResumenInscripcionesController::resumenInscripciones() provides a flexible grouped summary of inscriptions. Access the summary pages via:
  • /admin/resumenes-inscripcion — Grouped inscription summary with PDF and Excel export
  • /admin/resumenes-general — High-level dashboard-style summary page
  • /admin/resumenes-inscripcion-programa-diario — Inscription counts per program per calendar day
  • /admin/reporte-usuarios-diario — Per-staff inscription activity by day
POST /admin/resumen-inscripciones

6. Biometric Summary (Resumen Biométrico)

ResumenBiometricoController::resumenBiometrico() cross-references biometric captures in control_biometrico with admitted results to show how many admitted applicants have completed identity verification.
# JSON
POST /admin/resumen-biometrico

# PDF download
POST /admin/resumen-biometrico
Content-Type: application/json
{ "descargar": 1 }
Access the biometric summary page at /admin/resumenes-biometrico.

7. Demographic Reports (Dashboard Sub-panel)

Ten demographic breakdown endpoints are available under the admin prefix for on-screen chart data:
GET /admin/get-inscritos-genero-reporte           # Gender distribution (postulante.sexo)
GET /admin/get-inscritos-edad-reporte              # Age distribution — top 7 groups
GET /admin/get-inscritos-residencia-reporte        # Residence by dep/prov/dist — top 6
GET /admin/get-inscritos-procedencia-reporte       # Birth place — top 8
GET /admin/get-inscritos-egreso-reporte            # Graduation year — top 7
GET /admin/get-inscritos-discapacidad-reporte      # Disability flag (postulante.discapacidad)
GET /admin/get-inscritos-tipo-documento-reporte    # Document type (DNI vs other)
GET /admin/get-inscritos-colegio-reporte           # Top 7 schools by cod_modular
GET /admin/get-inscritos-procedencia-colegio-reporte  # School location — top 7
GET /admin/get-inscritos-tipo-colegio-reporte      # School management type (colegios.gestion)
All ten endpoints return { "datos": [...], "estado": true } and are consumed by the Chart.js visualisations in Admin/Dashboard/components/reportes.vue. These endpoints are handled by DashboardController methods (reporteInscritosGenero, reporteInscritosEdad, etc.).

Report Navigation

Resumenes de Inscripción

/admin/resumenes-inscripcion — Flexible grouped inscription summary.

Resumen General

/admin/resumenes-general — High-level dashboard-style summary page.

Programa Diario

/admin/resumenes-inscripcion-programa-diario — Inscription counts per program per calendar day.

Usuario Diario

/admin/reporte-usuarios-diario — Per-staff inscription activity by day.

Resumen Biométrico

/admin/resumenes-biometrico — Biometric capture completion report by area/program/modality.

Trazabilidad

/admin/trazabilidad — Full audit trail of all administrative actions, filterable by actor, action, and date range.

Excel Export Details

The maatwebsite/excel package is used for XLSX generation. The pre-inscriptions export is invoked via ExcelController::export():
return Excel::download(new PreinscripcionExport($datos), date('d-m-Y H:i:s')."preinscritos.xlsx");
The PreinscripcionExport class receives a collection already grouped by program. Each group produces a labelled section in the spreadsheet. Columns include: id, id_postulante, dni, nombres, paterno, materno, celular, email, programa, id_programa, id_modalidad, modalidad, proceso, fecha, sexo, estado, observacion.

PDF Report Details

All PDF reports use barryvdh/laravel-dompdf with PHP execution and HTML5 parsing enabled:
$pdf = Pdf::loadView('Reportes.programa_pre_ins', compact('res', 'proceso', 'totales'));
$pdf->getDomPDF()->set_option("isPhpEnabled", true);
$pdf->getDomPDF()->set_option("isHtml5ParserEnabled", true);
$pdf->setPaper('A4', 'portrait');
Blade templates for each report type live in resources/views/Reportes/:
TemplateReport
programa_pre_ins.blade.phpPre-inscriptions vs inscriptions by program (reportePrograma)
programa_ins.blade.phpDaily inscriptions by program (reporteProgramaDiario)
usuarios_inscripciones.blade.phpDaily inscriptions by staff user (reporteUsuarios)
Every PDF is saved to public/documentos/{id_proceso}/reportes/ before streaming, creating a persistent server-side archive.

Audit Trail Export

The audit trail can be browsed and filtered at /admin/trazabilidad and accessed programmatically via AuditTrailController:
# Paginated audit log (25 per page by default)
GET /admin/trazabilidad/data?action=UPDATE&user_id=5&date_from=2025-01-01&date_to=2025-01-31

# 30-day action summary
GET /admin/trazabilidad/resumen?id_proceso=14
Supported query parameters for the paginated log:
ParameterDescription
actionFilter by action type (e.g. CREATE, UPDATE, DELETE)
model_typeFilter by affected model class
user_idFilter by the actor’s user ID
target_user_idFilter by the target user ID
id_procesoFilter by process ID
date_fromStart date (inclusive) — YYYY-MM-DD
date_toEnd date (inclusive) — YYYY-MM-DD
searchFull-text search on description and alias fields
per_pagePage size (default 25)
The 30-day summary endpoint returns:
{
  "estado": true,
  "datos": {
    "by_action": { "CREATE": 142, "UPDATE": 89, "DELETE": 12 },
    "by_model":  [ { "model": "Vacante", "total": 45 }, { "model": "Proceso", "total": 12 } ],
    "top_actors": [ { "name": "admin@unap.edu.pe", "total": 87 } ]
  }
}
Enable audit trail review as part of your regular compliance workflow. Every INSERT, UPDATE, and DELETE performed by admin users is recorded in audit_trail with the user ID, alias, affected model, process ID, and a human-readable description. The 30-day resumen endpoint (GET /admin/trazabilidad/resumen) gives you a rapid summary of what changed and who changed it — essential for institutional accountability audits and for investigating any data discrepancies in published results.

Build docs developers (and LLMs) love