ExamInfoService.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.Model.Evaluation.Dtos.Own;
  7. using TEAMModelOS.Model.Evaluation.Models.CosmosModels;
  8. using TEAMModelOS.Model.EvaluaTion.Dtos;
  9. using TEAMModelOS.Model.EvaluaTion.Models;
  10. using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
  11. using TEAMModelOS.Service.Core.Implements;
  12. using TEAMModelOS.Service.EvaluaTion.Interfaces;
  13. namespace TEAMModelOS.Service.EvaluaTion.Implements
  14. {
  15. public class ExamInfoService : BaseService, IExamInfoService
  16. {
  17. public IAzureCosmosDBRepository _cosmosrepository;
  18. public ExamInfoService(IAzureCosmosDBRepository cosmosDBRepository)
  19. {
  20. _cosmosrepository = cosmosDBRepository;
  21. }
  22. public async Task<List<MemberAnswer>> SaveOrUpdate(List<MemberAnswer> answers, string lang)
  23. {
  24. List<AnswerInfo> answerInfos = new List<AnswerInfo>();
  25. if (null != answers)
  26. {
  27. answers.ForEach(e =>
  28. {
  29. answerInfos.Add(new AnswerInfo()
  30. {
  31. RowKey = Guid.NewGuid().ToString(),
  32. PartitionKey = lang,
  33. StudentId = e.StudentId,
  34. ExNO = e.ExNO,
  35. Index = e.Itemindex,
  36. Selection = e.Selection,
  37. Point = e.Point
  38. });
  39. });
  40. }
  41. await SaveOrUpdateAll(answerInfos);
  42. return answers;
  43. }
  44. public async Task<List<ExerciseInfo>> SaveOrUpdateAsync(List<ExerciseInfo> exercises, string lang)
  45. {
  46. List<ExamInfo> exams = new List<ExamInfo>();
  47. if (null != exercises)
  48. {
  49. exercises.ForEach(e =>
  50. {
  51. exams.Add(new ExamInfo()
  52. {
  53. RowKey = Guid.NewGuid().ToString(),
  54. PartitionKey = lang,
  55. ExName = e.Ex_name,
  56. ExTime = e.Ex_time,
  57. CouseName = e.Course_name,
  58. SchoolName = e.SchoolName,
  59. GradeName = e.GradeName,
  60. AcademicYear = int.Parse(e.AcademicYear),
  61. SOrder = int.Parse(e.SOrder),
  62. CouseNO = e.Course_no,
  63. ClassCode = e.Class_code,
  64. ClassName = e.Class_name,
  65. QNumber = e.QNumber,
  66. StuCount = e.Stucount,
  67. EndTime = e.End_time,
  68. ClassAvgScore = e.AvgScore
  69. });
  70. });
  71. }
  72. await SaveOrUpdateAll(exams);
  73. return exercises;
  74. //throw new NotImplementedException();
  75. }
  76. public Task<List<MemberAnswer>> SaveToCosmosAnswer(List<MemberAnswer> items)
  77. {
  78. throw new NotImplementedException();
  79. }
  80. public async Task<List<ExerciseInfo>> SaveToCosmosExamAsync(List<ExerciseInfo> exercises, List<MemberAnswer> members)
  81. {
  82. List<Exam> exams = new List<Exam>();
  83. List<Answer> answers = new List<Answer>();
  84. List<CouseExam> couseExams = new List<CouseExam>();
  85. List<Exam> objs = new List<Exam>();
  86. List<CouseExam> couseObjs = new List<CouseExam>();
  87. if (null != exercises)
  88. {
  89. members.ForEach(m => {
  90. answers.Add(new Answer
  91. {
  92. Id = Guid.NewGuid().ToString(),
  93. ExNO = m.ExNO,
  94. Index = m.Itemindex,
  95. Point = float.Parse(m.Point.ToString()),
  96. Detail = m.Selection,
  97. StudentId = m.StudentId
  98. });
  99. });
  100. exercises.ForEach(e =>
  101. {
  102. string ExamNumber = e.Ex_name.Replace(" ", "").Split("_")[1];
  103. answers.ForEach(a =>
  104. {
  105. if (e.ExNO.Equals(a.ExNO) ) {
  106. //a.ExNO = e.ExNO;
  107. //a.Number = ExamNumber;
  108. a.GradeCode = e.GradeName;
  109. a.SchoolCode = e.SchoolName;
  110. a.ClassCode = e.Class_code;
  111. a.CourseCode = e.Course_name;
  112. a.ExamName = e.Ex_name.Replace(" ", "").Split("-")[0] + "-" + e.Ex_name.Replace(" ", "").Split("-")[1];
  113. }
  114. });
  115. exams.Add(new Exam()
  116. {
  117. Id = Guid.NewGuid().ToString(),
  118. Number = ExamNumber,
  119. Name = e.Ex_name.Replace(" ","").Split("-")[0]+ "-"+e.Ex_name.Replace(" ", "").Split("-")[1],
  120. Time = e.Ex_time
  121. });
  122. couseExams.Add(new CouseExam()
  123. {
  124. Id = Guid.NewGuid().ToString(),
  125. //Number = ExamNumber,
  126. ExNO = e.ExNO,
  127. ExName = e.Ex_name.Replace(" ", "").Split("-")[0] + "-" + e.Ex_name.Replace(" ", "").Split("-")[1],
  128. ExTime = e.Ex_time,
  129. AcademicYear = int.Parse(e.AcademicYear),
  130. SOrder = int.Parse(e.SOrder),
  131. Subject = e.Course_name,
  132. SchoolName = e.SchoolName
  133. });
  134. });
  135. objs = exams.Where((x, i) => exams.FindIndex(z => z.Name == x.Name) == i).ToList();
  136. couseObjs = couseExams.Where((x, i) => couseExams.FindIndex(z => z.ExName == x.ExName && z.Subject == x.Subject) == i).ToList();
  137. objs.ForEach(f =>
  138. {
  139. couseObjs.ForEach(g => {
  140. if (f.Name.Equals(g.ExName)) {
  141. g.Number = f.Number;
  142. }
  143. });
  144. });
  145. couseObjs.ForEach(g => {
  146. answers.ForEach(x =>
  147. {
  148. if (g.Subject.Equals(x.CourseCode) && g.SchoolName.Equals(x.SchoolCode)
  149. && g.ExName.Equals(x.ExamName))
  150. {
  151. x.Number = g.Number;
  152. x.ExNO = g.ExNO;
  153. }
  154. });
  155. });
  156. }
  157. await _cosmosrepository.SaveAll(objs);
  158. await _cosmosrepository.SaveAll(couseObjs);
  159. await _cosmosrepository.SaveAll(answers);
  160. return exercises;
  161. }
  162. public async Task<List<ExerciseInfo>> SaveToCosmosExam(List<ExerciseInfo> exercises, List<MemberAnswer> members)
  163. {
  164. List<Exams> exams = new List<Exams>();
  165. List<AnswerDetail> answerDetail = new List<AnswerDetail>();
  166. List<Answers> answers = new List<Answers>();
  167. List<Exams> objs = new List<Exams>();
  168. foreach (IGrouping<string, MemberAnswer> group in members.GroupBy(c => c.ExNO +"---"+ c.StudentId)) {
  169. string[] keys = group.Key.Split("---");
  170. var list= group.ToList();
  171. Answers answer = new Answers
  172. {
  173. Id = Guid.NewGuid().ToString(),
  174. ExNO = keys[0],
  175. StudentId = keys[1]
  176. };
  177. foreach (var ls in list) {
  178. answer.Detail.Add(new AnswerDetail {
  179. Index = ls.Itemindex,
  180. Point = float.Parse(ls.Point),
  181. Detail = ls.Selection
  182. });
  183. }
  184. answers.Add(answer);
  185. }
  186. //List<CouseExam> couseObjs = new List<CouseExam>();
  187. if (null != exercises) {
  188. exercises.ForEach(e =>
  189. {
  190. exams.Add(new Exams() {
  191. Id = Guid.NewGuid().ToString(),
  192. ExNO = e.Ex_name.Replace(" ", "").Split("_")[1],
  193. ExName = e.Ex_name.Replace(" ", "").Split("-")[0] + "-" + e.Ex_name.Replace(" ", "").Split("-")[1],
  194. ExTime = e.Ex_time,
  195. AcademicYear = int.Parse(e.AcademicYear),
  196. SOrder = int.Parse(e.SOrder),
  197. Sub = e.Course_name
  198. });
  199. answers.ForEach(a =>
  200. {
  201. if (a.ExNO.Equals(e.ExNO))
  202. {
  203. a.ExNO = e.Ex_name.Replace(" ", "").Split("_")[1];
  204. a.GradeCode = e.GradeName;
  205. a.SchoolCode = e.SchoolName;
  206. a.ClassCode = e.Class_code;
  207. a.CourseCode = e.Course_name;
  208. }
  209. });
  210. objs = exams.Where((x, i) => exams.FindIndex(z => z.ExName == x.ExName && z.Sub
  211. == x.Sub) == i).ToList();
  212. });
  213. }
  214. await _cosmosrepository.SaveAll(objs);
  215. await _cosmosrepository.SaveAll(answers);
  216. return exercises;
  217. }
  218. public async Task<SimpleExam> SaveToCosmos(SimpleExam simple)
  219. {
  220. await _cosmosrepository.Save(simple);
  221. return simple;
  222. //throw new NotImplementedException();
  223. }
  224. public async Task<List<StuInfo>> SaveListToCosmos(List<StuInfo> stu)
  225. {
  226. await _cosmosrepository.SaveAll(stu);
  227. return stu;
  228. //throw new NotImplementedException();
  229. }
  230. }
  231. }