// // AnswerViewController.m // Lighting // // Created by 曹云霄 on 2016/12/7. // Copyright © 2016年 上海勾芒科技有限公司. All rights reserved. // #import "AnswerViewController.h" #import "AssessmentShortAnswerTableViewCell.h" #import "AssessmentHeaderView.h" #import "AssessmentTableViewCell.h" #import "AssessmentShortAnswerTableViewCell.h" #import "EmigratedFinishViewController.h" @interface AnswerViewController ()<UITableViewDelegate,UITableViewDataSource,WYPopoverControllerDelegate> @property (nonatomic,strong) WYPopoverController *popover; /** 闯关详情 */ @property (nonatomic,strong) TOPassLevelEntity *emigrated; /** 当前加载section */ @property (nonatomic,assign) NSInteger sectionPage; @end @implementation AnswerViewController - (void)viewDidLoad { [super viewDidLoad]; [self getPassLevelDeltails]; } #pragma mark - 查询题型 - (void)getPassLevelDeltails { WS(weakSelf); [XBLoadingView showHUDViewWithDefault]; [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:[NSString stringWithFormat:SERVERREQUESTURL(GETPASSLEVELDETAILS),self.passLevelId] WithRequestType:ONE WithParameter:nil WithReturnValueBlock:^(id returnValue) { [XBLoadingView hideHUDViewWithDefault]; if ([returnValue[@"code"] isEqualToNumber:@0]) { weakSelf.emigrated = [[TOPassLevelEntity alloc] initWithDictionary:returnValue[@"data"] error:nil]; [weakSelf.answerTableView reloadData]; }else { [XBLoadingView showHUDViewWithText:returnValue[@"message"]]; } } WithFailureBlock:^(NSError *error) { [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; } #pragma mark - <UITableViewDelegate,UITableViewDataSource> - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { CustomTOPassLevelTopicEntity *entity = self.emigrated.topics[self.sectionPage]; if ([entity.topicType isEqualToString:PASSLEVELTOPICTYPE_GAPFILLING] || [entity.topicType isEqualToString:PASSLEVELTOPICTYPE_SHORTANSWER]) { AssessmentShortAnswerTableViewCell *shortAnswerCell = [tableView dequeueReusableCellWithIdentifier:@"AssessmentShortAnswerTableViewCell" forIndexPath:indexPath]; shortAnswerCell.entity = entity; return shortAnswerCell; } AssessmentTableViewCell *assessmentCell = [tableView dequeueReusableCellWithIdentifier:@"AssessmentTableViewCell" forIndexPath:indexPath]; assessmentCell.emigratedEntity = entity.options[indexPath.row]; return assessmentCell; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { CustomTOPassLevelTopicEntity *entity = self.emigrated.topics[self.sectionPage]; return entity.titleHeight; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { CustomTOPassLevelTopicEntity *entity = self.emigrated.topics[self.sectionPage]; if (entity.options.count) { CustomTOPassLevelTopicOptionEntity *answer = entity.options[indexPath.row]; return answer.answerHeight; } return 200; } - (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath { if ([cell isKindOfClass:[AssessmentShortAnswerTableViewCell class]]) { AssessmentShortAnswerTableViewCell *shortAnswerCell = (AssessmentShortAnswerTableViewCell *)cell; shortAnswerCell.shortAnswerTextView.text = nil; } } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return ONE; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { CustomTOPassLevelTopicEntity *entity = self.emigrated.topics[self.sectionPage]; if ([entity.topicType isEqualToString:PASSLEVELTOPICTYPE_GAPFILLING] || [entity.topicType isEqualToString:PASSLEVELTOPICTYPE_SHORTANSWER]) { return ONE; } return entity.options.count; } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { AssessmentHeaderView *headerView = [tableView dequeueReusableCellWithIdentifier:@"AssessmentHeaderView"]; headerView.emigratedEntity = self.emigrated.topics[self.sectionPage]; return headerView.contentView; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { CustomTOPassLevelTopicEntity *entitys = self.emigrated.topics[self.sectionPage]; if ([entitys.topicType isEqualToString:STUDYTOPICTYPE_SINGLE] || [entitys.topicType isEqualToString:STUDYTOPICTYPE_TRUEORFALSE]) { for (int i=0; i<entitys.options.count; i++) { CustomTOPassLevelTopicOptionEntity *entity = entitys.options[i]; if (i == indexPath.row) { entity.isSelected = !entity.isSelected; }else { entity.isSelected = NO; } } }else if ([entitys.topicType isEqualToString:STUDYTOPICTYPE_MULTIPLE]) { CustomTOPassLevelTopicOptionEntity *answer = entitys.options[indexPath.row]; answer.isSelected = !answer.isSelected; } [self.answerTableView reloadData]; } #pragma mark - 下一步<最后一道题自动提交> - (IBAction)nextButtonClickAction:(UIButton *)sender { if (self.sectionPage == self.emigrated.topics.count-1) { [self submitAnswer]; }else { self.sectionPage += ONE; [self.answerTableView reloadData]; } } #pragma mark - 提交答案 - (void)submitAnswer { TOPassLevelResultEntity *studyResult = [[TOPassLevelResultEntity alloc]init]; studyResult.passLevelId = self.passLevelId; studyResult.submitTime = [[self class] getTimeby:0]; studyResult.employeeId = [Shoppersmanager manager].Shoppers.employee.fid; NSArray *answerArray = self.emigrated.topics; NSMutableArray *submitAnswerArray = [NSMutableArray array]; //判断考核结果 NSInteger allScore = 0;//总分 studyResult.passResult = self.emigrated.passGrade > [studyResult.grade integerValue]?@"0":@"1"; for (CustomTOPassLevelTopicEntity *topicEntity in answerArray) { TOPassLevelResultDetailEntity *resultEntity = [[TOPassLevelResultDetailEntity alloc] init]; resultEntity.topicId = topicEntity.fid; //多选 if ([topicEntity.topicType isEqualToString:STUDYTOPICTYPE_MULTIPLE]) { NSMutableString *answers = [[NSMutableString alloc] init]; for (CustomTOPassLevelTopicOptionEntity *entity in topicEntity.options) { if (entity.isSelected == YES) { [answers appendFormat:@"%@,",entity.value]; } } resultEntity.answer = answers; //得分 NSArray *answersArray = [topicEntity.answer componentsSeparatedByString:@","]; NSInteger answerNumber = 0; for (NSString *answer in answersArray) { for (CustomTOStudyTopicOptionEntity *entity in topicEntity.options) { if ([answer isEqualToString:entity.value] && entity.isSelected) { answerNumber += 1; } } } if (answerNumber == answersArray.count) { resultEntity.grade = topicEntity.grade; allScore += [topicEntity.grade integerValue]; } } //判断 if ([topicEntity.topicType isEqualToString:STUDYTOPICTYPE_TRUEORFALSE]) { for (CustomTOPassLevelTopicOptionEntity *entity in topicEntity.options) { if (entity.isSelected == YES) { resultEntity.answer = entity.name; if ([topicEntity.answer isEqualToString:entity.name]) { resultEntity.grade = topicEntity.grade; allScore += [topicEntity.grade integerValue]; } } } } //单选 if ([topicEntity.topicType isEqualToString:STUDYTOPICTYPE_SINGLE]) { for (CustomTOPassLevelTopicOptionEntity *entity in topicEntity.options) { if (entity.isSelected == YES) { resultEntity.answer = entity.value; if ([topicEntity.answer isEqualToString:entity.value]) { resultEntity.grade = topicEntity.grade; allScore += [topicEntity.grade integerValue]; } } } } //填空、简答 if ([topicEntity.topicType isEqualToString:PASSLEVELTOPICTYPE_GAPFILLING] || [topicEntity.topicType isEqualToString:PASSLEVELTOPICTYPE_SHORTANSWER]) { resultEntity.answer = topicEntity.answer; studyResult.passResult = @"2";//人工审核 } [submitAnswerArray addObject:resultEntity]; } studyResult.details = (NSArray<TOPassLevelResultDetailEntity>*)submitAnswerArray; studyResult.grade = [NSNumber numberWithFloat:allScore]; [XBLoadingView showHUDViewWithDefault]; WS(weakSelf); NSLog(@"%@",[studyResult toDictionary]); [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(SUBMITEMIGRATEDANSWER) WithRequestType:ZERO WithParameter:studyResult WithReturnValueBlock:^(id returnValue) { [XBLoadingView hideHUDViewWithDefault]; if ([returnValue[@"code"] isEqualToNumber:@0]) { [weakSelf determineIsQualified:[studyResult.grade integerValue]]; }else{ [XBLoadingView showHUDViewWithText:returnValue[@"message"]]; } } WithFailureBlock:^(NSError *error) { [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; } #pragma mark - 判断得分是否及格 - (void)determineIsQualified:(NSInteger)allScore { if (self.emigrated.passGrade > allScore) { EmigratedFinishViewController *finish = [[[self class] getLearningCenterStoryboardClass] instantiateViewControllerWithIdentifier:@"EmigratedFinishViewController"]; finish.preferredContentSize = CGSizeMake(520, 400); [self showPopoverView:finish]; }else { WS(weakSelf); [XBLoadingView showHUDViewWithDefault]; [[NetworkRequestClassManager Manager] NetworkWithDictionaryRequestWithURL:SERVERREQUESTURL(GETINTEGRAL) WithRequestType:ONE WithParameter:nil WithReturnValueBlock:^(id returnValue) { [XBLoadingView hideHUDViewWithDefault]; if ([returnValue[@"code"] isEqualToNumber:@0]) { }else { [XBLoadingView showHUDViewWithText:returnValue[@"message"]]; } } WithFailureBlock:^(NSError *error) { [XBLoadingView showHUDViewWithText:error.localizedDescription]; }]; } } #pragma mark - 弹出框 - (void)showPopoverView:(BaseViewController *)controller { self.popover = [[WYPopoverController alloc] initWithContentViewController:controller]; self.popover.theme.fillBottomColor = [UIColor clearColor]; self.popover.theme.fillTopColor = [UIColor clearColor]; self.popover.theme.glossShadowColor = [UIColor clearColor]; self.popover.delegate = self; [self.popover presentPopoverAsDialogAnimated:YES options:WYPopoverAnimationOptionFadeWithScale]; } #pragma mark - 点击空白禁止收起 - (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)popoverController { return NO; } @end