Commit Graph

11 Commits

Author SHA1 Message Date
Nurfog 235f15e1e7 fix: audit 89 bugs - critical fixes
CRITICAL:
- JwtMiddleware orden (antes de UseAuthentication)
- JWT Secret en appsettings.json (no vacio)
- Transbank MySQL connection string (User=root + placeholder)
- package-lock generado + Dockerfile usa npm install
- Tests E2E: selectores corregidos con name attributes
- Tests: rut invalido reemplazado, casos sin auth
- Contacto page: apunta a services-externos (no backend)
- .env.example: credenciales reales -> placeholders

HIGH:
- extra_hosts agregado a services-externos en compose
- Dockerfile frontend: npm ci -> npm install
2026-07-08 11:30:16 -04:00
Nurfog 129991cfb7 feat: complete fases 3,4,5 - frontend, containers, e2e tests
FASE 3 - Frontend (22 paginas):
- Leads (listado, detalle, nuevo), Cotizaciones, Arqueo
- Cursos, Alumnos, Empresas (listado, detalle, ventas)
- Reportes (ventas, ventas-empresas, reimpresion)
- Autorizador, Contacto

FASE 4 - Contenedores:
- docker-compose.yml (backend-api + services-externos + frontend)
- Dockerfiles para backend, services-externos, frontend
- .env.example con secretos

FASE 5 - Pruebas E2E:
- Playwright config + 3 spec files (login, leads, dashboard)
- 7 escenarios: login, error, sidebar, crear lead,
  dashboard cards, timeout, reportes
2026-07-08 11:07:27 -04:00
Nurfog 9c1eb20132 fix: 27 bugs corregidos en auditoria f1+f2
CRITICAL:
- JWT Secret vacio -> fallback seguro en Program.cs
- QuestPDF License -> inicializada como Community
- Transbank SPs en MySQL (no PostgreSQL) + MySqlConnector package
- GrabarVoucher: 15 parametros (estaban 8)

ALTO:
- JwtMiddleware registrado en pipeline
- AuthController.Perfil con [Authorize]
- LeadRepository.IngresarAsync: ExecuteReader -> Execute
- Casts directos en LeadQueryRepository -> double cast IDictionary
- EmailService: try-finally con DisconnectAsync
- DteController ruta: parametro codigo no usado -> corregido

MEDIO:
- Schema prefix faltante en Buscar_LeadDiarios
- appsettings secretos movidos a env vars
- http template eliminado
- Fono string en vez de int en EmpresaController
- model validation faltante
2026-07-08 10:46:01 -04:00
Nurfog 202a59326b feat: complete all 17 questpdf crystal report migrations
- Anexo, ContratoBlack, Presupuesto reports (ReportService)
- CAEMP (ContratoAbiertoSinSence), CAEMPSNC (ContratoAbiertoConSence)
- CC_EMPCSD (ContratoCerradoConDescuento), PropuestaComercial
- All endpoints added to ReportController + EmpresaReportController
- Fase 1 now 100% complete: 21 controllers, 8 services, 7 repos, 17 reports
2026-07-08 10:28:47 -04:00
Nurfog c1e35445f6 feat: complete fase 1 - all controllers, services, middleware
- Added Ejecutivo.cs entity
- ArqueoService + ArqueoController (arqueos por fecha/usuario)
- 13 missing controllers: Curso, Descuento, Documento, Empresa, Horario,
  Jornada, Programa, Propuesta, Region, Sala, Sede, Tarifa, Usuario
- JwtMiddleware.cs for cookie/token validation
- SpComplexQueries.cs for Dapper multi-resultset
- ArqueoService registered in DI
- Build: 0 errors
- Total: 21 controllers, 8 services, 7 repos, 21 entities
2026-07-08 10:26:20 -04:00
Nurfog 1b1baaf6bf fix: complete repository layer and refactor services
- Added ContratoRepository, CotizacionRepository, AlumnoRepository, UsuarioRepository (Infrastructure)
- Added IInformeRepository + InformeRepository for report SPs
- Refactored ContratoService, CotizacionService, AlumnoService, UsuarioService to use repos via DI
- Refactored InformeService, EmpresaReportService to use IInformeRepository
- Updated Program.cs DI to wire repos correctly with connection string factory
- Build: 0 errors
2026-07-08 10:16:12 -04:00
Nurfog df028eb4dd feat: enterprise questpdf reports
- EmpresaReportService with 4 enterprise PDF reports
- ContratoAbierto: contract header, course detail, schedules, students
- ContratoCerrado: proposal info, courses, student list
- CotizacionCursoCerrado: quote header, course detail table
- CotizacionPlanCentral: company info, payment plan, course schedule
- EmpresaReportController with download endpoints
- All using ModuloEmpresa_PropuestaCrystalReport SP via Dapper
2026-07-08 09:27:26 -04:00
Nurfog e1367fc23a feat: questpdf reports for contrato, cotizacion, arqueo
- ReportService with 3 QuestPDF report generators
- Contrato PDF with header, student info, and course table
- Cotización PDF with customer info, total, and detail table
- Arqueo PDF with cashier summary and payment method breakdowns
- ReportController with endpoints for PDF download
- Registered in DI
2026-07-08 09:22:25 -04:00
Nurfog 2dfe7daa2c feat: remaining services and controllers
- ContratoService + ContratoController (CRUD, PDF data, empresa, firma)
- CotizacionService + CotizacionController (CRUD, detalle, pago, empresa)
- AlumnoService + AlumnoController (CRUD, apoderado, consultas, colegios)
- InformeService + InformeController (reportes ventas, leads, documentos)
- All services registered in DI (Program.cs)
2026-07-07 17:59:38 -04:00
Nurfog aed251d82f feat: services, jwt auth, and api controllers
- LeadService with 15 SP calls (CRUD, actividades, pagos, montos)
- UsuarioService for login and profile queries
- JwtService for token generation with claims
- AuthController (login, perfil) with HttpOnly cookie
- LeadController (CRUD, actividades, estado, pago, contacto)
- Registered all services in DI (Program.cs)
2026-07-07 17:56:25 -04:00
Nurfog 3d5419403d feat: core entities, infrastructure, and lead repositories
- 25 domain entities mapped from original Datos/ classes
- 4 enums (EstadoLead, TipoPago, TipoDocumento, TipoDescuento)
- DTOs for Lead, Auth flows
- 6 repository interfaces
- VentasDbContext with EF Core + Npgsql
- LeadRepository (command SPs) and LeadQueryRepository (query SPs) with Dapper
- Program.cs with JWT auth, CORS, DI setup
- appsettings.json with connection string
- .gitignore for bin/obj/node_modules
- ROADMAP.md for daily progress tracking
2026-07-07 17:45:49 -04:00