Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
e665dc5
feat(tutoring):show avaible tutors for student in /dashboard/student/…
AlejandroHenao2572 Dec 7, 2025
eaecc4c
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 8, 2025
907c933
fix: pulled develop changes and fixed conflict with tutoring.tsx
AlejandroHenao2572 Dec 8, 2025
3752c0d
feat(tutorig): show scheduled session in /dashboard/student/tutoring …
AlejandroHenao2572 Dec 8, 2025
4891c25
feat(tutorig): show tutor name in 'Mis tutorias'
AlejandroHenao2572 Dec 8, 2025
f0e18c8
feat(tutorig): show subject code and name in details
AlejandroHenao2572 Dec 8, 2025
40d5ed5
feat(tutorig): make connection link to meeting directionable
AlejandroHenao2572 Dec 8, 2025
c008ab3
feat(tutorig): submit tutoring form to request tutoring sesion
AlejandroHenao2572 Dec 8, 2025
edd7100
feat(tutoring): select subject of list in tutoring session form
AlejandroHenao2572 Dec 8, 2025
58f5466
feat(tutoring): show tags of avaible subjects for tutor
AlejandroHenao2572 Dec 8, 2025
6266858
feat(tutorig): show upcoming sessions in /dashboard/student
AlejandroHenao2572 Dec 9, 2025
5d48d89
feat(tutorig): add 'Ver detalles' button in upcoming tutotigs in /das…
AlejandroHenao2572 Dec 9, 2025
e01618b
feat(tutorig): show in /dashboard/student 'Panel de estudiante' amoun…
AlejandroHenao2572 Dec 9, 2025
a49731c
feat(tutorig): show in /dashboard/student/profile 'Mi perfil'in 'Mis …
AlejandroHenao2572 Dec 9, 2025
7b0935c
feat(tutoring): feature implementation to cancel tutoring session
AlejandroHenao2572 Dec 9, 2025
ff4f2dd
fix(tutoring): improved tutoring status label and cancelation logic
AlejandroHenao2572 Dec 9, 2025
6bac507
fix(tutoring): popup para confirmar exito o error en agendacio de tut…
AlejandroHenao2572 Dec 9, 2025
7fa6d59
feat
Jacobo2025 Dec 10, 2025
d4f3b34
feat(tutorias): mostrar solicitudes pendientes en panel de tutor
AlejandroHenao2572 Dec 11, 2025
cdf3f98
feat(tutorias):funcionalidad para confirmar una tutoria pendiente
AlejandroHenao2572 Dec 11, 2025
6daa1e6
feat(tutorias): mostrar estadisticas de solicitudes: pendientes, conf…
AlejandroHenao2572 Dec 11, 2025
4829f48
feat(tutorias): funcionalidad para rechazar una solicitud en panel de…
AlejandroHenao2572 Dec 11, 2025
5c99b96
fix: fixed conflics from pull develop
AlejandroHenao2572 Dec 11, 2025
3384776
fix: fixed conflics from pull develop again
AlejandroHenao2572 Dec 11, 2025
5f9c8a2
feat(tutorias): mostrar sesiones programadas en panel de tutor
AlejandroHenao2572 Dec 11, 2025
cb148ff
feat(tutorias): marcar una tutoria como completada en el panel de tutor
AlejandroHenao2572 Dec 11, 2025
5004d60
US-127: integra endpoints de ratings y reputación de tutor en el front
fecg2212 Dec 11, 2025
0b7b2f9
US-127: integra endpoints de ratings y reputación de tutor en el front
fecg2212 Dec 12, 2025
2c25d0d
feat: add denied notification type
cmpiedrahita Dec 12, 2025
301fb78
Feat: Inicio de Conexion gateway-front
JuanDiegoRV Dec 12, 2025
9cdd537
Merge pull request #66 from DOSW2025/feature/notifications-redesign
Jared-Farfan Dec 12, 2025
0462793
subir materiales
Jared-Farfan Dec 12, 2025
e5f1e32
visualizar materiales tutores y estudiantes
Jared-Farfan Dec 12, 2025
38277e7
visualizar materiales tutores
Jared-Farfan Dec 12, 2025
887f0e6
descarga de materiales
Jared-Farfan Dec 12, 2025
7117865
vista de material individual de tutor corregida
Jared-Farfan Dec 12, 2025
31fb29b
aumento de vistas y descargas
Jared-Farfan Dec 12, 2025
988c162
Merge pull request #73 from DOSW2025/feature/integracionMateriales
Nella1414 Dec 12, 2025
245b4fd
feat(chats): hook/ws configured
DannielEU Dec 12, 2025
29267dc
fix(chats):url complete
DannielEU Dec 12, 2025
806a81a
feat(tutorias): actualizar disponibilidad horaria del tutor
AlejandroHenao2572 Dec 12, 2025
5d47736
fix(yml): lock pnpm update
DannielEU Dec 12, 2025
452338c
feat(tutorias): mostrar proximas sesiones en panel de tutor
AlejandroHenao2572 Dec 12, 2025
d5af7cc
feat(ia): Se agregó la conexión de recomendaciones en estudiante
Anderfg13 Dec 12, 2025
2ddf4ef
feat(tutorias): mostrar solicitudes recientes en panel de tutor
AlejandroHenao2572 Dec 13, 2025
ce9fb5b
feat(tutorias): agregar comentarios y calificaciones a una sesion
AlejandroHenao2572 Dec 13, 2025
4b22e33
feat: add logo to the web application and refactor code structure for…
Nella1414 Dec 13, 2025
68bf1ae
Feat: Implementar paginación server-side con skip/take
Jared-Farfan Dec 13, 2025
a794aba
feat: add delete chat functionality with confirmation modal
Nella1414 Dec 13, 2025
5b35134
Merge pull request #76 from DOSW2025/feat/general-improves
Nella1414 Dec 13, 2025
88dd597
calificacion de codigo sonar
Jared-Farfan Dec 13, 2025
0d82433
longitud maxima para contenido de notificaciones
Jared-Farfan Dec 13, 2025
bc4a97f
recomendaciones de sonar
Jared-Farfan Dec 13, 2025
c39e706
Feat: Inicio de Conexion gateway-front
JuanDiegoRV Dec 13, 2025
50bcaf7
Merge pull request #75 from DOSW2025/feature/integracion_Materiales
Jared-Farfan Dec 13, 2025
d253864
fix(tutorias): cambio en el mensaje de feedback al calificar una sesion
AlejandroHenao2572 Dec 13, 2025
183a010
Merge branch 'develop' into feature/chats-conexion
Jared-Farfan Dec 13, 2025
beea8fc
Merge pull request #74 from DOSW2025/feature/chats-conexion
Jared-Farfan Dec 13, 2025
acd1e1d
fix(chatOverlay):DeleteModal add
DannielEU Dec 13, 2025
cf64e50
Merge pull request #78 from DOSW2025/fix/DeleteModalAdd
Nella1414 Dec 13, 2025
1ad9f9c
feat(ia): Mejora de sugerencias por copilot
Anderfg13 Dec 13, 2025
25700ea
fix(envWebSocket):only use the env WebSocket
DannielEU Dec 13, 2025
bc1fa9e
Merge pull request #81 from DOSW2025/fix/envs-only
Nella1414 Dec 13, 2025
14df9b4
Merge develop into feature/conexion-apigateway-front-ia
DannielEU Dec 13, 2025
3b523de
feat(ia): Mas sugerencias aplicadas de copilot
Anderfg13 Dec 13, 2025
ef90c5d
feat(ia): Mas modificaciones para que quede de buena calidad el codigo
Anderfg13 Dec 13, 2025
5932951
feat(ia): Documentación de codigo y algunas validaciones
Anderfg13 Dec 13, 2025
bb1098c
Merge branch 'develop' into feature/Conexión-gateway-front-asistente
JuanDiegoRV Dec 13, 2025
3df37f4
Validación en el frontend para distinguir entre una calificación real…
fecg2212 Dec 13, 2025
9096cf6
Merge pull request #83 from DOSW2025/feature/tutor-ratings-integration
AlejandroHenao2572 Dec 13, 2025
208a5c6
fix: fixed conflicts with develop
AlejandroHenao2572 Dec 13, 2025
4ed7051
Merge branch 'feature/conexion-back-front-tutorias' of https://github…
AlejandroHenao2572 Dec 13, 2025
d260b4c
fix: calificacion del tutor en el index
AlejandroHenao2572 Dec 13, 2025
1c0c82b
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 13, 2025
b4c3f95
feat(tutorias):mostrar en panel de estudiante proximas tutorias
AlejandroHenao2572 Dec 13, 2025
ae305a4
feat(tutorias):mostrar calificacion de los tutores en panel de estudi…
AlejandroHenao2572 Dec 13, 2025
1a5cf86
feat(tutorias):mostrar en panel de estudiante tutores recomendados
AlejandroHenao2572 Dec 13, 2025
ebbd481
refactor(chats):improve look
DannielEU Dec 13, 2025
a6f29c6
Merge pull request #84 from DOSW2025/refactor/chats/improvelook
Nella1414 Dec 13, 2025
4c9f4cf
Merge pull request #82 from DOSW2025/feature/Conexión-gateway-front-a…
JuanDiegoRV Dec 13, 2025
959afc0
Revert "Feature/conexión gateway front asistente"
JuanDiegoRV Dec 13, 2025
6259b9d
Merge pull request #85 from DOSW2025/revert-82-feature/Conexión-gatew…
Anderfg13 Dec 13, 2025
eced2d6
feat(Perfil): Se unió front y back de la parte de perfiles
Anderfg13 Dec 13, 2025
063be34
feat(tutorias):mostrar en panel de tutor metricas generales
AlejandroHenao2572 Dec 13, 2025
3fa4c61
feat(perfiles): Se añadió las sugerencias de copilot
Anderfg13 Dec 13, 2025
c1004eb
feat(perfiles): Se eliminó la posibilidad de modificar la foto de pefil
Anderfg13 Dec 13, 2025
4bc4c57
feat(perfiles): Se mejoró la calidad del codigo
Anderfg13 Dec 13, 2025
89493fe
feat(perfiles): Se refactorización de codigo
Anderfg13 Dec 13, 2025
5dd2282
feat(tutorias):mostrar en panel de tutor comentarios recientes
AlejandroHenao2572 Dec 14, 2025
81dedf5
Merge pull request #80 from DOSW2025/feature/conexion-apigateway-fron…
Nella1414 Dec 14, 2025
df17717
Merge pull request #86 from DOSW2025/feature/conexion-apigateway-perfil
Nella1414 Dec 14, 2025
2944fd7
feat(IA): Se añadió la vista previa a los materiales que se sugieren
Anderfg13 Dec 14, 2025
0f0a83e
feat(IA): Se añadieron mas recomendaciones de copilot de la pr
Anderfg13 Dec 14, 2025
70bc343
feat(IA): Se mejoró el codigo y tambien se cambio un mensaje de error
Anderfg13 Dec 14, 2025
6ed1e41
Merge branch 'develop' of https://github.com/DOSW2025/wise_front
mariapaularm Dec 14, 2025
4cd60ea
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 14, 2025
737e951
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 14, 2025
7a67aca
fix - Ignacio Castillo: corrección para la edición de foros.
IgnacioCastillo05 Dec 14, 2025
b9f2dd2
feat(IA): Se eliminó codigo repetido para el cumplimiento de la Quali…
Anderfg13 Dec 14, 2025
a8b92ad
feat(IA): Mas refactorización de codigo duplicado
Anderfg13 Dec 14, 2025
01d0ac2
fix(admin): correct typos in material validation
mariapaularm Dec 14, 2025
c8e35b7
materiales tutor
Jared-Farfan Dec 14, 2025
2c35424
Merge pull request #92 from DOSW2025/fix/admin-material-validation
Nella1414 Dec 14, 2025
7347cd7
feat(profiles): add account deletion functionality
mariapaularm Dec 14, 2025
5cfd8a1
Merge pull request #94 from DOSW2025/feature/Materiales
Jared-Farfan Dec 14, 2025
e833a8d
fix pantalla tutor
Jared-Farfan Dec 14, 2025
b08e6f3
Merge pull request #95 from DOSW2025/feature/Materiales
Jared-Farfan Dec 14, 2025
12bcde8
feat - Ignacio Castillo: primera parte de la conexión de reportes
IgnacioCastillo05 Dec 14, 2025
db51201
fix notificaciones
Jared-Farfan Dec 14, 2025
dabea4a
Merge pull request #97 from DOSW2025/feature/Materiales
Jared-Farfan Dec 14, 2025
0edd0f7
feat - Ignacio Castillo: Segunda parte de la conexión con reportes.
IgnacioCastillo05 Dec 14, 2025
c8ebef2
fix vista materiales tutores
Jared-Farfan Dec 14, 2025
48ad11e
Merge pull request #98 from DOSW2025/feature/Materiales
Jared-Farfan Dec 14, 2025
0cef24c
Refactor code structure for improved readability and maintainability
Nella1414 Dec 14, 2025
8e23ec6
Merge pull request #105 from DOSW2025/feat/icon-name
Nella1414 Dec 14, 2025
4013cb3
Merge pull request #89 from DOSW2025/feature/vistaprevia-IA
Nella1414 Dec 14, 2025
69fb87e
feat(profile): implement account deletion functionality in student pr…
Nella1414 Dec 14, 2025
44f9567
feat(profile): add DeleteAccount and InterestsChips components for ac…
Nella1414 Dec 14, 2025
c7d5956
Merge pull request #93 from DOSW2025/feature/account-deletion
Nella1414 Dec 14, 2025
306b889
feat(tutorings): consolidate modal components and improve session ren…
Nella1414 Dec 14, 2025
8cf775c
Merge branch 'develop' into feature/conexion-back-front-tutorias
Nella1414 Dec 14, 2025
59ae08d
Merge pull request #91 from DOSW2025/feature/conexion-back-front-tuto…
Nella1414 Dec 14, 2025
ec79b2d
refactor(community-forums): remove unused GroupChatCard component and…
Nella1414 Dec 14, 2025
6d5a8d6
fix(profile): improve profile loading and error handling in StudentPr…
Nella1414 Dec 14, 2025
01c8743
fix(community-forums): replace ThumbsUp icon with PartyPopper and cle…
Nella1414 Dec 14, 2025
d50d201
feat(login): redesign login page layout and add new images for improv…
Nella1414 Dec 14, 2025
a9000cf
refactor: change components to use updated font styles and color classes
Nella1414 Dec 14, 2025
3c97ebc
fix(tsconfig): clean up formatting and remove unnecessary line breaks
Nella1414 Dec 14, 2025
8db902a
feat: add feature flag for IA endpoints
Anderfg13 Dec 14, 2025
c2cbd21
feat(IA): Correcipon de error de despliegue
Anderfg13 Dec 14, 2025
18aa292
feat(IA): Mejoras del codigo sugeridas por copilot de la pr
Anderfg13 Dec 14, 2025
fcc1224
Merge pull request #106 from DOSW2025/fix/general
Nella1414 Dec 14, 2025
16d38dc
feat(IA): Refactorización en la parte de IA, para eliminar redundancias
Anderfg13 Dec 14, 2025
3dc47a1
fix(user.service): correct role ID mapping for user roles
Nella1414 Dec 14, 2025
637c256
Merge pull request #59 from DOSW2025/feature/filtros
Nella1414 Dec 14, 2025
b1f4b88
feat(subjects):subjects add
DannielEU Dec 14, 2025
9afb3d5
implementacion corregida asistente IA
JuanDiegoRV Dec 14, 2025
4bca943
feat(tutor-profile): enhance tutor profile service and UI integration
Nella1414 Dec 14, 2025
edc814e
Merge pull request #109 from DOSW2025/feat/tutor-profile
Nella1414 Dec 14, 2025
5bb2402
Merge pull request #108 from DOSW2025/feature/conexion-asistenteIA
Nella1414 Dec 14, 2025
c5f934c
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
Nella1414 Dec 14, 2025
1787a62
fix: update favicon link to use PNG format
Nella1414 Dec 14, 2025
7304aa0
Merge pull request #111 from DOSW2025/feature/adminProfilePage
Nella1414 Dec 14, 2025
353975a
Merge pull request #107 from DOSW2025/feature/feature-flag-ia
Nella1414 Dec 14, 2025
ad112ec
fix(tutors):delete account
DannielEU Dec 14, 2025
762d978
Merge branch 'develop' into tutorias-conexion
DannielEU Dec 14, 2025
1b7061c
feat: enhance landing page layout and visuals with new images and imp…
Nella1414 Dec 14, 2025
7a1fcb9
feat: update expected student and tutor counts on landing page
Nella1414 Dec 14, 2025
1c8ef1b
feat: add custom scrollbar styles to enhance user experience on landi…
Nella1414 Dec 14, 2025
63b3214
Merge pull request #113 from DOSW2025/feat/landing-page
Nella1414 Dec 14, 2025
a619a64
fix(users): adjust Chip size and variant for role display
Nella1414 Dec 14, 2025
6077ce7
Merge pull request #112 from DOSW2025/tutorias-conexion
Nella1414 Dec 15, 2025
6c5dddb
fix(sidebar): comment out unused menu items for student and tutor das…
Nella1414 Dec 15, 2025
d473e3c
feat(help): enhance admin and tutor help sections with new resources …
Nella1414 Dec 15, 2025
bb45bf9
fix(help): remove unused button actions and update hero section layout
Nella1414 Dec 15, 2025
f9dc487
Merge pull request #114 from DOSW2025/fix/profiles
Nella1414 Dec 15, 2025
c0d8189
fix/subir materiales
Jared-Farfan Dec 15, 2025
9266e1d
Merge pull request #115 from DOSW2025/feature/Materiales
Jared-Farfan Dec 15, 2025
b6af0b1
fix(admin): update layout and styling for tutor profile creation modal
Nella1414 Dec 15, 2025
2545fe0
Merge pull request #116 from DOSW2025/fix/admin-create-tutor
Nella1414 Dec 15, 2025
4818373
Pantallas completas de admin
Jared-Farfan Dec 15, 2025
87da663
fix(student): remove recent materials and activity sections from dash…
Nella1414 Dec 15, 2025
9224b38
Pantallas completas de tutores
Jared-Farfan Dec 15, 2025
cbbcfa0
fix(admin): update sidebar paths and add materias management route
Nella1414 Dec 15, 2025
cf13554
feat(materials): implement MaterialCard component for improved materi…
Nella1414 Dec 15, 2025
3ed764e
feat: deleted seccion Analisis de desempeño
AlejandroHenao2572 Dec 15, 2025
27b6854
Merge pull request #117 from DOSW2025/fix/generals
Nella1414 Dec 15, 2025
5e0c871
feat: refactor de seccion de reportes y metricas
AlejandroHenao2572 Dec 15, 2025
191aa08
feat: mostrart metricas de rendimiento
AlejandroHenao2572 Dec 15, 2025
05dac4b
Pantallas completas de tutores
Jared-Farfan Dec 15, 2025
9c83fd0
feat: mostrar historial de sesiones
AlejandroHenao2572 Dec 15, 2025
e53641d
feat: mostrar nombre del estudiante en historial de sesiones
AlejandroHenao2572 Dec 15, 2025
353b413
Feat(IA): Se arregló la parte de las solicitudes http
Anderfg13 Dec 15, 2025
2281063
Merge pull request #118 from DOSW2025/feature/https-fix
DannielEU Dec 15, 2025
64e6418
feat: correcion en mostrar tutorias panel estudiante
AlejandroHenao2572 Dec 15, 2025
cbf54f3
fix: correcion en panel de tutor
AlejandroHenao2572 Dec 15, 2025
3e77399
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 15, 2025
021f74c
feat(IA): Se arreglaron los CORS
Anderfg13 Dec 15, 2025
8bdfbb4
Merge pull request #121 from DOSW2025/feature/https-fix
Anderfg13 Dec 15, 2025
1755622
fix: errores corregidos de la parte de reportes a foros.
IgnacioCastillo05 Dec 15, 2025
1b6255b
Merge branch 'develop' into feat/conexion-reportes
IgnacioCastillo05 Dec 15, 2025
4223909
feat(IA): Regreso a versión funcional en local
Anderfg13 Dec 15, 2025
54102b6
Merge pull request #123 from DOSW2025/feature/https-fix
Anderfg13 Dec 15, 2025
2317505
Pantallas completas de estudiantes
Jared-Farfan Dec 15, 2025
2f4f4dd
conflictos
Jared-Farfan Dec 15, 2025
47545a0
conflictos
Jared-Farfan Dec 15, 2025
ed6f86d
cambio de iconos
Jared-Farfan Dec 15, 2025
616265e
Merge pull request #124 from DOSW2025/feature/pantallasMateriales
Jared-Farfan Dec 15, 2025
b64602e
Merge branch 'develop' into feat/conexion-panel-reportes-metricas-tutor
AlejandroHenao2572 Dec 15, 2025
34cb753
Merge pull request #120 from DOSW2025/feat/conexion-panel-reportes-me…
DannielEU Dec 15, 2025
50e2b48
fix: correcion en endpoints de estadisticas de tutor
AlejandroHenao2572 Dec 15, 2025
2c323f3
Merge branch 'develop' of https://github.com/DOSW2025/wise_front into…
AlejandroHenao2572 Dec 15, 2025
d0c6921
fix: fixed conflicts with develop
AlejandroHenao2572 Dec 15, 2025
864c13b
Merge pull request #126 from DOSW2025/feat/conexion-panel-reportes-me…
AlejandroHenao2572 Dec 15, 2025
a294788
feat: quitar estadisticas de estudiante
AlejandroHenao2572 Dec 15, 2025
61b6664
Merge pull request #127 from DOSW2025/feat/correcion-panel-estudiante
AlejandroHenao2572 Dec 15, 2025
c7ffbe5
feat: quitar datos quedamos en perfil estudiante
AlejandroHenao2572 Dec 15, 2025
7eebf67
feat: quitar boton quemado de chat con tutor
AlejandroHenao2572 Dec 15, 2025
116f152
feat: boton para mostar modal de agendamiento
AlejandroHenao2572 Dec 15, 2025
d99538f
Implementacion corregida conexion IA front-gateway
JuanDiegoRV Dec 15, 2025
1fc6569
eliminar cuenta
Jared-Farfan Dec 15, 2025
ad23e90
Merge pull request #129 from DOSW2025/EliminarUsuaros
juanalch Dec 15, 2025
b54022f
correccion dupicacion de codigo
JuanDiegoRV Dec 15, 2025
c15d366
feat: mostrar perfil de tutor en seccion de agendamiento
AlejandroHenao2572 Dec 15, 2025
fb39eb2
Merge pull request #128 from DOSW2025/feature/compatibilidad-featuref…
ChristianAlfonsoRomeroMartinez Dec 15, 2025
7a8974b
fix: Arreglo de un prop agregado en reportChatModal
IgnacioCastillo05 Dec 15, 2025
72d027f
Merge branch 'feat/conexion-reportes' of https://github.com/DOSW2025/…
IgnacioCastillo05 Dec 15, 2025
04d91c6
feat: quitar "alarm" e implementar la notificación siguiendo los está…
IgnacioCastillo05 Dec 15, 2025
95bfe47
refactor: clean up CommunityForums component layout and improve reada…
Nella1414 Dec 16, 2025
1993f72
Merge pull request #130 from DOSW2025/feat/correcion-panel-estudiante
AlejandroHenao2572 Dec 16, 2025
f6e39a7
fix: add missing newline at end of README.md
Nella1414 Dec 16, 2025
484ee65
Merge pull request #133 from DOSW2025/fix/threads
Nella1414 Dec 16, 2025
0c36770
lasfix(report):delete reports
DannielEU Dec 16, 2025
132dd4b
Merge pull request #134 from DOSW2025/lastfix/pefiles
Jared-Farfan Dec 16, 2025
13d9981
fix: reporte en hilos, no en foros
IgnacioCastillo05 Dec 16, 2025
cf054a9
Merge branch 'develop' into feat/conexion-reportes
IgnacioCastillo05 Dec 16, 2025
0967608
feature(chats):responsive chats phone
DannielEU Dec 16, 2025
84d367c
Merge pull request #136 from DOSW2025/feature/responsive-chat
IgnacioCastillo05 Dec 16, 2025
f8c5072
Merge pull request #135 from DOSW2025/feat/conexion-reportes
DannielEU Dec 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,4 @@ Protegidas (requieren autenticación):
```bash
git add .
git commit -m "mensaje" # Validación automática
```
```
10 changes: 10 additions & 0 deletions app/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,13 @@ body {
.scrollbar-hide::-webkit-scrollbar {
display: none; /* Chrome, Safari and Opera */
}

/* Animación para mensajes */
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
136 changes: 136 additions & 0 deletions app/components/DayAvailabilityEditor.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import {
Button,
Card,
CardBody,
CardHeader,
Input,
Select,
SelectItem,
} from '@nextui-org/react';
import { Plus, Trash2 } from 'lucide-react';
import type { DisponibilidadSlot } from '~/lib/types/tutoria.types';

interface DayAvailabilityEditorProps {
dayLabel: string;
dayKey: string;
slots: DisponibilidadSlot[];
onAddSlot: () => void;
onRemoveSlot: (index: number) => void;
onUpdateSlot: (
index: number,
field: keyof DisponibilidadSlot,
value: string,
) => void;
}

export function DayAvailabilityEditor({
dayLabel,
slots,
onAddSlot,
onRemoveSlot,
onUpdateSlot,
}: DayAvailabilityEditorProps) {
const validateTimeSlot = (slot: DisponibilidadSlot) => {
if (!slot.start || !slot.end) return null;
if (slot.start >= slot.end) {
return 'La hora de fin debe ser mayor que la hora de inicio';
}
return null;
};

return (
<Card>
<CardHeader className="pb-3">
<div className="flex items-center justify-between w-full">
<h3 className="text-lg font-semibold">{dayLabel}</h3>
<Button
size="sm"
color="primary"
variant="flat"
startContent={<Plus className="w-4 h-4" />}
onPress={onAddSlot}
>
Agregar bloque
</Button>
</div>
</CardHeader>
<CardBody className="pt-0 space-y-3">
{slots.length === 0 ? (
<p className="text-sm text-default-400 text-center py-4">
No hay bloques configurados
</p>
) : (
slots.map((slot, index) => {
const error = validateTimeSlot(slot);
return (
<div
key={index}
className="flex flex-col sm:flex-row gap-2 p-3 bg-default-50 rounded-lg"
>
<Input
type="time"
label="Hora Inicio"
value={slot.start}
onChange={(e) => onUpdateSlot(index, 'start', e.target.value)}
size="sm"
isInvalid={!!error}
classNames={{ base: 'flex-1' }}
/>
<Input
type="time"
label="Hora Fin"
value={slot.end}
onChange={(e) => onUpdateSlot(index, 'end', e.target.value)}
size="sm"
isInvalid={!!error}
errorMessage={error}
classNames={{ base: 'flex-1' }}
/>
<Select
label="Modalidad"
selectedKeys={[slot.modalidad]}
onChange={(e) =>
onUpdateSlot(index, 'modalidad', e.target.value)
}
size="sm"
classNames={{ base: 'flex-1' }}
>
<SelectItem key="VIRTUAL" value="VIRTUAL">
Virtual
</SelectItem>
<SelectItem key="PRESENCIAL" value="PRESENCIAL">
Presencial
</SelectItem>
</Select>
<Input
label="Lugar"
placeholder={
slot.modalidad === 'VIRTUAL'
? 'https://meet.google.com/...'
: 'Biblioteca - Sala 3'
}
value={slot.lugar}
onChange={(e) => onUpdateSlot(index, 'lugar', e.target.value)}
size="sm"
isInvalid={!slot.lugar.trim()}
errorMessage={!slot.lugar.trim() ? 'Campo obligatorio' : ''}
classNames={{ base: 'flex-[2]' }}
/>
<Button
isIconOnly
size="sm"
color="danger"
variant="flat"
onPress={() => onRemoveSlot(index)}
className="self-end"
>
<Trash2 className="w-4 h-4" />
</Button>
</div>
);
})
)}
</CardBody>
</Card>
);
}
239 changes: 239 additions & 0 deletions app/components/admin/material-card.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
/**
* Material Card Component - Optimized
* Card optimizada para mostrar materiales con React.memo
*/

import { Button, Card, CardBody, Chip } from '@heroui/react';
import { Download, Edit2, Eye, FileText, Star, Trash2 } from 'lucide-react';
import { memo } from 'react';
import type { Material } from '~/lib/types/api.types';

interface MaterialCardProps {
material: Material;
viewMode: 'list' | 'grid';
onOpenDetail: (materialId: string) => void;
onOpenStats: (material: Material) => void;
onOpenEdit: (material: Material) => void;
onOpenDelete: (material: Material) => void;
}

const MaterialCard = memo(
({
material,
viewMode,
onOpenDetail,
onOpenStats,
onOpenEdit,
onOpenDelete,
}: MaterialCardProps) => {
const handleCardClick = () => {
onOpenDetail(material.id);
};

const handleStatsClick = (e: React.MouseEvent) => {
e.stopPropagation();
onOpenStats(material);
};

const handleEditClick = (e: React.MouseEvent) => {
e.stopPropagation();
onOpenEdit(material);
};

const handleDeleteClick = (e: React.MouseEvent) => {
e.stopPropagation();
onOpenDelete(material);
};

if (viewMode === 'list') {
return (
<Card
className="hover:shadow-md transition-shadow cursor-pointer"
isPressable
onPress={handleCardClick}
>
<CardBody className="p-6">
<div className="flex justify-between items-start">
<div className="flex-1">
<div className="flex items-start justify-between mb-3">
<div>
<h3 className="text-lg font-semibold mb-1">
{material.nombre}
</h3>
<p className="text-sm text-default-600">
Por: {material.tutor}
</p>
</div>
<div className="flex items-center gap-1">
<Star className="w-4 h-4 text-yellow-500 fill-current" />
<span className="text-sm font-medium">
{material.calificacion
? material.calificacion.toFixed(1)
: '0.0'}
</span>
</div>
</div>
<div className="flex flex-wrap gap-2 mb-3">
{material.tags && material.tags.length > 0 ? (
material.tags.map((tag) => (
<Chip key={tag} size="sm" variant="flat" color="primary">
{tag}
</Chip>
))
) : (
<Chip size="sm" variant="flat" color="primary">
{material.materia}
</Chip>
)}
</div>
<div className="flex items-center gap-4 text-sm text-default-500">
<div className="flex items-center gap-1">
<Eye className="w-4 h-4" />
<span>{material.vistas} vistas</span>
</div>
<div className="flex items-center gap-1">
<Download className="w-4 h-4" />
<span>{material.descargas} descargas</span>
</div>
</div>
</div>
<div className="flex flex-col gap-2 ml-4">
<Button
isIconOnly
variant="light"
onClick={handleStatsClick}
title="Estadísticas"
>
<FileText className="w-4 h-4" />
</Button>
<Button
isIconOnly
variant="light"
onClick={handleEditClick}
title="Editar"
>
<Edit2 className="w-4 h-4" />
</Button>
<Button
isIconOnly
variant="light"
onClick={handleDeleteClick}
title="Eliminar"
>
<Trash2 className="w-4 h-4 text-danger" />
</Button>
</div>
</div>
</CardBody>
</Card>
);
}

// Grid View
return (
<Card
className="hover:shadow-md transition-shadow cursor-pointer"
isPressable
onPress={handleCardClick}
>
<CardBody className="p-4">
<div className="text-center space-y-3">
<FileText className="w-12 h-12 text-[#8B1A1A] mx-auto" />
<div>
<h3 className="font-semibold text-sm mb-1 line-clamp-2">
{material.nombre}
</h3>
<p className="text-xs text-default-600 mb-2">{material.tutor}</p>
</div>
<div className="flex flex-wrap gap-1 justify-center mb-2">
{material.tags && material.tags.length > 0 ? (
material.tags.slice(0, 2).map((tag) => (
<Chip
key={tag}
size="sm"
variant="flat"
color="primary"
className="text-xs"
>
{tag}
</Chip>
))
) : (
<Chip
size="sm"
variant="flat"
color="primary"
className="text-xs"
>
{material.materia}
</Chip>
)}
</div>
<div className="flex items-center justify-center gap-2 text-xs text-default-500 mb-3">
<div className="flex items-center gap-1">
<Eye className="w-3 h-3" />
<span>{material.vistas}</span>
</div>
<div className="flex items-center gap-1">
<Download className="w-3 h-3" />
<span>{material.descargas}</span>
</div>
<div className="flex items-center gap-1">
<Star className="w-3 h-3 text-yellow-500 fill-current" />
<span>
{material.calificacion
? material.calificacion.toFixed(1)
: '0.0'}
</span>
</div>
</div>
<div className="flex gap-2 justify-center">
<Button
isIconOnly
size="sm"
variant="light"
onClick={handleStatsClick}
title="Estadísticas"
>
<FileText className="w-4 h-4" />
</Button>
<Button
isIconOnly
size="sm"
variant="light"
onClick={handleEditClick}
title="Editar"
>
<Edit2 className="w-4 h-4" />
</Button>
<Button
isIconOnly
size="sm"
variant="light"
onClick={handleDeleteClick}
title="Eliminar"
>
<Trash2 className="w-4 h-4 text-danger" />
</Button>
</div>
</div>
</CardBody>
</Card>
);
},
// Comparación personalizada para evitar re-renders innecesarios
(prevProps, nextProps) => {
return (
prevProps.material.id === nextProps.material.id &&
prevProps.material.nombre === nextProps.material.nombre &&
prevProps.material.vistas === nextProps.material.vistas &&
prevProps.material.descargas === nextProps.material.descargas &&
prevProps.material.calificacion === nextProps.material.calificacion &&
prevProps.viewMode === nextProps.viewMode
);
},
);

MaterialCard.displayName = 'MaterialCard';

export { MaterialCard };
Loading