fix random
All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m17s

This commit is contained in:
2026-07-13 10:29:34 +07:00
parent 0583c7869a
commit 06f2edb195
11 changed files with 476 additions and 71 deletions

View File

@@ -811,6 +811,43 @@ func RandomAssignExamPapersHandler(db *gorm.DB) fiber.Handler {
}
}
// POST /api/exam-rooms/:id/assign-papers-batch — chia đề theo sơ đồ chỗ ngồi (frontend tính toán)
func AssignExamPapersBatchHandler(db *gorm.DB) fiber.Handler {
return func(c *fiber.Ctx) error {
roomID, err := parseUintParam(c, "id")
if err != nil {
return c.Status(400).JSON(fiber.Map{"error": "Invalid id"})
}
var room models.ExamRoom
if err := db.First(&room, roomID).Error; err != nil {
return c.Status(404).JSON(fiber.Map{"error": "Không tìm thấy phòng"})
}
if !canModifyExamPapers(db, room) {
return c.Status(403).JSON(fiber.Map{"error": "Không thể chia gói đề khi đề đã gửi hoặc phòng thi đã kết thúc"})
}
var req struct {
Assignments []struct {
StudentRkID int64 `json:"studentRkId"`
PaperID uint `json:"paperId"`
} `json:"assignments"`
}
if err := c.BodyParser(&req); err != nil || len(req.Assignments) == 0 {
return c.Status(400).JSON(fiber.Map{"error": "assignments rỗng hoặc không hợp lệ"})
}
count := 0
for _, a := range req.Assignments {
pid := a.PaperID
res := db.Model(&models.ExamRoomStudent{}).
Where("exam_room_id = ? AND student_rk_id = ?", roomID, a.StudentRkID).
Update("assigned_paper_id", pid)
if res.RowsAffected > 0 {
count++
}
}
return c.JSON(fiber.Map{"assigned": count})
}
}
// POST /api/exam-rooms/:id/send-papers
func SendExamPapersHandler(db *gorm.DB) fiber.Handler {
return func(c *fiber.Ctx) error {