public MainViewModel()
        {
            Application.Current.MainWindow.Closing += MainWindow_Closing;
            Application.Current.MainWindow.Closed += MainWindow_Closed;

            try
            {
                _ctx = new UnitOfWork(new IsisContext());
                Workspaces = new ObservableCollection<WorkspaceViewModel>
                {
                    new BerekenModuleViewModel(_ctx),
                    new PrestatieBeheerViewModel(_ctx),
                    new KlantenBeheerViewModel(_ctx),
                    new PersoneelBeheerViewModel(_ctx),
                    new ParameterBeheerViewModel(_ctx)
                };
                SelectedWorkspace = Workspaces.First();
            }
            catch (Exception ex)
            {
                MessageBoxService messageService = new MessageBoxService();
                messageService.ShowMessageBox("ERROR");      //Hack: The first Messagebox closes automatically
                //TODO: Add possiblity to restore database from backup!
                messageService.ShowErrorBox("Er heeft zich een probleem voorgedaan bij het ophalen van de data \n\nError: " + ex.Message);
                logger.Error("Loading Database (startup)", ex);
                Application.Current.Shutdown(-1);
            }
        }
        public DatumBeheerViewModel(UnitOfWork ctx)
        {
            _ctx = ctx;
            Init();

            AddCommandEvent = new RelayCommand(Add);
            DeleteCommandEvent = new RelayCommand(Delete);
        }
 public TijdBerekenModuleViewModel(UnitOfWork ctx)
     : base(ctx)
 {
     Init();
     CurrentParameters = new Parameters();
     CurrentStrings = new Strings();
     LoadData();
 }
        protected KlantTypeViewModel(UnitOfWork ctx)
        {
            AddType = new KlantType();
            Ctx = ctx;
            ViewSource = new CollectionViewSource();
            GetData();

            #region Buttons
            SaveCommandEvent = new RelayCommand(Add);
            DeleteCommandEvent = new RelayCommand(Delete);
            #endregion
        }
        public PrestatieBeheerViewModel(UnitOfWork ctx)
            : base(ctx)
        {
            Header = "Prestatiebeheer";

            ViewSource = new CollectionViewSource { Source = Ctx.Prestaties.GetAll() };
            ViewSource.View.Filter = Filter;
            Klanten = Ctx.Klanten.GetAll();

            PrintCommandEvent = new RelayCommand(Print);
            BoolIedereen = true;
            BoolDag = true;
        }
        public BerekenModuleViewModel(UnitOfWork ctx)
            : base(ctx)
        {
            Header = "Berekenmodule";
            ButtonBerekenContent = "Berekenen";
            ButtonToevoegenContent = "Toevoegen";
            ButtonChangeContent = "Laatste prestatie aanpassen";

            DatumViewModel = new DatumBeheerViewModel(ctx);
            CurrentView = new TijdBerekenModuleViewModel(ctx);

            BerekenCommandEvent = new RelayCommand(Bereken);
            SaveCommandEvent = new RelayCommand(Save);
            RefreshCommandEvent = new RelayCommand(Edit);
            PrintCommandEvent = new RelayCommand(Print);
        }
        public KlantenBeheerViewModel(UnitOfWork ctx)
            : base(ctx)
        {
            Header = "Klantenbeheer";
            GetData();
            ButtonToevoegenContent = "Toevoegen";

            #region Commands / Buttons
            NextButton = new RelayCommand(NextKlant);
            PreviousButton = new RelayCommand(PreviousKlant);
            RefreshButton = new RelayCommand(Refresh);
            DeleteButton = new RelayCommand(Delete);
            AddButton = new RelayCommand(Add);
            SaveButton = new RelayCommand(
                () => Save(),
                () => IsValid
            );
            NextErrorButton = new RelayCommand(SetErrorAsSelected);
            #endregion
        }
        public PersoneelBeheerViewModel(UnitOfWork ctx)
            : base(ctx)
        {
            Header = "Personeelbeheer";
            ViewSource = new CollectionViewSource();
            GetData();
            ButtonToevoegenContent = "Toevoegen";

            #region Commands / Buttons
            NextButton = new RelayCommand(NextStrijker);
            PreviousButton = new RelayCommand(PreviousKStrijker);
            RefreshButton = new RelayCommand(Refresh);
            DeleteButton = new RelayCommand(Delete);
            AddButton = new RelayCommand(Add);
            SaveButton = new RelayCommand(
                () => Save(),
                () => IsValid
            );
            NextErrorButton = new RelayCommand(SetErrorAsSelected);
            #endregion
        }
        public ParameterBeheerViewModel(UnitOfWork ctx)
            : base(ctx)
        {
            Header = "Parameterbeheer";
            ParameterData = new Parameters();
            StringsData = new Strings();
            BegroetingPrintData = new BegroetingPrint();

            WinkelData = new WinkelTypeViewModel(Ctx);
            SchoolData = new SchoolTypeViewModel(Ctx);
            BedrijfData = new BedrijfTypeViewModel(Ctx);
            OphalingData = new OphalingBeheerViewModel(Ctx);

            #region Buttons
            SaveParametersCommand = new RelayCommand(
                () => SaveParameters(),
                () => true
            );

            RefreshParametersCommand = new RelayCommand(
                () => LoadParameters(),
                () => true
            );

            SaveStringsCommand = new RelayCommand(
                () => SaveStrings(),
                () => true
            );

            RefreshStringsCommand = new RelayCommand(
                () => LoadStrings(),
                () => true
            );

            SaveBegroetingCommand = new RelayCommand(SaveBegroetingPrint);
            RefreshBegroetingCommand = new RelayCommand(LoadBegroetingPrint);
            BackupDatabaseCommand = new RelayCommand(BackupDatabase);
            RestoreDatabaseCommand = new RelayCommand(RestoreDatabase);
            #endregion
        }
 public BedrijfTypeViewModel(UnitOfWork ctx) : base(ctx)
 {
     AddType.Type = "Bedrijf";
 }
 protected PrestatieBerekenModuleViewModel(UnitOfWork ctx)
     : base(ctx)
 {
     //Data is just loaded so first have to recalculate before we can save!!
     IsValid = false;
 }
 public StukBerekenModuleViewModel(UnitOfWork ctx)
     : base(ctx)
 {
     Init();
 }
 protected WorkspaceViewModel(UnitOfWork ctx)
 {
     Ctx = ctx;
 }
 public SchoolTypeViewModel(UnitOfWork ctx) : base(ctx)
 {
     AddType.Type = "School";
 }
 public WinkelTypeViewModel(UnitOfWork ctx) : base(ctx)
 {
     AddType.Type = "Winkel";
 }
 public OphalingBeheerViewModel(UnitOfWork ctx) : base(ctx)
 {
     AddType.Type = "Ophaling";
 }