using Entities.Contracts; using Entities.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using TechHelper.Server.Services; using System.Security.Claims; namespace TechHelper.Server.Controllers { [Route("api/student-submission")] [ApiController] [Authorize] public class StudentSubmissionController : ControllerBase { private readonly IStudentSubmissionService _studentSubmissionService; private readonly UserManager _userManager; public StudentSubmissionController( IStudentSubmissionService studentSubmissionService, UserManager userManager) { _studentSubmissionService = studentSubmissionService; _userManager = userManager; } /// /// 获取当前学生的所有提交摘要 /// /// 学生提交摘要列表 [HttpGet("my-submissions")] public async Task GetMySubmissions() { var user = await _userManager.FindByEmailAsync(User.Identity.Name); if (user == null) return NotFound("未找到用户信息"); var result = await _studentSubmissionService.GetStudentSubmissionsAsync(user.Id); if (result.Status) { return Ok(result.Result); } else { return BadRequest(result.Message); } } /// /// 获取当前学生的提交摘要(分页) /// /// 页码,默认为1 /// 每页数量,默认为10 /// 分页的学生提交摘要列表 [HttpGet("my-submissions-paged")] public async Task GetMySubmissionsPaged(int pageNumber = 1, int pageSize = 10) { if (pageNumber < 1) pageNumber = 1; if (pageSize < 1) pageSize = 10; if (pageSize > 100) pageSize = 100; // 限制最大页面大小 var user = await _userManager.FindByEmailAsync(User.Identity.Name); if (user == null) return NotFound("未找到用户信息"); var result = await _studentSubmissionService.GetStudentSubmissionsPagedAsync(user.Id, pageNumber, pageSize); if (result.Status) { return Ok(result.Result); } else { return BadRequest(result.Message); } } /// /// 获取指定学生的提交摘要(仅教师可使用) /// /// 学生ID /// 学生提交摘要列表 [HttpGet("student/{studentId:guid}")] [Authorize(Roles = "Teacher")] public async Task GetStudentSubmissions(Guid studentId) { var result = await _studentSubmissionService.GetStudentSubmissionsAsync(studentId); if (result.Status) { return Ok(result.Result); } else { return BadRequest(result.Message); } } /// /// 获取指定学生的提交摘要(分页,仅教师可使用) /// /// 学生ID /// 页码,默认为1 /// 每页数量,默认为10 /// 分页的学生提交摘要列表 [HttpGet("student/{studentId:guid}/paged")] [Authorize(Roles = "Teacher")] public async Task GetStudentSubmissionsPaged(Guid studentId, int pageNumber = 1, int pageSize = 10) { if (pageNumber < 1) pageNumber = 1; if (pageSize < 1) pageSize = 10; if (pageSize > 100) pageSize = 100; // 限制最大页面大小 var result = await _studentSubmissionService.GetStudentSubmissionsPagedAsync(studentId, pageNumber, pageSize); if (result.Status) { return Ok(result.Result); } else { return BadRequest(result.Message); } } } }