using Entities.Contracts; using Entities.DTO; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using TechHelper.Services; using TechHelper.Services.Beta; namespace TechHelper.Server.Controllers { /// /// 教材管理控制器 /// 处理教材相关的操作,如创建、更新、删除教材等 /// [Route("api/textbook")] [ApiController] public class TextbookController : ControllerBase { private readonly ITextbookService _textbookService; private readonly UserManager _userManager; /// /// 初始化教材控制器 /// /// 教材服务 /// 用户管理服务 public TextbookController(ITextbookService textbookService, UserManager userManager) { _textbookService = textbookService; _userManager = userManager; } #region 教材基本信息CRUD操作 /// /// 获取教材列表(支持搜索) /// /// 查询参数 /// 教材列表 /// 成功获取教材列表 /// 获取失败 [HttpGet] [Authorize(Roles = "Teacher,Admin")] public async Task GetAll([FromQuery] QueryParameter query) { var result = await _textbookService.GetAllAsync(query); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 根据ID获取教材详细信息 /// /// 教材ID /// 教材详细信息 /// 成功获取教材信息 /// 教材未找到或获取失败 [HttpGet("{id}")] [Authorize(Roles = "Teacher,Admin")] public async Task GetById(Guid id) { var result = await _textbookService.GetAsync(id); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 创建新教材 /// /// 教材数据传输对象 /// 创建结果 /// 创建成功 /// 创建失败 [HttpPost] [Authorize(Roles = "Admin,Teacher")] public async Task Create([FromBody] TextbookDto model) { var result = await _textbookService.AddAsync(model); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 更新教材信息 /// /// 教材数据传输对象 /// 更新结果 /// 更新成功 /// 更新失败 [HttpPut] [Authorize(Roles = "Admin")] public async Task Update([FromBody] TextbookDto model) { var result = await _textbookService.UpdateAsync(model); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 删除教材 /// /// 教材ID /// 删除结果 /// 删除成功 /// 删除失败 [HttpDelete("{id}")] [Authorize(Roles = "Admin")] public async Task Delete(Guid id) { var result = await _textbookService.DeleteAsync(id); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Message); } #endregion #region 教材扩展操作 /// /// 根据年级获取教材列表 /// /// 年级 /// 教材列表 /// 成功获取教材列表 /// 获取失败 [HttpGet("grade/{grade}")] [Authorize(Roles = "Student,Teacher,Admin")] public async Task GetByGrade(string grade) { var result = await _textbookService.GetAllAsync(new QueryParameter { Search = grade }); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 根据出版社获取教材列表 /// /// 出版社 /// 教材列表 /// 成功获取教材列表 /// 获取失败 [HttpGet("publisher/{publisher}")] [Authorize(Roles = "Student,Teacher,Admin")] public async Task GetByPublisher(string publisher) { var result = await _textbookService.GetAllAsync(new QueryParameter { Search = publisher }); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } /// /// 根据学科领域获取教材列表 /// /// 学科领域 /// 教材列表 /// 成功获取教材列表 /// 获取失败 [HttpGet("subjectArea/{subjectArea}")] [Authorize(Roles = "Student,Teacher,Admin")] public async Task GetBySubjectArea(string subjectArea) { var result = await _textbookService.GetAllAsync(new QueryParameter { Search = subjectArea }); if (!result.Status) { return BadRequest(result.Message); } return Ok(result.Result); } #endregion } }