Example #1
0
        public SubjectsPageViewModel(IRegisteredSubjectService registeredSubjectService)
        {
            _registeredSubjectService = registeredSubjectService;
            _registeredSubjectService.RegisteredSubjectsChanged += _registeredSubjectService_RegisteredSubjectsChanged;

            AddAttendanceCommand    = new RelayCommand(AddAttendanceOnClick);
            EditAttendanceCommand   = new RelayCommand(EditAttendanceOnClick, p => SelectedAttendanceIndex > -1);
            DeleteAttendanceCommand = new RelayCommand(DeleteAttendanceOnClick, p => SelectedAttendanceIndex > -1);

            SelectedAttendanceIndex = -1;

            RegisteredSubjects = new ObservableCollection <RegisteredSubject>();

            var currentDispatcher = Dispatcher.CurrentDispatcher;

            Task.Factory.StartNew(async() =>
            {
                List <RegisteredSubject> registeredSubjects = await _registeredSubjectService.GetRegisteredSubjectsAsync();
                registeredSubjects = new List <RegisteredSubject>(registeredSubjects.OrderBy(s => s.Term.Name));

                currentDispatcher.Invoke(new Action(() =>
                {
                    RegisteredSubjects.AddRange(registeredSubjects);

                    IsLoading = false;
                }));
            });
        }
        public CurriculumPageViewModel(ISubjectService subjectService,
                                       ITermService termService,
                                       IRegisteredSubjectService registeredSubjectService)
        {
            _subjectService           = subjectService;
            _termService              = termService;
            _registeredSubjectService = registeredSubjectService;

            NewSubjectCommand        = new RelayCommand(NewSubjectOnClick);
            EditSubjectCommand       = new RelayCommand(EditSubjectOnClick, p => SelectedSubjectIndex > -1);
            DeleteSubjectCommand     = new RelayCommand(DeleteSubjectOnClick, p => SelectedSubjectIndex > -1);
            RegisterSubjectCommand   = new RelayCommand(RegisterSubjectOnClick, p => SelectedSubjectIndex > -1);
            UnregisterSubjectCommand = new RelayCommand(UnregisterSubjectOnClick, p => SelectedSubjectIndex > -1);

            SelectedSubjectIndex = -1;

            Subjects = new ObservableCollection <Subject>();

            var currentDispatcher = Dispatcher.CurrentDispatcher;

            Task.Factory.StartNew(async() =>
            {
                List <Subject> subjects = await _subjectService.GetSubjectsAsync();

                currentDispatcher.Invoke(new Action(() =>
                {
                    Subjects.AddRange(subjects);
                    IsLoading = false;
                }));
            });
        }