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()),
            });
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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();
                }
            }
        }
Esempio n. 4
0
        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()),
            });
        }
Esempio n. 6
0
        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)
            });
        }
Esempio n. 9
0
        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();
                }
            }
        }
Esempio n. 10
0
 public StudyEventsTimeTableKind Get(StudyEventsTimeTableKindCode timetable)
 {
     return(TimeTableHelper.GetStudyEventsTimeTableKindForCode(session, timetable));
 }
Esempio n. 11
0
        public async Task TestGetCurrentWeek()
        {
            var week = await TimeTableHelper.GetCurrentWeek();

            Assert.IsTrue(week >= 1);
        }