feat: show past colles

This commit is contained in:
Nathan Lamy 2026-02-25 00:31:50 +01:00
parent 77213340b6
commit cc817cf9a7

View file

@ -1,4 +1,5 @@
import Colle from '#models/colle'
import User from '#models/user'
import { ColleService } from '#services/colle_service'
import { NotificationService } from '#services/notification_service'
import { createColleValidator, createUpcomingCollesValidator } from '#validators/colle'
@ -38,7 +39,7 @@ export default class CollesController {
return response.badRequest({ message: 'Invalid colle ID' })
}
// Retrieve the colle by ID
const colle = await Colle.query()
let colle = await Colle.query()
.where('id', colleId)
.whereHas('student', (query) => {
query.where('className', auth.user!.className)
@ -49,6 +50,28 @@ export default class CollesController {
.preload('room')
.preload('attachments')
.first()
let className = auth.user!.className
// If colle not found and user has a past student ID, try with the past student's class
if (!colle && auth.user!.pastStudentId) {
const pastUser = await User.find(auth.user!.pastStudentId)
if (pastUser) {
className = pastUser.className
colle = await Colle.query()
.where('id', colleId)
.whereHas('student', (query) => {
query.where('className', pastUser.className)
})
.preload('student')
.preload('examiner')
.preload('subject')
.preload('room')
.preload('attachments')
.first()
}
}
if (!colle) {
return response.notFound({ message: 'Colle not found' })
}
@ -59,7 +82,7 @@ export default class CollesController {
.where('id', '!=', colle.id) // Exclude the current colle
.where('examinerId', colle.examinerId)
.whereHas('student', (query) => {
query.where('className', auth.user!.className)
query.where('className', className)
})
.preload('student')
@ -81,12 +104,28 @@ export default class CollesController {
}
// Retrieve the colle by ID
const colle = await Colle.query()
let colle = await Colle.query()
.where('id', colleId)
.whereHas('student', (query) => {
query.where('className', auth.user!.className)
})
.first()
let className = auth.user!.className
if (!colle && auth.user!.pastStudentId) {
const pastUser = await User.find(auth.user!.pastStudentId)
if (pastUser) {
className = pastUser.className
colle = await Colle.query()
.where('id', colleId)
.whereHas('student', (query) => {
query.where('className', pastUser.className)
})
.first()
}
}
if (!colle) {
return response.notFound({ message: 'Colle not found' })
}
@ -99,7 +138,7 @@ export default class CollesController {
type: 0, // Refresh colle
colle_id: colle.bjid,
colle_secret: colle.bjsecret,
class_name: auth.user!.className,
class_name: className,
})
)
} else {
@ -109,7 +148,7 @@ export default class CollesController {
JSON.stringify({
type: 1, // Search for colles on a specific day
date: colle.date.toFormat('dd/MM/yyyy'),
class_name: auth.user!.className,
class_name: className,
})
)
}