123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using Azure.Cosmos;
- using DocumentFormat.OpenXml.Office2010.Excel;
- using DocumentFormat.OpenXml.Spreadsheet;
- using DocumentFormat.OpenXml.VariantTypes;
- using DocumentFormat.OpenXml.Wordprocessing;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.Options;
- using System;
- using System.Collections.Generic;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.Filter;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Models;
- using TEAMModelOS.SDK.Models.Cosmos.School;
- namespace TEAMModelOS.Controllers
- {
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [Route("scorecalc")]
- [ApiController]
- public class ScoreCalcController : ControllerBase
- {
- private AzureCosmosFactory _azureCosmos;
- private readonly DingDing _dingDing;
- private readonly Option _option;
- private readonly AzureStorageFactory _azureStorage;
- private readonly AzureServiceBusFactory _serviceBus;
- public IConfiguration _configuration { get; set; }
- public ScoreCalcController(AzureCosmosFactory azureCosmos, DingDing dingDing, IOptionsSnapshot<Option> option, AzureServiceBusFactory serviceBus, AzureStorageFactory azureStorage, IConfiguration configuration)
- {
- _azureCosmos = azureCosmos;
- _dingDing = dingDing;
- _option = option?.Value;
- _serviceBus = serviceBus;
- _configuration = configuration;
- _azureStorage = azureStorage;
- }
- //新建成績結算
- [ProducesDefaultResponseType]
- [HttpPost("upsert-scorecalc")]
- //[Authorize(Roles = "IES")]
- //[AuthToken(Roles = "admin,teacher,student")]
- public async Task<IActionResult> UpsertScoreCalc(JsonElement json)
- {
- try
- {
- //var client = _azureCosmos.GetCosmosClient();
- ////總覽
- //ScoreCalcBase scoreCalcBase = new ScoreCalcBase();
- //string tmid = "1595321354";
- //scoreCalcBase.id = "8f25d7b4-79bd-4448-baaf-01b0d3d3efd9";
- //scoreCalcBase.name = "測試成績001";
- //scoreCalcBase.code = $"ScoreCalc-{tmid}";
- //scoreCalcBase.courseId = "a6d778e8-e4f0-46a3-850f-c15daedc5d94";
- //scoreCalcBase.classId = "b069d9d4-ef7e-4f3e-ac62-532b11f95b80";
- //ScoreCalcMember member1 = new ScoreCalcMember() { id = "20230001" , name = "學生1" , no = "1"};
- //ScoreCalcMember member2 = new ScoreCalcMember() { id = "20230002", name = "學生2", no = "2" };
- //scoreCalcBase.members.Add(member1);
- //scoreCalcBase.members.Add(member2);
- //scoreCalcBase.scores.Add(65.5);
- //scoreCalcBase.scores.Add(73.8);
- //scoreCalcBase.scoresOrg.Add(66.7);
- //scoreCalcBase.scoresOrg.Add(71.4);
- //scoreCalcBase.rateType = "percentage";
- //await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync(scoreCalcBase, new PartitionKey($"ScoreCalc-{tmid}"));
- ////評量
- //ScoreCalcActivity scoreCalcActivity = new ScoreCalcActivity();
- //scoreCalcActivity.id = "bd492c0c-c6d5-472d-9b3a-93196d3a7010";
- //scoreCalcActivity.code = $"ScoreCalcAct-{tmid}";
- //scoreCalcActivity.scorecalcId = "8f25d7b4-79bd-4448-baaf-01b0d3d3efd9";
- //scoreCalcActivity.type = "exam";
- //ScoreCalcActivityItems exam1 = new ScoreCalcActivityItems(); //被選取的第一個評量
- //exam1.id = "af6cc80f-a4be-4a5f-94ff-12c1fd366a8f";
- //exam1.name = "第一次小考";
- //exam1.code = "Exam-1595321354";
- //exam1.scope = "school";
- //exam1.owner = "teacher";
- //exam1.progress = "finish";
- //exam1.sStatus = 1;
- //exam1.source = "1";
- //exam1.createTime = 1623919622766;
- //scoreCalcActivity.items.Add(exam1);
- //ScoreCalcActivityItems exam2 = new ScoreCalcActivityItems(); //被選取的第二個評量
- //exam2.id = "b3f95a17-b839-4b9a-84de-76c83d0e2845";
- //exam2.name = "第二次小考";
- //exam2.code = "Exam-1595321354";
- //exam2.scope = "private";
- //exam2.owner = "teacher";
- //exam2.progress = "finish";
- //exam2.sStatus = 1;
- //exam2.source = "1";
- //exam2.createTime = 1623204312794;
- //scoreCalcActivity.items.Add(exam2);
- //scoreCalcActivity.itemRates.Add(2); //第一個評量權重
- //scoreCalcActivity.itemRates.Add(1); //第二個評量權重
- //scoreCalcActivity.itemRateType = "count";
- //scoreCalcActivity.itemScores.Add(76.2);
- //scoreCalcActivity.itemScores.Add(81.1);
- //scoreCalcActivity.itemScoresOrg.Add(72.6);
- //scoreCalcActivity.itemScoresOrg.Add(80.7);
- ////scoreCalcActivity.score = 78.2;
- ////scoreCalcActivity.scoreOrg = 77.5;
- //scoreCalcActivity.rate = 40; //評量的總加權 = 40%
- //List<double> stuScores = new List<double>() { 70.1, 73.5 }; //第一個學生的所有評量總成績,第二個同學...
- //scoreCalcActivity.stuScores = stuScores;
- //List<double> examScore1 = new List<double>() { 73.2, 69.7 }; //第一個評量,第一位同學73.2 第二位同學69.7
- //scoreCalcActivity.stuActScores.Add(examScore1);
- //List<double> examScore2 = new List<double>() { 81.6, 58.1 }; //第二個評量
- //scoreCalcActivity.stuActScores.Add(examScore2);
- //List<double> examScore1Org = new List<double>() { 73.2, 69.7 };
- //scoreCalcActivity.stuActScoresOrg.Add(examScore1Org);
- //List<double> examScore2Org = new List<double>() { 81.6, 58.1 };
- //scoreCalcActivity.stuActScoresOrg.Add(examScore2Org);
- //await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync(scoreCalcActivity, new PartitionKey($"ScoreCalcAct-{tmid}"));
- ////課堂紀錄
- //ScoreCalcLsRecord scoreCalcLsRecord = new ScoreCalcLsRecord();
- return Ok(new { status = 200 });
- }
- catch (Exception ex)
- {
- return BadRequest();
- }
- }
- }
- }
|