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
}
}