班级课表自动选中功能
This commit is contained in:
@@ -45,6 +45,30 @@ public sealed class TimetablesController(
|
|||||||
CancellationToken cancellationToken) =>
|
CancellationToken cancellationToken) =>
|
||||||
BuildTimetableAsync(classId, academicTermId, null, cancellationToken);
|
BuildTimetableAsync(classId, academicTermId, null, cancellationToken);
|
||||||
|
|
||||||
|
[HttpGet("my-class")]
|
||||||
|
[Authorize(Roles = SystemRoles.Student)]
|
||||||
|
public async Task<ActionResult> GetMyClass(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (!Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var userId))
|
||||||
|
return Unauthorized();
|
||||||
|
|
||||||
|
var administrativeClassId = await db.Students.AsNoTracking()
|
||||||
|
.Where(x => x.UserId == userId)
|
||||||
|
.Select(x => (Guid?)x.AdministrativeClassId)
|
||||||
|
.FirstOrDefaultAsync(cancellationToken);
|
||||||
|
if (!administrativeClassId.HasValue)
|
||||||
|
{
|
||||||
|
return Conflict(new ProblemDetails
|
||||||
|
{
|
||||||
|
Title = "档案未关联",
|
||||||
|
Detail = "当前登录账号没有关联学生档案,请联系教务管理员。",
|
||||||
|
Status = StatusCodes.Status409Conflict
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(new { AdministrativeClassId = administrativeClassId.Value });
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet("teachers/{teacherId:guid}")]
|
[HttpGet("teachers/{teacherId:guid}")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<ActionResult> GetTeacherTimetable(
|
public async Task<ActionResult> GetTeacherTimetable(
|
||||||
|
|||||||
@@ -403,7 +403,11 @@ async function loadPublicOptions() {
|
|||||||
termId.value = defaultAcademicTermId(data.terms)
|
termId.value = defaultAcademicTermId(data.terms)
|
||||||
?? data.terms.find((item: any) => item.hasPublishedTimetable)?.id
|
?? data.terms.find((item: any) => item.hasPublishedTimetable)?.id
|
||||||
?? ''
|
?? ''
|
||||||
const initialClass = data.classes.find((item: any) => item.hasPublishedTimetable)
|
const studentClassId = auth.user?.roles.includes('Student')
|
||||||
|
? (await http.get('/timetables/my-class')).data.administrativeClassId
|
||||||
|
: undefined
|
||||||
|
const initialClass = data.classes.find((item: any) => item.id === studentClassId)
|
||||||
|
?? data.classes.find((item: any) => item.hasPublishedTimetable)
|
||||||
?? data.classes[0]
|
?? data.classes[0]
|
||||||
classId.value = initialClass?.id ?? ''
|
classId.value = initialClass?.id ?? ''
|
||||||
setClassFilters(initialClass)
|
setClassFilters(initialClass)
|
||||||
|
|||||||
Reference in New Issue
Block a user