using Exam.Application.Interface.Exam;
using Exam.Share;
using Exam.Share.Dtos.ExamManage;
using Exam.Share.ViewResponses.Exam;
using Hotline.Application.Exam.Constants.ApiRoutes;
using Hotline.Share.Dtos.ExamManages;
using Hotline.Share.Requests.Exam;
using Hotline.Share.ViewResponses.Exam;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel;
using Hotline.Application.Exam.Interface.ExamManages;
using Exam.Infrastructure.Data.Entity;
using Hotline.Share.Dtos.Order;
using Hotline.Tools;
using MapsterMapper;
namespace Hotline.Api.Controllers.Exam
{
public class UserExamController : BaseController
{
private readonly IUserExamService _userExamService;
private readonly IExamManageService _examManageService;
private readonly IMapper _mapper;
public UserExamController(IUserExamService userExamService,IExamManageService examManageService,IMapper mapper)
{
this._userExamService = userExamService;
this._examManageService = examManageService;
this._mapper = mapper;
}
///
/// 获取我的考试结果
///
///
///
[HttpPost(UserExamApiRoute.GetPagedList)]
public async Task GetPagedList([FromBody] UserExamPagedRequest userExamPagedRequest)
{
await _examManageService.UpdateExamStatus(new EntityQueryRequest(), HttpContext.RequestAborted);
var userExamResultPageViewResponse = await _userExamService.GetPagedListAsync(userExamPagedRequest);
return userExamResultPageViewResponse as UserExamResultPageViewResponse;
}
///
/// 阅卷列表
///
///
///
[HttpPost(UserExamApiRoute.GetGradingPagedList)]
public async Task GetGradingPagedList([FromBody] GradingPagedRequest gradingPagedRequest)
{
return await _userExamService.GetGradingResultPagedList(gradingPagedRequest);
}
///
/// 开始考试
///
///
///
[HttpPost(UserExamApiRoute.Start)]
public async Task Start([FromBody] StartUserExamDto startUserExamDto)
{
return await _userExamService.StartUserExamAsync(startUserExamDto, HttpContext.RequestAborted);
}
///
/// 获取试题类型分组
///
///
///
[HttpGet(UserExamApiRoute.GetExamQuestionGroup)]
public async Task> GetExamQuestionGroup([FromQuery]ExamQuestionGroupRequest examQuestionGroupRequest)
{
return await _userExamService.GetExamQuestionViewResponses(examQuestionGroupRequest);
}
///
/// 获取用户列表
///
///
///
[HttpGet(UserExamApiRoute.GetUserList)]
public async Task> GetUserList([FromQuery] ExamUserQueryRequest examUserQueryRequest)
{
return await _userExamService.GetUserListAsync(examUserQueryRequest);
}
///
/// 获取试题详情
///
///
///
[HttpGet(UserExamApiRoute.GetExamQuestion)]
public async Task GetExamQuestion([FromQuery]ExamQuestionRequest examQuestionRequest)
{
return await _userExamService.GetExamQuestionDto(examQuestionRequest);
}
///
/// 考试
///
///
///
[HttpPost(UserExamApiRoute.Exam)]
public async Task Exam([FromBody] UpdateUserExamItemDto updateUserExamItemDto)
{
return await _userExamService.ExamAsync(updateUserExamItemDto, HttpContext.RequestAborted);
}
///
/// 提交考试
///
///
///
[HttpPost(UserExamApiRoute.Submit)]
public async Task Submit([FromBody] SubmitExamDto submitExamDto)
{
await _userExamService.SubmitAsync(submitExamDto, HttpContext.RequestAborted);
}
///
/// 阅卷
///
///
///
[HttpPost(UserExamApiRoute.Grading)]
public async Task Grading([FromBody] GradingExamItemDto gradingExtamItemDto)
{
return await _userExamService.GradingAsync(gradingExtamItemDto, HttpContext.RequestAborted);
}
///
/// 批量阅卷
///
///
///
[HttpPost(UserExamApiRoute.BatchGrading)]
public async Task BatchGrading([FromBody]BatchGradingExamItemDto batchGradingExamItemDto)
{
await _userExamService.BatchGradingAsync(batchGradingExamItemDto, HttpContext.RequestAborted);
}
///
/// 完成阅卷
///
///
///
[HttpPost(UserExamApiRoute.CompleteGrading)]
public async Task CompleteGrading([FromBody] GradingExamDto gradingExtamDto)
{
await _userExamService.CompleteGradingAsync(gradingExtamDto, HttpContext.RequestAborted);
}
///
/// 获取阅卷试题
///
///
///
[HttpGet(UserExamApiRoute.GetGradingQuestions)]
public async Task> GetGradingQuestions([FromQuery] GradingExamRequest gradingExamRequest)
{
return await _userExamService.GetGradingExamQuestion(gradingExamRequest);
}
///
/// 获取阅卷试题
///
///
///
[HttpGet(UserExamApiRoute.GetGradingQuestionViewResponces)]
public async Task> GetGradingQuestionViewResponces([FromQuery] ExamQuestionGroupRequest examQuestionGroupRequest)
{
return await _userExamService.GetGradingQuestionViewResponces(examQuestionGroupRequest);
}
///
/// 获取阅卷试题
///
///
///
[HttpGet(UserExamApiRoute.ViewGradingExamQuestion)]
public async Task ViewGradingExamQuestion([FromQuery] ViewGradingExamRequest viewGradingExamRequest)
{
return await _userExamService.ViewGradingExamQuestion(viewGradingExamRequest);
}
///
/// 获取未考试的考生信息
///
///
///
[HttpPost(UserExamApiRoute.GetUnExamUsers)]
public async Task GetUnExamUsers([FromBody] UnExamUserReportPagedRequest unExamUserReportPagedRequest)
{
return await _userExamService.GetUnExamUsersPaged(unExamUserReportPagedRequest);
}
///
/// 导出未考试的考生信息
///
///
///
[HttpPost(UserExamApiRoute.ExportUnExamUsers)]
public async Task ExportUnExamUsers([FromBody] ExportExcelDto exportExcelDto)
{
if (exportExcelDto.IsExportAll)
{
exportExcelDto.QueryDto.IsPaged = false;
}
var result = await _userExamService.GetUnExamUsersPaged(exportExcelDto.QueryDto);
var items = result.Items;
var viewResponses = _mapper.Map>(items);
dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(exportExcelDto.ColumnInfos??new List());
var dtos = viewResponses
.Select(stu => _mapper.Map(stu, typeof(UnExamUserViewResponse), dynamicClass))
.Cast