diff --git a/Backend/src/controllers/AuditController.ts b/Backend/src/controllers/AuditController.ts index 5de912fc..a78c8d5a 100644 --- a/Backend/src/controllers/AuditController.ts +++ b/Backend/src/controllers/AuditController.ts @@ -169,8 +169,8 @@ export class AuditController { throw new ValidationError('No token provided'); } - if (days < 30) { - throw new ValidationError('Cannot delete logs newer than 30 days'); + if (days < 6) { + throw new ValidationError('Cannot delete logs newer than 6 days'); } const deleted = await auditService.deleteOldLogs(days); diff --git a/Backend/src/services/CoursesStudent.service.ts b/Backend/src/services/CoursesStudent.service.ts index f7b7c681..986695b1 100644 --- a/Backend/src/services/CoursesStudent.service.ts +++ b/Backend/src/services/CoursesStudent.service.ts @@ -341,15 +341,17 @@ export class CoursesStudentService { } // Update last_accessed_at (fire-and-forget — ไม่ block response) - prisma.enrollment.update({ - where: { - unique_enrollment: { - user_id: decoded.id, - course_id, + if (enrollment.status === 'ENROLLED') { + prisma.enrollment.update({ + where: { + unique_enrollment: { + user_id: decoded.id, + course_id, + }, }, - }, - data: { last_accessed_at: new Date() }, - }).catch(err => logger.warn(`Failed to update last_accessed_at: ${err}`)); + data: { last_accessed_at: new Date() }, + }).catch(err => logger.warn(`Failed to update last_accessed_at: ${err}`)); + } // Get all lesson progress for this user and course const lessonIds = course.chapters.flatMap(ch => ch.lessons.map(l => l.id)); diff --git a/Frontend-Learner/app.vue b/Frontend-Learner/app.vue index a1ac35c7..8070d468 100644 --- a/Frontend-Learner/app.vue +++ b/Frontend-Learner/app.vue @@ -1,20 +1,27 @@ - diff --git a/Frontend-Learner/assets/css/main.css b/Frontend-Learner/assets/css/main.css index 960858a7..7f1001f3 100644 --- a/Frontend-Learner/assets/css/main.css +++ b/Frontend-Learner/assets/css/main.css @@ -113,9 +113,9 @@ body { background-attachment: fixed; } -a { +/* a { text-decoration: none; - color: #3b82f6; + color: #2563eb; transition: color 0.2s; } @@ -129,7 +129,7 @@ a:hover { .dark a:hover { color: #93c5fd; -} +} */ ul { list-style: none; @@ -645,9 +645,9 @@ ul { .rounded { border-radius: var(--radius-md); } -.border-b { +/* .border-b { border-bottom: 1px solid var(--border-color); -} +} */ .load-more-wrap { display: flex; justify-content: center; diff --git a/Frontend-Learner/components/classroom/CurriculumSidebar.vue b/Frontend-Learner/components/classroom/CurriculumSidebar.vue index 382be584..7bd6526e 100644 --- a/Frontend-Learner/components/classroom/CurriculumSidebar.vue +++ b/Frontend-Learner/components/classroom/CurriculumSidebar.vue @@ -102,20 +102,20 @@ watch(() => props.courseData, (newData) => { side="right" :width="300" :breakpoint="1024" - class="bg-slate-50 dark:bg-slate-900 shadow-xl" + class="bg-slate-50 dark:!bg-slate-900 shadow-xl" > -
{{ $t('sidebar.promoSubtitle') }}
+