CrazyIter_Bin 2 éve
szülő
commit
ccfb4dec14

+ 11 - 4
TEAMModelOS/Controllers/Third/Sc/ScDataPushController.cs

@@ -431,12 +431,13 @@ namespace TEAMModelOS.Controllers
         [Authorize(Roles = "IES")]
         [Authorize(Roles = "IES")]
         [AuthToken(Roles = "teacher,admin,student", Permissions = "knowledge-read,knowledge-upd")]
         [AuthToken(Roles = "teacher,admin,student", Permissions = "knowledge-read,knowledge-upd")]
         public async Task<IActionResult> PushSelf(JsonElement json) {
         public async Task<IActionResult> PushSelf(JsonElement json) {
+            string ProjectItemID = $"{json.GetProperty("itemID")}";
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
             var (userid, _, _, school) = HttpContext.GetAuthTokenInfo();
             List<string> schools =new List<string> { school};
             List<string> schools =new List<string> { school};
             List<string> pushTeachers = new List<string> { userid};
             List<string> pushTeachers = new List<string> { userid};
             School schoolData =await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
             School schoolData =await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>(school, new PartitionKey("Base"));
             (List<ScsResult> results, List<PushFail> fails, List<Dictionary<string, object>> dicts) = await PushData(schoolData.areaId, schools, pushTeachers);
             (List<ScsResult> results, List<PushFail> fails, List<Dictionary<string, object>> dicts) = await PushData(schoolData.areaId, schools, pushTeachers);
-            (List<dynamic> ycd, List<dynamic> okd, List<TeacherSc> teachers, List<PushData> datas) = await CheckScPush(pushTeachers, schoolData.areaId, schools);
+            (List<dynamic> ycd, List<dynamic> okd, List<TeacherSc> teachers, List<PushData> datas) = await CheckScPush(pushTeachers, schoolData.areaId, schools, ProjectItemID);
             return Ok(new { results, fails, dicts, ycd, okd, teachers, datas });
             return Ok(new { results, fails, dicts, ycd, okd, teachers, datas });
         }
         }
 
 
@@ -1109,14 +1110,15 @@ namespace TEAMModelOS.Controllers
         [HttpPost("get-sc-teacher-push")]
         [HttpPost("get-sc-teacher-push")]
         public async Task<IActionResult> ScCheck(JsonElement json) 
         public async Task<IActionResult> ScCheck(JsonElement json) 
         {
         {
+            string ProjectItemID = $"{json.GetProperty("itemID")}";
             List<string> pushTeachers = json.GetProperty("pushTeachers").ToObject<List<string>>();
             List<string> pushTeachers = json.GetProperty("pushTeachers").ToObject<List<string>>();
             string areaIdJson = $"{json.GetProperty("areaId")}";
             string areaIdJson = $"{json.GetProperty("areaId")}";
             List<string> schools = json.GetProperty("schools").ToObject<List<string>>();
             List<string> schools = json.GetProperty("schools").ToObject<List<string>>();
             var client = _azureCosmos.GetCosmosClient();
             var client = _azureCosmos.GetCosmosClient();
-            (List<dynamic> ycd, List<dynamic> okd, List<TeacherSc> teachers,List<PushData> datas)= await CheckScPush(pushTeachers, areaIdJson, schools);
+            (List<dynamic> ycd, List<dynamic> okd, List<TeacherSc> teachers,List<PushData> datas)= await CheckScPush(pushTeachers, areaIdJson, schools, ProjectItemID);
             return Ok(new { ycData = ycd, okData = okd , tmdid= teachers .Select(x=>x.tmdid), datas = datas });
             return Ok(new { ycData = ycd, okData = okd , tmdid= teachers .Select(x=>x.tmdid), datas = datas });
         }
         }
-        private async Task<(List<dynamic> ycd ,List<dynamic> okd, List<TeacherSc> teachers, List<PushData> datas)> CheckScPush(List<string> pushTeachers,string areaIdJson,List<string> schools) {
+        private async Task<(List<dynamic> ycd ,List<dynamic> okd, List<TeacherSc> teachers, List<PushData> datas)> CheckScPush(List<string> pushTeachers,string areaIdJson,List<string> schools,string ProjectItemID) {
 
 
             Dictionary<string, Dictionary<string, object>> pushDatas = new Dictionary<string, Dictionary<string, object>>();
             Dictionary<string, Dictionary<string, object>> pushDatas = new Dictionary<string, Dictionary<string, object>>();
             List<Dictionary<string, object>> dicts = new List<Dictionary<string, object>>();
             List<Dictionary<string, object>> dicts = new List<Dictionary<string, object>>();
@@ -1133,7 +1135,12 @@ namespace TEAMModelOS.Controllers
                 pushTeachers.ForEach(tch => {
                 pushTeachers.ForEach(tch => {
                     Codes.Add($" tmdid {QueryComparisons.Equal} '{tch}' ");
                     Codes.Add($" tmdid {QueryComparisons.Equal} '{tch}' ");
                 });
                 });
-                string tbqurey = $"PartitionKey {QueryComparisons.Equal} 'ScTeacher' and areaId {QueryComparisons.Equal} '{areaIdJson}' and ( {string.Join(" or ", Codes)} )  ";
+                string itemqurey = "";
+                if (!string.IsNullOrWhiteSpace(ProjectItemID))
+                {
+                    itemqurey = $" and ProjectItemID {QueryComparisons.Equal} {ProjectItemID} ";
+                }
+                string tbqurey = $"PartitionKey {QueryComparisons.Equal} 'ScTeacher' and areaId {QueryComparisons.Equal} '{areaIdJson}' {itemqurey} and ( {string.Join(" or ", Codes)} )  ";
                 var result = await table.ExecuteQuerySegmentedAsync(new TableQuery<ScTeacher>().Where(tbqurey), null);
                 var result = await table.ExecuteQuerySegmentedAsync(new TableQuery<ScTeacher>().Where(tbqurey), null);
                 scTeachers = result.Results;
                 scTeachers = result.Results;
             }
             }