// // CourseViewController.m // tongxin // // Created by ecell on 2021/11/24. // Copyright © 2021 xTT. All rights reserved. // #import "CourseViewController.h" #import "GWPCourseListView.h" #import "CourseModel.h" #import "AddCourseViewController.h" #import "CourseSchedule.h" //#import @interface CourseViewController () @property (nonatomic, strong) GWPCourseListView *courseListView; @property (nonatomic, strong) UILabel *addBtn; @property (nonatomic, strong) NSMutableArray *courseArr; @property (nonatomic, strong) CourseSchedule *curSchedule; @property (nonatomic, strong) NSMutableDictionary *timetableDict; @property (nonatomic, strong) NSArray *keyArray; @end @implementation CourseViewController - (NSMutableArray *)courseArr{ if (!_courseArr) { //CourseModel *a = [CourseModel courseWithName:@"PHP" dayIndex:1 startCourseIndex:1 endCourseIndex:2]; //CourseModel *b = [CourseModel courseWithName:@"Java" dayIndex:1 startCourseIndex:3 endCourseIndex:3]; //CourseModel *c = [CourseModel courseWithName:@"C++" dayIndex:1 startCourseIndex:4 endCourseIndex:6]; //CourseModel *d = [CourseModel courseWithName:@"C#" dayIndex:2 startCourseIndex:4 endCourseIndex:4]; //CourseModel *e = [CourseModel courseWithName:@"javascript" dayIndex:7 startCourseIndex:5 endCourseIndex:6]; //_courseArr = [NSMutableArray arrayWithArray:@[a,b,c,d,e]]; _courseArr = [NSMutableArray new]; } return _courseArr; } - (void)viewDidLoad { [super viewDidLoad]; if (self.navigationController.viewControllers.count > 1) { self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[myHelper getImageWithName:@"返回"] style:UIBarButtonItemStylePlain target:self action:@selector(goBack:)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"保存" style:UIBarButtonItemStylePlain target:self action:@selector(saveSchedule:)]; } self.title = @"课程表"; self.curSchedule = [[CourseSchedule alloc] init]; self.keyArray = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8"]; [self initTimeTable]; self.courseListView = [[GWPCourseListView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)]; self.courseListView.delegate = self; self.courseListView.dataSource = self; [self.view addSubview:self.courseListView]; self.addBtn = [[UILabel alloc] initWithFrame:CGRectMake(ScreenWidth-120, ScreenHeight-240, 68, 68)]; self.addBtn.text = @"+"; self.addBtn.textAlignment = NSTextAlignmentCenter; self.addBtn.font = [UIFont systemFontOfSize:48]; self.addBtn.textColor = RGB(255, 255, 255); self.addBtn.userInteractionEnabled = YES; self.addBtn.layer.cornerRadius = 34; self.addBtn.clipsToBounds = YES; self.addBtn.backgroundColor = mainColor; [self.addBtn addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(addCourse)]]; [self.view addSubview:self.addBtn]; [self getScheduleFromServer]; } - (void)saveSchedule:(id)sender { CourseSchedule *api = [[CourseSchedule alloc] init]; [api save:[self getTimeTableParameter] schedule:[self getScheduleParameter] success:^{ [UICommon MessageSuccessText:@"保存成功" isImg:YES]; } failure:^(NSError *error) { [UICommon MessageErrorText:@"保存失败"]; }]; NSLog(@"%@ %@",[self getScheduleParameter],[self getTimeTableParameter]); } - (NSString *)getTimeTableParameter { NSString *result = @""; for (NSString *timeKey in _keyArray) { NSString *timeValue = [_timetableDict objectForKey:timeKey]; result = [result stringByAppendingString:@"-"]; result = [result stringByAppendingString:timeValue]; } return [result substringFromIndex:1]; } - (NSString *)getScheduleParameter { NSString *result = @""; for (CourseModel *model in self.courseArr) { result = [result stringByAppendingString:@"-"]; result = [result stringByAppendingString:[NSString stringWithFormat:@"%zd_%zd_%@",model.dayIndex,model.startCourseIndex,model.courseName]]; } return [result substringFromIndex:1]; } - (void)getScheduleFromServer { WEAKSELF [self.curSchedule query:^(CourseSchedule *model) { [weakSelf dealOriginalSchedule:model]; } failure:^(NSError *error) { }]; } - (void)dealOriginalSchedule:(CourseSchedule *)model { if (model.schedule) { NSArray *array = [model.schedule componentsSeparatedByString:@"-"]; // 星期_节次_课程-...-星期_节次_课程-...-星期_节次_课程 for (NSString *course in array) { NSArray *cor = [course componentsSeparatedByString:@"_"]; if (cor.count != 3) { continue; } CourseModel *cm = [CourseModel courseWithName:cor[2] dayIndex:[cor[0] intValue] startCourseIndex:[cor[1] intValue] endCourseIndex:[cor[1] intValue]]; [self.courseArr addObject:cm]; } } //xxxxxxxx-xxxxxxxx-hhmmhhmm-xxxxxxxx if (model.timetable && model.timetable.length > 8) { NSArray *items = [model.timetable componentsSeparatedByString:@"-"]; if (items.count == 8) { for (int i=0; i<_keyArray.count; i++) { [self.timetableDict setValue:items[i] forKey:_keyArray[i]]; } } } [self.courseListView reloadData]; } - (void)initTimeTable { _timetableDict = [NSMutableDictionary dictionary]; for (int i=0; i<_keyArray.count; i++) { [_timetableDict setValue:@"00000000" forKey:_keyArray[i]]; } } - (NSString *)getStartTimeAndEndTime:(NSString *)key { NSString *time = [_timetableDict objectForKey:key]; NSString *hh = [time substringWithRange:NSMakeRange(0, 2)]; NSString *mm = [time substringWithRange:NSMakeRange(2, 2)]; NSString *hh2 = [time substringWithRange:NSMakeRange(4, 2)]; NSString *mm2 = [time substringWithRange:NSMakeRange(6, 2)]; return [NSString stringWithFormat:@"%@:%@-%@:%@",hh,mm,hh2,mm2]; } - (void)addCourse { UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; AddCourseViewController *vc =[sb instantiateViewControllerWithIdentifier:@"AddCourseViewController"]; vc.delegate = self; [self.navigationController pushViewController:vc animated:YES]; } #pragma call back - (void)addCourse:(AddCourseViewController *)vc course:(CourseModel *)model time:time { //CourseModel *a = [CourseModel courseWithName:@"Golang Hello World" dayIndex:3 startCourseIndex:1 endCourseIndex:2]; [self.timetableDict setValue:time forKey:[NSString stringWithFormat:@"%ld",model.startCourseIndex]]; BOOL found = NO; for (CourseModel *cm in self.courseArr) { //修改 if ([cm isSameCourse:model]) { cm.courseName = model.courseName; found = YES; break; } } // 新增 化学 物理 自然 劳动 科技 自然 英文 数学 语文 if (!found) { [self.courseArr addObject:model]; } [self.courseListView reloadData]; NSLog(@"============%@", time); } - (void)goBack:(id)sender { if (self.navigationController.viewControllers.count > 1) { [self.navigationController popViewControllerAnimated:YES]; }else{ [self dismissViewControllerAnimated:YES completion:nil]; } } #pragma mark - GWPCourseListViewDataSource - (NSArray> *)courseForCourseListView:(GWPCourseListView *)courseListView{ return self.courseArr; } /** 课程单元背景色自定义 */ - (UIColor *)courseListView:(GWPCourseListView *)courseListView courseTitleBackgroundColorForCourse:(id)course{ //if ([course isEqual:[self.courseArr firstObject]]) { // 第一个,返回自定义颜色 // return [UIColor blueColor]; //} // 其他返回默认的随机色 return nil; } /** 设置选项卡的title的文字属性,如果实现该方法,该方法返回的attribute将会是attributeString的属性 */ - (NSDictionary*)courseListView:(GWPCourseListView *)courseListView titleAttributesInTopbarAtIndex:(NSInteger)index{ //if (index==0) { // return @{NSForegroundColorAttributeName:[UIColor greenColor], NSFontAttributeName:[UIFont systemFontOfSize:18]}; //} return nil; } /** 设置选项卡的title的背景颜色,默认白色 */ - (UIColor*)courseListView:(GWPCourseListView *)courseListView titleBackgroundColorInTopbarAtIndex:(NSInteger)index{ //if (index==1) { // return [UIColor purpleColor]; //} return nil; } #pragma mark - GWPCourseListViewDelegate /** 选中(点击)某一个课程单元之后的回调 */ - (void)courseListView:(GWPCourseListView *)courseListView didSelectedCourse:(id)course{ CourseModel *model = (CourseModel *)course; if (model) { [self showOperationDialog:model]; } //NSLog(@"SELECT %zd_%zd", courseListView.selectedIndex, courseListView.selectedRow); } - (void)showOperationDialog:(CourseModel *)model { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"修改或删除数据" message:@"删除数据将不可恢复" preferredStyle: UIAlertControllerStyleActionSheet]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { NSLog(@"点击了取消"); }]; UIAlertAction *deleteAction = [UIAlertAction actionWithTitle:@"删除" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { NSLog(@"点击了删除"); for (int i=0; i < [self.courseArr count]; i++) { CourseModel *cm = [self.courseArr objectAtIndex:i]; if ([cm isSameCourse:model]) { [self.courseArr removeObject:cm]; [self.courseListView reloadData]; break; } } }]; UIAlertAction *archiveAction = [UIAlertAction actionWithTitle:@"修改" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; AddCourseViewController *vc =[sb instantiateViewControllerWithIdentifier:@"AddCourseViewController"]; vc.delegate = self; vc.curModel = model; vc.courseTime = [self getStartTimeAndEndTime:[NSString stringWithFormat:@"%zd",model.startCourseIndex]]; [self.navigationController pushViewController:vc animated:YES]; }]; [alertController addAction:cancelAction]; [alertController addAction:deleteAction]; [alertController addAction:archiveAction]; [self presentViewController:alertController animated:YES completion:nil]; } @end