|
@@ -10,11 +10,13 @@ using DocumentFormat.OpenXml.Office2010.Excel;
|
|
|
using DocumentFormat.OpenXml.Office2016.Excel;
|
|
|
using DocumentFormat.OpenXml.Presentation;
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
+using DocumentFormat.OpenXml.VariantTypes;
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
using FastJSON;
|
|
|
using HTEXLib.COMM.Helpers;
|
|
|
using HTEXLib.Helpers.ShapeHelpers;
|
|
|
using MathNet.Numerics.Distributions;
|
|
|
+using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Hosting;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
@@ -100,6 +102,7 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
//新建成績結算
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("upsert-scorecalc")]
|
|
|
//[Authorize(Roles = "IES")]
|
|
|
//[AuthToken(Roles = "admin,teacher,student")]
|
|
@@ -194,6 +197,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("get-scorecalc-list")]
|
|
|
public async Task<IActionResult> GetSscoreCalcList(JsonElement request)
|
|
|
{
|
|
@@ -213,12 +217,12 @@ namespace TEAMModelOS.Controllers
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sql = $"SELECT c.id, c.name FROM c where c.courseId = '{courseId}' and c.grouplistId = '{grouplistId}' ";
|
|
|
+ sql = $"SELECT c.id, c.name, c.sort FROM c where c.courseId = '{courseId}' and c.grouplistId = '{grouplistId}' order by c.sort Desc ";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sql = $"SELECT c.id, c.name FROM c where c.courseId = '{courseId}' and c.classId = '{classId}' ";
|
|
|
+ sql = $"SELECT c.id, c.name, c.sort FROM c where c.courseId = '{courseId}' and c.classId = '{classId}' order by c.sort Desc ";
|
|
|
}
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
|
|
|
@@ -248,6 +252,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("get-scorecalc-All")]
|
|
|
public async Task<IActionResult> GetSscoreCalcAll(JsonElement request)
|
|
|
{
|
|
@@ -425,6 +430,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("add-scorecalc")]
|
|
|
public async Task<IActionResult> AddSscoreCalc(JsonElement request)
|
|
|
{
|
|
@@ -489,7 +495,24 @@ namespace TEAMModelOS.Controllers
|
|
|
scoreCalcBase.rateType = "percentage";
|
|
|
scoreCalcBase.id = Guid.NewGuid().ToString();
|
|
|
scoreCalcBase.code = scoreCalcBase.pk + "-" + teammodelId;
|
|
|
+ //取得目前成績統計總數
|
|
|
+ int count = 0;
|
|
|
+ string sql = "";
|
|
|
+ if (!ishaveClassId)
|
|
|
+ {
|
|
|
+ sql = $"SELECT c.id FROM c where c.courseId = '{courseId}' and c.grouplistId = '{grouplistId}' ";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ sql = $"SELECT c.id FROM c where c.courseId = '{courseId}' and c.classId = '{classId}' ";
|
|
|
+ }
|
|
|
+ await foreach (var item in clientTeacher.GetItemQueryIterator<ItemId>(queryText: sql))
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ scoreCalcBase.sort = count + 1;
|
|
|
scoreCalcBase = await clientTeacher.CreateItemAsync(scoreCalcBase, new PartitionKey($"{scoreCalcBase.code}"));
|
|
|
+
|
|
|
|
|
|
#endregion
|
|
|
|
|
@@ -511,9 +534,11 @@ namespace TEAMModelOS.Controllers
|
|
|
for (int j = 0; j < scoreCalcLsRecord.items.Count; j++)
|
|
|
{
|
|
|
scoreCalcLsRecord.itemRates.Add(1);
|
|
|
+ scoreCalcLsRecord.items[j].sort = j + 1;
|
|
|
}
|
|
|
scoreCalcLsRecord.editScores = editScores;
|
|
|
scoreCalcLsRecord.code = scoreCalcLsRecord.pk + "-" + teammodelId;
|
|
|
+ scoreCalcLsRecord.sort = 1;
|
|
|
scoreCalcLsRecord = await clientTeacher.CreateItemAsync(scoreCalcLsRecord, new PartitionKey($"{scoreCalcLsRecord.code}"));
|
|
|
//scoreCalcAct.Add(scoreCalcLsRecord);
|
|
|
|
|
@@ -525,10 +550,12 @@ namespace TEAMModelOS.Controllers
|
|
|
scoreCalcActivity_eaxm.name = "評量活動";
|
|
|
scoreCalcActivity_eaxm.type = "exam";
|
|
|
scoreCalcActivity_eaxm.rate = 30;
|
|
|
+ scoreCalcActivity_eaxm.sort = 2;
|
|
|
|
|
|
for (int j = 0; j < scoreCalcActivity_eaxm.items.Count; j++)
|
|
|
{
|
|
|
scoreCalcActivity_eaxm.itemRates.Add(1);
|
|
|
+ scoreCalcActivity_eaxm.items[j].sort = j + 1;
|
|
|
}
|
|
|
scoreCalcActivity_eaxm.editScores = editScores;
|
|
|
scoreCalcActivity_eaxm.code = scoreCalcActivity_eaxm.pk + "-" + teammodelId;
|
|
@@ -543,10 +570,12 @@ namespace TEAMModelOS.Controllers
|
|
|
scoreCalcActivity_homework.name = "作業活動";
|
|
|
scoreCalcActivity_homework.type = "homework";
|
|
|
scoreCalcActivity_homework.rate = 30;
|
|
|
+ scoreCalcActivity_homework.sort = 3;
|
|
|
|
|
|
for (int j = 0; j < scoreCalcActivity_homework.items.Count; j++)
|
|
|
{
|
|
|
scoreCalcActivity_homework.itemRates.Add(1);
|
|
|
+ scoreCalcActivity_homework.items[j].sort = j + 1;
|
|
|
}
|
|
|
scoreCalcActivity_homework.editScores = editScores;
|
|
|
scoreCalcActivity_homework.code = scoreCalcActivity_homework.pk + "-" + teammodelId;
|
|
@@ -680,6 +709,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("update-scorecalc")]
|
|
|
public async Task<IActionResult> UpdateSscoreCalc(JsonElement request)
|
|
|
{
|
|
@@ -753,6 +783,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("delete-scorecalc")]
|
|
|
public async Task<IActionResult> DeleteSscoreCalc(JsonElement request)
|
|
|
{
|
|
@@ -817,6 +848,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("update-formula")]
|
|
|
public async Task<IActionResult> UpdateFormula(JsonElement request)
|
|
|
{
|
|
@@ -914,6 +946,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("add-scorecalcact")]
|
|
|
public async Task<IActionResult> AddScoreCalcAct(JsonElement request)
|
|
|
{
|
|
@@ -935,6 +968,7 @@ namespace TEAMModelOS.Controllers
|
|
|
scoreCalcActivityItems.id = Guid.NewGuid().ToString();
|
|
|
scoreCalcActivityItems.name = "自訂項目名稱";
|
|
|
scoreCalcActivityItems.use = true;
|
|
|
+ scoreCalcActivityItems.sort = 1;
|
|
|
scoreCalcActivity.items.Add(scoreCalcActivityItems);
|
|
|
// 根據學生數量設定預設值
|
|
|
List<double> zeroScores = new List<double>();
|
|
@@ -950,6 +984,15 @@ namespace TEAMModelOS.Controllers
|
|
|
scoreCalcActivity.rate = 10;
|
|
|
scoreCalcActivity.editScores = zeroScores;
|
|
|
scoreCalcActivity.itemRates = new List<double>() { 1 };
|
|
|
+
|
|
|
+ //取得目前項目總數
|
|
|
+ int count = 0;
|
|
|
+ string sql = $"SELECT c.id FROM c where c.scorecalcId = '{scorecalcId.ToString()}' ";
|
|
|
+ await foreach (var item in clientTeacher.GetItemQueryIterator<ItemId>(queryText: sql))
|
|
|
+ {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ scoreCalcActivity.sort = count + 1;
|
|
|
// 新增項目及子項目
|
|
|
scoreCalcActivity = await clientTeacher.CreateItemAsync(scoreCalcActivity, new PartitionKey($"{scoreCalcActivity.code}"));
|
|
|
#endregion
|
|
@@ -987,6 +1030,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("add-scorecalcact-item")]
|
|
|
public async Task<IActionResult> AddScoreCalcActItem(JsonElement request)
|
|
|
{
|
|
@@ -1079,6 +1123,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("update-scorecalcact")]
|
|
|
public async Task<IActionResult> UpdateScoreCalcAct(JsonElement request)
|
|
|
{
|
|
@@ -1130,6 +1175,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("delete-scorecalcact")]
|
|
|
public async Task<IActionResult> DeleteSscoreCalcAct(JsonElement request)
|
|
|
{
|
|
@@ -1171,6 +1217,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("delete-scorecalcactitem")]
|
|
|
public async Task<IActionResult> DeleteSscoreCalcItem(JsonElement request)
|
|
|
{
|
|
@@ -1246,6 +1293,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("update-itemscore")]
|
|
|
public async Task<IActionResult> UpdateItemScore(JsonElement request)
|
|
|
{
|
|
@@ -1313,6 +1361,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
[HttpPost("export-orgscore")]
|
|
|
public async Task<IActionResult> ExportOrgScore(JsonElement request)
|
|
|
{
|
|
@@ -1917,5 +1966,47 @@ namespace TEAMModelOS.Controllers
|
|
|
#endregion
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// (十四)更新成績統計順序
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="request"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
+ [Authorize(Roles = "IES")]
|
|
|
+ [HttpPost("update-scorecalc-sort")]
|
|
|
+ public async Task<IActionResult> UpdateScoreCalcSort(JsonElement request)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if (!request.TryGetProperty("teammodelId", out JsonElement teammodelId)) return BadRequest();
|
|
|
+ var clientTeacher = _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher);
|
|
|
+ UpdateCalcSortRq updateCalcSortRq = JsonConvert.DeserializeObject<UpdateCalcSortRq>(request.ToString());
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < updateCalcSortRq.calcSorts.Count; i++)
|
|
|
+ {
|
|
|
+ //取主表資料
|
|
|
+ ScoreCalcBase scoreCalcBase = await clientTeacher.ReadItemAsync<ScoreCalcBase>(updateCalcSortRq.calcSorts[i].id.ToString(), new PartitionKey($"ScoreCalc-{teammodelId}"));
|
|
|
+ scoreCalcBase.sort = updateCalcSortRq.calcSorts[i].sort;
|
|
|
+ //更新
|
|
|
+ await clientTeacher.ReplaceItemAsync(scoreCalcBase, $"{scoreCalcBase.id}", new PartitionKey(scoreCalcBase.code));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var result = new
|
|
|
+ {
|
|
|
+ RtCode = "0",
|
|
|
+ RtMsg = "OK"
|
|
|
+ };
|
|
|
+
|
|
|
+ return Ok(result);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ //await _dingDing.SendBotMsg($"OS,{_option.Location},open-api/upsert()\n{e.Message}\n{e.StackTrace}\n{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
|
|
|
+ return BadRequest();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|