public static StudentGroupEventsSemesterViewModel Build(StudentGroup studentGroup, PublicDivision publicDivision, int?autumn) { var autumnSemesterStartDate = new DateTime(studentGroup.CurrentStudyYear.Number, 8, 1); var semesterStartDate = (autumn == 1 || autumn == null && NowIsAutumnSemester()) ? autumnSemesterStartDate : autumnSemesterStartDate.AddMonths(6); var semesterEndDate = semesterStartDate.AddMonths(6); var days = StudyEventsViewModelHelper.GetStudentGroupAggregatedEventsDays(studentGroup, null, semesterStartDate, semesterEndDate).ToList(); return(new StudentGroupEventsSemesterViewModel { Autumn = autumn, PublicDivisionAlias = publicDivision.Alias, StudentGroupId = studentGroup.Id, StudentGroupDisplayName = GetStudentGroupDisplayName(studentGroup), TimeTableDisplayName = TimeTableHelper.GetStudentGroupTimeTableDisplayNameForCodeByLanguage(StudyEventsTimeTableKindCode.Primary, CultureHelper.CurrentLanguage), Days = days, Breadcrumb = GetBreadcrumb(publicDivision, studentGroup.StudyProgram), SemesterStartDate = semesterStartDate, SemesterEndDate = semesterEndDate, SemesterDurationDisplayText = $"{semesterStartDate:d MMMM yyyy} - {semesterEndDate:d MMMM yyyy}", IsSpringSemester = semesterStartDate.Month == 2, HasEvents = days.Any(seadivm => seadivm.DayStudyEvents.Any()), }); }
private async void ImportItem_Click(object sender, RoutedEventArgs e) { try { var item = (MenuFlyoutItem)e.OriginalSource; var semester = Semesters.Find(o => o.Name == item.Text); var tableCourses = await app.Assist.GetTableCourses(semester); Models.Add(await TimeTableHelper.GenerateTimeTableModel(tableCourses)); app.TimeTablePage_Models = Models.ToList(); app.TimeTables.Add(tableCourses); app.HomePage_Models = null; SaveTimeTables(); } catch (Exception err) { var msgDialog = new CommonDialog(err.Message) { Title = "错误", }; await msgDialog.ShowAsyncQueue(); } }
private async void FromOfflineShareCode_Click(object sender, RoutedEventArgs e) { var dialog = new InputDialog() { Title = "请输入离线分享码", Placeholder = "离线分享码" }; if ((await dialog.ShowAsyncQueue()) == ContentDialogResult.Primary) { try { var tableCourses = JsonConvert.DeserializeObject <TableCourses>(dialog.Result); Models.Add(await TimeTableHelper.GenerateTimeTableModel(tableCourses)); app.TimeTables.Add(tableCourses); SaveTimeTables(); } catch (Exception err) { var msgDialog = new CommonDialog("分享码格式错误:\n" + err.Message) { Title = "错误", }; await msgDialog.ShowAsyncQueue(); } } }
public async Task TestGenerateTimeTableModel() { await LoginAssist(); var table = await assist.GetTableCourses(assist.GetTableSemesters().Result[0]); var model = await TimeTableHelper.GenerateTimeTableModel(table); Assert.IsTrue(model.Weeks.Count > 15); Assert.IsTrue(model.Weeks[0].Items.Count > 0); Assert.IsTrue(model.Weeks[0].Items[0].Name.Length > 0); }
internal static StudentGroupEventsWeekModel Build(StudentGroup studentGroup, DateTime from, DateTime to) { var days = StudyEventsViewModelHelper.GetStudyEventsDaysViewModelsForDateRange(studentGroup, null, from, to).ToList(); return(new StudentGroupEventsWeekModel { StudentGroupId = studentGroup.Id, StudentGroupDisplayName = studentGroup.Name, TimeTableDisplayName = TimeTableHelper.GetStudentGroupTimeTableDisplayNameForCodeByLanguage(StudyEventsTimeTableKindCode.Primary, CultureHelper.CurrentLanguage), Days = days, DurationDisplayText = $"{from:d MMMM yyyy} - {to:d MMMM yyyy}", HasEvents = days.Any(seadivm => seadivm.DayStudyEvents.Any()), }); }
private async void LoadTimeTables() { try { TimeTableProgressBar.Visibility = Visibility.Visible; if (app.TimeTables == null) { Debug.WriteLine("Started: Load Timetable"); Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; Windows.Storage.StorageFile file = await storageFolder.GetFileAsync("timetable.txt"); string text = await Windows.Storage.FileIO.ReadTextAsync(file); app.TimeTables = JsonConvert.DeserializeObject <List <TableCourses> >(text); Debug.WriteLine("Finished: Load Timetable"); } if (app.HomePage_Models == null) { foreach (var table in app.TimeTables) { TimetableModels.Add(await TimeTableHelper.GenerateOneDayTimeTableModel(table)); } app.HomePage_Models = TimetableModels.ToList(); } else { foreach (var item in app.HomePage_Models) { TimetableModels.Add(item); } } } catch (FileNotFoundException) { app.TimeTables = new List <TableCourses>(); SaveTimeTables(); } finally { TimeTableProgressBar.Visibility = Visibility.Collapsed; } }
public static StudentGroupEventsAttestationViewModel Build(StudentGroup studentGroup, PublicDivision publicDivision, StudyEventsTimeTableKindCode studyEventsTimeTableKindCode) { var language = CultureHelper.CurrentLanguage; var studyEventsTimeTableKind = TimeTableHelper.GetStudyEventsTimeTableKindForCode( studentGroup.Session, studyEventsTimeTableKindCode); return(new StudentGroupEventsAttestationViewModel { StudentGroupId = studentGroup.Id, StudentGroupDisplayName = GetStudentGroupDisplayName(studentGroup), TimeTableDisplayName = TimeTableHelper.GetStudentGroupTimeTableDisplayNameForCodeByLanguage(studyEventsTimeTableKindCode, language), StudyEventsMonths = StudyEventsViewModelHelper.GetStudyEventsMonthsViewModelsForTerm(studentGroup, studyEventsTimeTableKind, studyEventsTimeTableKindCode), Breadcrumb = GetBreadcrumb(publicDivision, studentGroup.StudyProgram), StudyEventsTimeTableKindCode = studyEventsTimeTableKindCode }); }
public static StudentGroupEventsPrimaryViewModel Build(StudentGroup studentGroup, PublicDivision publicDivision, DateTime?weekMonday) { var defaultWeekStart = DateTimeHelper.GetWeekStart(DateTime.Today); var weekStart = weekMonday ?? defaultWeekStart; var weekEnd = weekStart.AddDays(7); var language = CultureHelper.CurrentLanguage; return(new StudentGroupEventsPrimaryViewModel { StudentGroupId = studentGroup.Id, StudentGroupDisplayName = GetStudentGroupDisplayName(studentGroup), TimeTableDisplayName = TimeTableHelper.GetStudentGroupTimeTableDisplayNameForCodeByLanguage(StudyEventsTimeTableKindCode.Primary, language), WeekDisplayText = DateTimeHelper.GetWeekDisplayText(language, weekStart, weekEnd), PreviousWeekMonday = DateTimeHelper.GetDateStringForWeb(weekStart.AddDays(-7)), WeekMonday = DateTimeHelper.GetDateStringForWeb(weekStart), NextWeekMonday = DateTimeHelper.GetDateStringForWeb(weekEnd), IsCurrentWeekReferenceAvailable = (defaultWeekStart != weekStart), Days = StudyEventsViewModelHelper.GetStudyEventsDaysViewModelsForDateRange(studentGroup, null, weekStart, weekEnd), Breadcrumb = GetBreadcrumb(publicDivision, studentGroup.StudyProgram) }); }
private async void FromShareCode_Click(object sender, RoutedEventArgs e) { var dialog = new InputDialog() { Title = "请输入在线分享码", Placeholder = "在线分享码" }; if ((await dialog.ShowAsyncQueue()) == ContentDialogResult.Primary) { try { var code = dialog.Result; if (code.Contains(":")) { code = code.Substring(code.IndexOf(":") + 1).Trim(); } var content = AVObject.CreateWithoutData("TimeTable", code); await content.FetchAsync(); var tableCourses = JsonConvert.DeserializeObject <TableCourses>(Convert.ToString(content["Content"])); Models.Add(await TimeTableHelper.GenerateTimeTableModel(tableCourses)); app.TimeTables.Add(tableCourses); SaveTimeTables(); } catch (Exception err) { var msgDialog = new CommonDialog("分享码格式错误:\n" + err.Message) { Title = "错误", }; await msgDialog.ShowAsyncQueue(); } } }
public StudyEventsTimeTableKind Get(StudyEventsTimeTableKindCode timetable) { return(TimeTableHelper.GetStudyEventsTimeTableKindForCode(session, timetable)); }
public async Task TestGetCurrentWeek() { var week = await TimeTableHelper.GetCurrentWeek(); Assert.IsTrue(week >= 1); }