ScoreCalcController.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using Azure.Cosmos;
  2. using DocumentFormat.OpenXml.Office2010.Excel;
  3. using DocumentFormat.OpenXml.Spreadsheet;
  4. using DocumentFormat.OpenXml.VariantTypes;
  5. using DocumentFormat.OpenXml.Wordprocessing;
  6. using Microsoft.AspNetCore.Authorization;
  7. using Microsoft.AspNetCore.Http;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.Extensions.Configuration;
  10. using Microsoft.Extensions.Options;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Text.Json;
  14. using System.Threading.Tasks;
  15. using TEAMModelOS.Filter;
  16. using TEAMModelOS.Models;
  17. using TEAMModelOS.SDK.DI;
  18. using TEAMModelOS.SDK.Models;
  19. using TEAMModelOS.SDK.Models.Cosmos.School;
  20. namespace TEAMModelOS.Controllers
  21. {
  22. [ProducesResponseType(StatusCodes.Status200OK)]
  23. [ProducesResponseType(StatusCodes.Status400BadRequest)]
  24. [Route("scorecalc")]
  25. [ApiController]
  26. public class ScoreCalcController : ControllerBase
  27. {
  28. private AzureCosmosFactory _azureCosmos;
  29. private readonly DingDing _dingDing;
  30. private readonly Option _option;
  31. private readonly AzureStorageFactory _azureStorage;
  32. private readonly AzureServiceBusFactory _serviceBus;
  33. public IConfiguration _configuration { get; set; }
  34. public ScoreCalcController(AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option, AzureServiceBusFactory serviceBus, AzureStorageFactory azureStorage, IConfiguration configuration)
  35. {
  36. _azureCosmos = azureCosmos;
  37. _dingDing = dingDing;
  38. _option = option?.Value;
  39. _serviceBus = serviceBus;
  40. _configuration = configuration;
  41. _azureStorage = azureStorage;
  42. }
  43. //新建成績結算
  44. [ProducesDefaultResponseType]
  45. [HttpPost("upsert-scorecalc")]
  46. //[Authorize(Roles = "IES")]
  47. //[AuthToken(Roles = "admin,teacher,student")]
  48. public async Task<IActionResult> UpsertScoreCalc(JsonElement json)
  49. {
  50. try
  51. {
  52. //var client = _azureCosmos.GetCosmosClient();
  53. ////總覽
  54. //ScoreCalcBase scoreCalcBase = new ScoreCalcBase();
  55. //string tmid = "1595321354";
  56. //scoreCalcBase.id = "8f25d7b4-79bd-4448-baaf-01b0d3d3efd9";
  57. //scoreCalcBase.name = "測試成績001";
  58. //scoreCalcBase.code = $"ScoreCalc-{tmid}";
  59. //scoreCalcBase.courseId = "a6d778e8-e4f0-46a3-850f-c15daedc5d94";
  60. //scoreCalcBase.classId = "b069d9d4-ef7e-4f3e-ac62-532b11f95b80";
  61. //ScoreCalcMember member1 = new ScoreCalcMember() { id = "20230001" , name = "學生1" , no = "1"};
  62. //ScoreCalcMember member2 = new ScoreCalcMember() { id = "20230002", name = "學生2", no = "2" };
  63. //scoreCalcBase.members.Add(member1);
  64. //scoreCalcBase.members.Add(member2);
  65. //scoreCalcBase.scores.Add(65.5);
  66. //scoreCalcBase.scores.Add(73.8);
  67. //scoreCalcBase.scoresOrg.Add(66.7);
  68. //scoreCalcBase.scoresOrg.Add(71.4);
  69. //scoreCalcBase.rateType = "percentage";
  70. //await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync(scoreCalcBase, new PartitionKey($"ScoreCalc-{tmid}"));
  71. ////評量
  72. //ScoreCalcActivity scoreCalcActivity = new ScoreCalcActivity();
  73. //scoreCalcActivity.id = "bd492c0c-c6d5-472d-9b3a-93196d3a7010";
  74. //scoreCalcActivity.code = $"ScoreCalcAct-{tmid}";
  75. //scoreCalcActivity.scorecalcId = "8f25d7b4-79bd-4448-baaf-01b0d3d3efd9";
  76. //scoreCalcActivity.type = "exam";
  77. //ScoreCalcActivityItems exam1 = new ScoreCalcActivityItems(); //被選取的第一個評量
  78. //exam1.id = "af6cc80f-a4be-4a5f-94ff-12c1fd366a8f";
  79. //exam1.name = "第一次小考";
  80. //exam1.code = "Exam-1595321354";
  81. //exam1.scope = "school";
  82. //exam1.owner = "teacher";
  83. //exam1.progress = "finish";
  84. //exam1.sStatus = 1;
  85. //exam1.source = "1";
  86. //exam1.createTime = 1623919622766;
  87. //scoreCalcActivity.items.Add(exam1);
  88. //ScoreCalcActivityItems exam2 = new ScoreCalcActivityItems(); //被選取的第二個評量
  89. //exam2.id = "b3f95a17-b839-4b9a-84de-76c83d0e2845";
  90. //exam2.name = "第二次小考";
  91. //exam2.code = "Exam-1595321354";
  92. //exam2.scope = "private";
  93. //exam2.owner = "teacher";
  94. //exam2.progress = "finish";
  95. //exam2.sStatus = 1;
  96. //exam2.source = "1";
  97. //exam2.createTime = 1623204312794;
  98. //scoreCalcActivity.items.Add(exam2);
  99. //scoreCalcActivity.itemRates.Add(2); //第一個評量權重
  100. //scoreCalcActivity.itemRates.Add(1); //第二個評量權重
  101. //scoreCalcActivity.itemRateType = "count";
  102. //scoreCalcActivity.itemScores.Add(76.2);
  103. //scoreCalcActivity.itemScores.Add(81.1);
  104. //scoreCalcActivity.itemScoresOrg.Add(72.6);
  105. //scoreCalcActivity.itemScoresOrg.Add(80.7);
  106. ////scoreCalcActivity.score = 78.2;
  107. ////scoreCalcActivity.scoreOrg = 77.5;
  108. //scoreCalcActivity.rate = 40; //評量的總加權 = 40%
  109. //List<double> stuScores = new List<double>() { 70.1, 73.5 }; //第一個學生的所有評量總成績,第二個同學...
  110. //scoreCalcActivity.stuScores = stuScores;
  111. //List<double> examScore1 = new List<double>() { 73.2, 69.7 }; //第一個評量,第一位同學73.2 第二位同學69.7
  112. //scoreCalcActivity.stuActScores.Add(examScore1);
  113. //List<double> examScore2 = new List<double>() { 81.6, 58.1 }; //第二個評量
  114. //scoreCalcActivity.stuActScores.Add(examScore2);
  115. //List<double> examScore1Org = new List<double>() { 73.2, 69.7 };
  116. //scoreCalcActivity.stuActScoresOrg.Add(examScore1Org);
  117. //List<double> examScore2Org = new List<double>() { 81.6, 58.1 };
  118. //scoreCalcActivity.stuActScoresOrg.Add(examScore2Org);
  119. //await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync(scoreCalcActivity, new PartitionKey($"ScoreCalcAct-{tmid}"));
  120. ////課堂紀錄
  121. //ScoreCalcLsRecord scoreCalcLsRecord = new ScoreCalcLsRecord();
  122. return Ok(new { status = 200 });
  123. }
  124. catch (Exception ex)
  125. {
  126. return BadRequest();
  127. }
  128. }
  129. }
  130. }