public TimetablePage() { InitializeComponent(); AppSettings settings = SettingsRepository.GetSettings(); lastTimeLeftVisible = TimeLeft.IsVisible; Timetable.VerticalOptions = LayoutOptions.FillAndExpand; Timetable.VisibleDatesChangedEvent += Timetable_VisibleDatesChangedEvent; string activeCultureCode = Cultures.SupportedCultures[0].TwoLetterISOLanguageName; if (Cultures.SupportedCultures.Any(c => c.TwoLetterISOLanguageName == CultureInfo.CurrentCulture.TwoLetterISOLanguageName)) { activeCultureCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName; } Timetable.Locale = activeCultureCode; switch (settings.TimetableViewMode) { case TimetableViewMode.Day: Timetable.ScheduleView = ScheduleView.DayView; break; case TimetableViewMode.Week: Timetable.ScheduleView = ScheduleView.WeekView; break; case TimetableViewMode.Month: Timetable.ScheduleView = ScheduleView.MonthView; break; } MessagingCenter.Subscribe <Application, SavedEntity>(this, MessageTypes.SelectedEntityChanged, (sender, newSelectedEntity) => { UpdateEvents(newSelectedEntity); }); MessagingCenter.Subscribe <Application, SavedEntity>(this, MessageTypes.TimetableUpdated, (sender, entity) => { SavedEntity selectedEntity = UniversityEntitiesRepository.GetSelected(); if (selectedEntity == null || selectedEntity != entity) { return; } UpdateEvents(selectedEntity); }); MessagingCenter.Subscribe <Application, SavedEntity>(this, MessageTypes.LessonSettingsChanged, (sender, entity) => { SavedEntity selectedEntity = UniversityEntitiesRepository.GetSelected(); if (selectedEntity == null || selectedEntity != entity) { return; } UpdateEvents(selectedEntity); }); }
public static async Task <IReadOnlyList <Entity> > CheckCistTimetableUpdateRightsAsync(params Entity[] entitiesToUpdate) { List <Entity> allowedEntities = new(); entitiesToUpdate ??= Array.Empty <Entity>(); List <SavedEntity> savedEntities = await UniversityEntitiesRepository.GetSavedAsync(); foreach (var entity in entitiesToUpdate) { SavedEntity?savedEntity = savedEntities.SingleOrDefault(e => e == entity); if (savedEntity == null) { // Cannot update timetable for entity that is not saved continue; } DateTime nowInUkraine = TimeZoneInfo.ConvertTime(DateTime.Now, Config.UkraineTimezone); if (savedEntity.LastUpdated == null || nowInUkraine.TimeOfDay >= Config.CistDailyTimetableUpdateStartTime && nowInUkraine.TimeOfDay < Config.CistDailyTimetableUpdateEndTime) { // Update allowed if never updated before // Unlimited updates between 5 and 6 AM allowedEntities.Add(savedEntity); continue; } // Update is allowed once per day (day begins at 6 AM) DateTime lastUpdatedInUkraine = TimeZoneInfo.ConvertTime(savedEntity.LastUpdated.Value, Config.UkraineTimezone); TimeSpan timeBeforeAnotherUpdate; if (lastUpdatedInUkraine.TimeOfDay < Config.CistDailyTimetableUpdateEndTime) { timeBeforeAnotherUpdate = Config.CistDailyTimetableUpdateEndTime - lastUpdatedInUkraine.TimeOfDay; } else { timeBeforeAnotherUpdate = TimeSpan.FromDays(1) - lastUpdatedInUkraine.TimeOfDay + Config.CistDailyTimetableUpdateEndTime; } if (nowInUkraine - lastUpdatedInUkraine > timeBeforeAnotherUpdate) { allowedEntities.Add(savedEntity); continue; } #if DEBUG allowedEntities.Add(savedEntity); #endif } return(allowedEntities); }
private void UpdateEventsWithUI() { Timetable.IsEnabled = false; ProgressLayout.IsVisible = true; Task.Factory.StartNew(() => { UpdateEvents(UniversityEntitiesRepository.GetSelected()); Device.BeginInvokeOnMainThread(() => { ProgressLayout.IsVisible = false; Timetable.IsEnabled = true; }); }); }
public async Task SettingsClicked() { List <string> actionList = new List <string> { LN.UpdateTimetable, LN.SetUpLessonDisplay, LN.Delete }; if (!IsSelected) { actionList.Insert(0, LN.Select); } if (Device.RuntimePlatform == Device.Android && CrossDeviceInfo.Current.VersionNumber.Major > 0 && CrossDeviceInfo.Current.VersionNumber.Major < 5) { // SfCheckBox doesn`t support Android 4 actionList.Remove(LN.SetUpLessonDisplay); } string action = await App.Current.MainPage.DisplayActionSheet(LN.ChooseAction, LN.Cancel, null, actionList.ToArray()); if (action == LN.Select) { UniversityEntitiesRepository.UpdateSelected(SavedEntity); await _manageEntitiesViewModel.Navigation.PopToRootAsync(); } else if (action == LN.UpdateTimetable) { await _manageEntitiesViewModel.UpdateTimetable(SavedEntity); } else if (action == LN.SetUpLessonDisplay) { await _manageEntitiesViewModel.Navigation.PushAsync(new ManageLessonsPage(SavedEntity)); } else if (action == LN.Delete) { _manageEntitiesViewModel.Entities.Remove(this); UniversityEntitiesRepository.UpdateSaved(_manageEntitiesViewModel.Entities.Select(vm => vm.SavedEntity).ToList()); } }
protected override List <Group> GetAllEntities() { return(UniversityEntitiesRepository.GetAllGroups().ToList()); }
protected override List <Room> GetAllEntitiesFromCist() { return(UniversityEntitiesRepository.GetAllRooms().ToList()); }
protected override List <Teacher> GetAllEntitiesFromCist() { return(UniversityEntitiesRepository.GetAllTeachers().ToList()); }