import 'package:timemanagerapp/controller/NetWorkController.dart'; import 'package:timemanagerapp/database/dao/CourseDao.dart'; import 'package:timemanagerapp/entity/Course.dart'; import 'package:timemanagerapp/entity/CourseForm.dart'; import 'package:timemanagerapp/setting/Setting.dart'; import 'package:timemanagerapp/util/GetCourseByLogin.dart'; import '../util/dataUtil.dart'; class CourseController { static CourseController getInstance() { return new CourseController(); } GetCourseByLogin getCourseByLogin = GetCourseByLogin(); IdGenerator idGenerator = IdGenerator(); List courseList = []; //实时维护的courseList缓存 NetWorkController netWorkController = NetWorkController(); DateTime termstartdate = Setting.startdate; //Setting.getStartDate(); // 课表的时间范围 final List> raspiyane = [ ["8:00", "8:45"], //1 ["8:50", "9:35"], //2 ["10:05", "10:50"], //3 ["10:55", "11:40"], //4 ["13:30", "14:15"], //5 ["14:20", "15:05"], //6 ["15:35", "16:20"], //7 ["16:25", "17:10"], //8 ["18:30", "19:15"], ["19:20", "20:05"], ["20:10", "20:55"], ["21:10", "21:50"], ["22:05", "22:35"], ]; Future addCourseForm(CourseForm courseForm) async { List courseListToInsert = []; for (int week = courseForm.getStartWeek(); week <= courseForm.getEndWeek(); week++) { for(int day in courseForm.selectedDays){ // 计算具体的日期和时间 final startDate = termstartdate.add(Duration( days: (7 * (week - 1) + day! - 1), hours: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[0]), minutes: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[1]), )); final endDate = termstartdate.add(Duration( days: (7 * (week - 1) + day! - 1), hours: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[0]), minutes: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[1]), )); Course course = Course( id:await idGenerator.generateId(), name: courseForm.getCourse(), userId: Setting.user!.getId!, courseId: await idGenerator.generateId(), teacher: courseForm.getTeacher(), location: courseForm.getLocation(), start: startDate, end: endDate, credit: courseForm.getCredit(), remark: courseForm.getNote() ); courseListToInsert.add(course); } } await insertCourseList(courseListToInsert); } Future> getCourses() async { List> courseMaps = await CourseDao().getCourses(); List courses = []; // 用于存储转换后的Course对象列表 for (var courseMap in courseMaps) { // 使用Course类的构造函数从Map创建Course对象 Course course = Course( id: courseMap['id'], userId: courseMap['userId'], courseId: courseMap['courseId'], name: courseMap['name'], credit: courseMap['credit'], teacher: courseMap['teacher'], location: courseMap['location'], remark: courseMap['remark'], start: DateTime.parse(courseMap['start']), end: DateTime.parse(courseMap['end']), ); courses.add(course); } courseList = courses; // 将Course对象添加到列表中 return courseList; } Future insertCourse(Course course) async { return await CourseDao().insertCourse(course); } Future insertCourseList(List courseList) async { int result = 0; for(Course course in courseList){ result += await CourseDao().insertCourse(course); } return result; } Future autoImportCours(int stuid,String passwd,int year, int term) async { String jsonstr = await netWorkController.getUserCoursejson(stuid, passwd, year, term); List courseList = await getCourseByLogin.dealRawString(jsonstr); return await insertCourseList(courseList); } //test_autoImportCours Future test_autoImportCours(String jsonstr) async { List courseList = await GetCourseByLogin().dealRawString(jsonstr); return await insertCourseList(courseList); } Future deleteAllCourses() async { return await CourseDao().deleteAllCourses(); } Future deleteCourse(int id) async { return await CourseDao().deleteCourseById(id); } }