RQSpecialQuestionItemViewModel.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. //
  2. // RQSpecialQuestionItemViewModel.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2022/6/22.
  6. // Copyright © 2022 JCZ. All rights reserved.
  7. //
  8. #import "RQSpecialQuestionItemViewModel.h"
  9. @implementation RQSpecialQuestionItemViewModel
  10. - (instancetype)initWithTitleStr:(NSString *)titleStr iconImgStr:(NSString *)iconImgStr {
  11. if (self = [super init]) {
  12. @weakify(self)
  13. self.title = titleStr;
  14. self.icon = iconImgStr;
  15. CGFloat width = (RQ_SCREEN_WIDTH - 8 - 32) / 2.f;
  16. CGFloat height = RQ_FIT_HORIZONTAL(50.f);
  17. self.itemSize = CGSizeMake(width, height);
  18. if ([titleStr isEqualToString:@"未做题"] || [titleStr isEqualToString:@"已做题"]) {
  19. [[RACScheduler scheduler] schedule:^{
  20. @strongify(self)
  21. NSInteger unDoCount = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_UnDo];
  22. NSInteger doCount = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Do];
  23. self.subtitle = [NSString qmui_stringWithNSInteger:[titleStr isEqualToString:@"未做题"]? unDoCount : doCount];
  24. self.operation = ^{
  25. if ([titleStr isEqualToString:@"未做题"]) {
  26. NSArray *undoArr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_UnDo ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  27. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  28. }].toArray;
  29. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  30. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  31. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  32. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  33. RQViewModelIDKey : titleStr,
  34. RQExerciseTypeKey : @(RQExerciseType_UnDo),
  35. RQViewModelUtilKey : undoArr,
  36. }];
  37. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  38. } else if ([titleStr isEqualToString:@"已做题"]) {
  39. NSArray *doArr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Do ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  40. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  41. }].toArray;
  42. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  43. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  44. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  45. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  46. RQViewModelIDKey : titleStr,
  47. RQExerciseTypeKey : @(RQExerciseType_Do),
  48. RQViewModelUtilKey : doArr,
  49. }];
  50. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  51. } else {
  52. [MBProgressHUD rq_showTips:@"正在获取题目..."];
  53. }
  54. };
  55. }];
  56. } else if ([titleStr isEqualToString:@"单选题"]) {
  57. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_SingleChoice];
  58. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  59. self.operation = ^{
  60. [[RACScheduler mainThreadScheduler] schedule:^{
  61. dispatch_semaphore_t sema = dispatch_semaphore_create(0);
  62. NSArray *arr = [[[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_SingleChoice ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  63. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  64. }] doCompleted:^{
  65. dispatch_semaphore_signal(sema);
  66. }].toArray;
  67. dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
  68. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  69. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  70. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  71. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  72. RQViewModelIDKey : titleStr,
  73. RQExerciseTypeKey : @(RQExerciseType_SingleChoice),
  74. RQViewModelUtilKey : arr,
  75. }];
  76. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  77. }];
  78. };
  79. } else if ([titleStr isEqualToString:@"多选题"]) {
  80. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_MutableChoice];
  81. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  82. self.operation = ^{
  83. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_MutableChoice ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  84. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  85. }].toArray;
  86. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  87. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  88. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  89. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  90. RQViewModelIDKey : titleStr,
  91. RQExerciseTypeKey : @(RQExerciseType_MutableChoice),
  92. RQViewModelUtilKey : arr,
  93. }];
  94. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  95. };
  96. } else if ([titleStr isEqualToString:@"判断题"]) {
  97. @strongify(self)
  98. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Judge];
  99. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  100. self.operation = ^{
  101. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Judge ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  102. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  103. }].toArray;
  104. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  105. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  106. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  107. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  108. RQViewModelIDKey : titleStr,
  109. RQExerciseTypeKey : @(RQExerciseType_Judge),
  110. RQViewModelUtilKey : arr,
  111. }];
  112. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  113. };
  114. } else if ([titleStr isEqualToString:@"文字题"]) {
  115. @strongify(self)
  116. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Text];
  117. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  118. self.operation = ^{
  119. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithExerciseType:RQExerciseType_Text].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  120. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  121. }].toArray;
  122. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  123. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  124. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  125. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  126. RQViewModelIDKey : titleStr,
  127. RQExerciseTypeKey : @(RQExerciseType_Text),
  128. RQViewModelUtilKey : arr,
  129. }];
  130. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  131. };
  132. } else if ([titleStr isEqualToString:@"图片题"]) {
  133. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Image];
  134. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  135. self.operation = ^{
  136. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Image ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  137. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  138. }].toArray;
  139. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  140. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  141. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  142. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  143. RQViewModelIDKey : titleStr,
  144. RQExerciseTypeKey : @(RQExerciseType_Image),
  145. RQViewModelUtilKey : arr,
  146. }];
  147. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  148. };
  149. } else if ([titleStr isEqualToString:@"动画题"]) {
  150. NSInteger count = [RQ_YDTQuestion_Module getQuestionNumWithWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Video];
  151. self.subtitle = [NSString qmui_stringWithNSInteger:count];
  152. self.operation = ^{
  153. NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Video ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel *ydtQuestionModel) {
  154. return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];
  155. }].toArray;
  156. RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  157. RQHomePageCarTypeKey : @(RQ_YDTQuestion_Module.carType),
  158. RQHomePageSubjectTypeKey : @(RQ_YDTQuestion_Module.subject),
  159. RQHomeSubPageTypeKey : @(RQHomeSubPageType_SequentialPractice),
  160. RQViewModelIDKey : titleStr,
  161. RQExerciseTypeKey : @(RQExerciseType_Video),
  162. RQViewModelUtilKey : arr,
  163. }];
  164. [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
  165. };
  166. }
  167. }
  168. return self;
  169. }
  170. @end