using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using VOL.Ai.IServices; using VOL.Ai.Services; using VOL.Business.IServices; using VOL.Business.IServices.Training; using VOL.Core.Filters; using VOL.Core.Utilities; using VOL.Entity.DomainModels; using VOL.Entity.Enum; using VOL.Model; using VOL.Model.HomeWork; using VOL.Model.Training.Response; using VOL.System.IRepositories; using VOL.System.Repositories; namespace VOL.WebApi.Controllers.JingShiTiJiao { [Route("api/[controller]")] [ApiController] [ApiExplorerSettings(GroupName = "v3")] [TypeFilter(typeof(CustomApiResponseFilter))] [AllowAnonymous] public class JingShiTiJiaoController : ControllerBase { #region 初始化 private readonly IS_HomeWorkService _homeWorkService; private readonly IJingShiTiJiaoService _jingShiTiJiaoService; private readonly II_TrainingDataService _trainingDataService; private readonly S_StudentRepository _studentRepository; public JingShiTiJiaoController( IS_HomeWorkService homeWorkService, II_TrainingDataService trainingDataService,IJingShiTiJiaoService jingShiTiJiaoService, S_StudentRepository studentRepository) { _homeWorkService = homeWorkService; _trainingDataService = trainingDataService; _jingShiTiJiaoService = jingShiTiJiaoService; _studentRepository = studentRepository; } #endregion #region 作业 /// /// 作业列表 /// /// [HttpGet(nameof(GetHomeWorkPageList))] public async Task> GetHomeWorkPageList(HomeWorkPageListParam paramDto) { return await _homeWorkService.GetHomeWorkPageList(paramDto); } /// /// 作业下学生列表 /// /// [HttpGet(nameof(GetHomeWorkStudents))] public async Task> GetHomeWorkStudents(HomeWorkStudentsParam paramDto) { return await _homeWorkService.GetHomeWorkStudents(paramDto); } /// /// 作业详情 /// /// [HttpGet(nameof(GetSubmittedAssignments))] public async Task> GetSubmittedAssignments(int homeWorkId, string studentNo) { return await _homeWorkService.GetSubmittedAssignments(homeWorkId, studentNo); } #endregion #region 课堂报告 /// /// 课堂报告列表 /// /// [HttpGet(nameof(GetClassReportList))] public async Task> GetClassReportList(ClassReportListParam paramDto) { return await _trainingDataService.GetClassReportList(paramDto); } /// /// 课堂报告详情 /// /// [HttpGet(nameof(GetClassReportDetails))] public async Task GetClassReportDetails(int id) { return await _trainingDataService.GetClassReportDetails(id); } /// /// 学生课堂报告详情 /// /// [HttpGet(nameof(GetStudentClassReportDetails))] public async Task GetStudentClassReportDetails(GetStudentClassReportDetailsDto paramDto) { return await _trainingDataService.GetStudentClassReportDetails(paramDto); } #endregion /// /// 获取所有年级名称 /// /// /// /// 获取年级列表 /// /// [HttpGet(nameof(GetGradeList))] public async Task> GetGradeList(string schoolCode) { if (string.IsNullOrWhiteSpace(schoolCode)) return new List(); // 1️⃣ 从数据库读取年级 var grades = await _studentRepository.DbContext.Set() .Where(x => x.SchoolCode == schoolCode) .ToListAsync(); if (grades == null || !grades.Any()) return new List(); // 2️⃣ 从数据库读取班级 var allGradeNos = grades.Select(x => x.GradeNo).ToList(); var classes = await _studentRepository.DbContext.Set() .Where(x => x.SchoolCode == schoolCode && allGradeNos.Contains(x.GradeNo)) .ToListAsync(); // 3️⃣ 按年级分组班级 var result = grades.Select(g => new GradeNameModel { Id = (int)g.Id, GradeName = g.GradeName, Class = classes .Where(c => c.GradeNo == g.GradeNo) .Select(c => new ClassNameModel { Id = (int)c.Id, ClassName = c.ClassName }) .ToList() }).ToList(); return result; } } }