各类申请
This commit is contained in:
@@ -155,8 +155,32 @@ public sealed class AttendanceController(
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
if (sheet is null) return NotFound();
|
||||
|
||||
// Load exemption/deferred in separate query to avoid SQL APPLY (unsupported on SQLite)
|
||||
var exemptStudentIds = await db.CourseExemptions
|
||||
.Where(e => e.TeachingTaskId == sheet.TeachingTaskId && e.Status == ApprovalStatus.Approved)
|
||||
.Select(e => e.StudentId).ToHashSetAsync(cancellationToken);
|
||||
var deferredStudentIds = await db.DeferredExams
|
||||
.Where(e => e.TeachingTaskId == sheet.TeachingTaskId && e.Status == ApprovalStatus.Approved)
|
||||
.Select(e => e.StudentId).ToHashSetAsync(cancellationToken);
|
||||
|
||||
var canEdit = sheet.Status == AttendanceSheetStatus.Draft;
|
||||
return Ok(new { Sheet = sheet, CanEdit = canEdit });
|
||||
return Ok(new
|
||||
{
|
||||
Sheet = new
|
||||
{
|
||||
sheet.Id, sheet.TeachingTaskId, sheet.Name, sheet.AttendanceDate,
|
||||
sheet.Status, sheet.Notes, sheet.SubmittedAt,
|
||||
sheet.TaskNumber, sheet.TaskName, sheet.CourseCode, sheet.CourseName,
|
||||
Records = sheet.Records.Select(r => new
|
||||
{
|
||||
r.StudentId, r.StudentNumber, r.Name, r.ClassName,
|
||||
r.Status, r.Notes,
|
||||
IsExempt = exemptStudentIds.Contains(r.StudentId),
|
||||
IsDeferred = deferredStudentIds.Contains(r.StudentId)
|
||||
})
|
||||
},
|
||||
CanEdit = canEdit
|
||||
});
|
||||
}
|
||||
|
||||
[HttpPut("sheets/{id:guid}/records")]
|
||||
@@ -430,8 +454,7 @@ public sealed class AttendanceController(
|
||||
var source = db.AttendanceRecords.AsNoTracking()
|
||||
.Where(r =>
|
||||
r.AttendanceSheet!.Status == AttendanceSheetStatus.Submitted &&
|
||||
r.Student!.AdministrativeClassId != null &&
|
||||
targetClassIds.Contains(r.Student.AdministrativeClassId));
|
||||
targetClassIds.Contains(r.Student!.AdministrativeClassId));
|
||||
if (academicTermId.HasValue)
|
||||
source = source.Where(r =>
|
||||
r.AttendanceSheet!.TeachingTask!.AcademicTermId == academicTermId);
|
||||
|
||||
Reference in New Issue
Block a user