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() .ToList(); var stream = ExcelHelper.CreateStream(dtos); return ExcelStreamResult(stream, "未考试的考生信息"); } /// /// 成绩统计分析 /// /// /// [HttpPost(UserExamApiRoute.GetUserExamResults)] public async Task GetUserExamResults([FromBody] UserExamResultReportPagedRequest userExamResultReportPagedRequest) { return await _userExamService.GetUserExamResults(userExamResultReportPagedRequest); } /// /// 导出成绩统计分析 /// /// /// [HttpPost(UserExamApiRoute.ExportUserExamResults)] public async Task ExportUserExamResults([FromBody] ExportExcelDto exportExcelDto) { if (exportExcelDto.IsExportAll) { exportExcelDto.QueryDto.IsPaged = false; } var result = await _userExamService.GetUserExamResults(exportExcelDto.QueryDto); var items = result.Items; dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(exportExcelDto.ColumnInfos ?? new List()); var dtos = items .Select(stu => _mapper.Map(stu, typeof(UserExamResultViewResponse), dynamicClass)) .Cast() .ToList(); var stream = ExcelHelper.CreateStream(dtos); return ExcelStreamResult(stream, "成绩统计分析"); } /// /// 查看考试试题 /// /// /// /// [HttpGet(UserExamApiRoute.View)] public async Task View([FromQuery] string id,string questionId) { return await _userExamService.View(id, questionId); } } }