using Entities.Contracts; using Entities.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using TechHelper.Server.Services; using System.Security.Claims; namespace TechHelper.Server.Controllers { [Route("api/exam")] [ApiController] [Authorize] public class ExamController : ControllerBase { private IExamService _examService; private readonly UserManager _userManager; public ExamController(IExamService examService, UserManager userManager) { _examService = examService; _userManager = userManager; } [HttpPost("add")] public async Task AddExam( [FromBody] AssignmentDto examDto) { var user = await _userManager.FindByEmailAsync(User.Identity?.Name ?? ""); if(user == null) return BadRequest("无效的用户"); examDto.CreatorId = user.Id; var result = await _examService.CreateExamAsync(examDto); if (result.Status) { return Ok(result); } else { return BadRequest(); } } [HttpGet("get")] public async Task GetExamById(Guid id) { var result = await _examService.GetAsync(id); if (result.Status) return Ok(result.Result); else return BadRequest("查找失败"); } [HttpGet("getAllPreview")] public async Task GetAllExamPreview(string user) { string? userId = User.Identity.Name; var userid = await _userManager.FindByEmailAsync(user); if (userid == null) return BadRequest("用户验证失败, 无效用户"); var result = await _examService.GetAllExamPreviewsAsync(userid.Id); if (result.Status) { return Ok(result.Result); } return BadRequest(result); } } }