Browse Source

修正學校空間無授權資料時School.Base.size不會變更為初始值問題

jeff 3 years ago
parent
commit
4899e716b5
1 changed files with 25 additions and 7 deletions
  1. 25 7
      TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

+ 25 - 7
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -679,18 +679,36 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                     }
                 }
                 ////服務產品特別對應項
-                if (servicesProductSumOrg.Count > 0)
+                School school = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{schoolId}", new PartitionKey("Base")); //學校基本資料取得
+                bool updSchool = false; //是否變更學校基本資料
+                int chgSchSizeCnt = 0; //變更學校空間的次數 若為0表示現時間點沒有任何空間可使用 => 回復學校空間為初始值
+                int schoolDefaultSize = 1; //學校空間初始值:1
+                if (!string.IsNullOrWhiteSpace(school.id))
                 {
-                    foreach (SchoolProductSumData servicesProductSumOrgRow in servicesProductSumOrg)
+                    if (servicesProductSumOrg.Count > 0)
                     {
-                        //更新學校空間
-                        if (servicesProductSumOrgRow.prodCode.Equals("IPALJ6NY"))
+                        foreach (SchoolProductSumData servicesProductSumOrgRow in servicesProductSumOrg)
                         {
-                            School school = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{schoolId}", new PartitionKey("Base"));
-                            school.size = (servicesProductSumOrgRow.avaliable < 1) ? 1 : servicesProductSumOrgRow.avaliable;
-                            await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(school, $"{schoolId}", new PartitionKey("Base"));
+                            //更新學校空間
+                            if (servicesProductSumOrgRow.prodCode.Equals("IPALJ6NY"))
+                            {
+                                school.size = (servicesProductSumOrgRow.avaliable < 1) ? 1 : servicesProductSumOrgRow.avaliable;
+                                await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(school, $"{schoolId}", new PartitionKey("Base"));
+                                updSchool = true;
+                                chgSchSizeCnt++;
+                            }
                         }
                     }
+                    if(chgSchSizeCnt.Equals(0) && !school.size.Equals(schoolDefaultSize))
+                    {
+                        school.size = schoolDefaultSize;
+                        updSchool = true;
+                    }
+                }
+                //變更學校基本資料
+                if(updSchool)
+                {
+                    await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(school, $"{schoolId}", new PartitionKey("Base"));
                 }
 
                 ////硬體