SyllabusController.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using TEAMModelOS.API.Models.Core;
  8. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  9. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  10. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  11. using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
  12. namespace TEAMModelOS.API.Controllers.Syllabus
  13. {
  14. [Route("api/[controller]")]
  15. [ApiController]
  16. [Authorize]
  17. public class SyllabusController : BaseController
  18. {
  19. private readonly IAzureCosmosDBRepository azureCosmosDBRepository;
  20. public SyllabusController(IAzureCosmosDBRepository _azureCosmosDBRepository)
  21. {
  22. azureCosmosDBRepository = _azureCosmosDBRepository;
  23. }
  24. /// <summary>
  25. /// 根据课纲的业务获取
  26. /// </summary>
  27. /// <param name="request"></param>
  28. /// <returns></returns>
  29. [HttpPost("GetSchoolInfoAsSyllabus")]
  30. public async Task<BaseJosnRPCResponse> GetSchoolInfoAsSyllabus(JosnRPCRequest<Dictionary<string, object>> request)
  31. {
  32. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  33. if (request.@params != null && request.@params.TryGetValue("Code", out _))
  34. {
  35. List<School> schoolSystems = await azureCosmosDBRepository.FindByParams<School>(request.@params);
  36. List<dynamic> plist = new List<dynamic>();
  37. if (schoolSystems.IsNotEmpty())
  38. {
  39. List<Period> periods = schoolSystems[0].period;
  40. foreach (Period period in periods)
  41. {
  42. List<dynamic> slist = new List<dynamic>();
  43. ///学科包含学期的数据
  44. foreach (Subject subject in period.subjects)
  45. {
  46. List<dynamic> mlist = new List<dynamic>();
  47. foreach (Semester semester in period.semesters)
  48. {
  49. dynamic sem = new { semester.semesterName, semester.semesterCode };
  50. mlist.Add(sem);
  51. }
  52. dynamic sub = new { semester = mlist, subject.subjectName, subject.subjectCode };
  53. slist.Add(sub);
  54. }
  55. dynamic per = new { subject = slist, period.periodName, period.periodCode };
  56. plist.Add(per);
  57. }
  58. }
  59. return builder.Data(plist).build();
  60. }
  61. else
  62. {
  63. return builder.Error("SchoolCode is null or empty!", "SchoolCode is null or empty!").build();
  64. }
  65. }
  66. }
  67. }