TriggerStuActivity.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using Azure;
  2. using Azure.Cosmos;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Extension;
  12. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  13. using TEAMModelOS.SDK.Models;
  14. using TEAMModelOS.SDK.Models.Cosmos.Common;
  15. namespace OS.Funct
  16. {
  17. public class TriggerStuActivity
  18. {
  19. public static async Task<string> SaveStuActivity(CosmosClient client, List<StuActivity> stuActivities, List<StuActivity> tmdActivities)
  20. {
  21. if (stuActivities.IsNotEmpty())
  22. {
  23. foreach (var x in stuActivities)
  24. {
  25. await client.GetContainer("TEAMModelOS", "Student").UpsertItemAsync(x, new PartitionKey(x.code));
  26. }
  27. }
  28. if (tmdActivities.IsNotEmpty())
  29. {
  30. foreach (var x in tmdActivities)
  31. {
  32. await client.GetContainer("TEAMModelOS", "Teacher").UpsertItemAsync(x, new PartitionKey(x.code));
  33. }
  34. }
  35. return "";
  36. }
  37. public static async Task<(List<string> tmdids, List<Students> studentss)> GetStuList(CosmosClient client, List<string> classes, string school)
  38. {
  39. List<string> tmdids = new List<string>();
  40. List<Students> studentss = new List<Students>();
  41. if (!classes.IsNotEmpty()) { return (tmdids, studentss); }
  42. List<string> sqlList = new List<string>();
  43. classes.ForEach(x => { sqlList.Add($" '{x}' "); });
  44. string sql = string.Join(" , ", sqlList);
  45. List<StuList> schList = new List<StuList>();
  46. List<Student> students = new List<Student>();
  47. if (!string.IsNullOrEmpty(school))
  48. {
  49. await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<StuList>(queryText: $"select value(c) from c where c.id in ({sql})",
  50. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList-{school}") }))
  51. {
  52. schList.Add(item);
  53. }
  54. await foreach (var item in client.GetContainer("TEAMModelOS", "Student").GetItemQueryIterator<Student>(queryText: $"select value(c) from c where c.classId in ({sql})",
  55. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Base-{school}") }))
  56. {
  57. students.Add(item);
  58. }
  59. }
  60. List<StuList> tchLists = new List<StuList>();
  61. await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<StuList>(queryText: $"select value(c) from c where c.id in ({sql})",
  62. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"StuList") }))
  63. {
  64. tchLists.Add(item);
  65. }
  66. schList.ForEach(x => {
  67. if (x.students.IsNotEmpty())
  68. {
  69. studentss.AddRange(x.students);
  70. }
  71. if (x.tmids.IsNotEmpty())
  72. {
  73. tmdids.AddRange(x.tmids);
  74. }
  75. });
  76. tchLists.ForEach(x =>
  77. {
  78. if (x.students.IsNotEmpty())
  79. {
  80. studentss.AddRange(x.students);
  81. }
  82. if (x.tmids.IsNotEmpty())
  83. {
  84. tmdids.AddRange(x.tmids);
  85. }
  86. });
  87. students.ForEach(x => {
  88. studentss.Add(new Students { id = x.id, code = x.code, schoolId = x.schoolId });
  89. });
  90. return (tmdids, studentss);
  91. }
  92. }
  93. }