/// <summary> /// Op basis van de usercontrol worden bepaalde events van de usercontrol die doorgegeven, opgevuld met methodes. Dit is alleen als de /// parameter connected op waar staat. /// </summary> /// <param name="userControl">usercontrol die in de contentcontrol zal gezet worden</param> /// <param name="connected">Bepaalt of wat er met de events van de usercontrol zal gebeuren</param private void BasisContentControl(BaseUserControl userControl, Boolean connected = true) { if (connected && userControl != null) { BasisContentControl(userControl, false); } if (userControl != null) { switch (userControl.GetType().Name) { case "PortefeuillesWindowViewModel": if (connected) { PortefeuillesWindowViewModel.AddEvent += RefreshStatusBarProperties; PortefeuillesWindowViewModel.UpdateEvent += HandleSelectedPortefeuilleUpdate; PortefeuillesWindowViewModel.RemoveEvent += HandleSelectedPortefeuilleDeletion; PortefeuillesWindowViewModel.SelectedPortefeuilleEvent += ModifyAandelenContentControl; BasisContent = userControl; } else { PortefeuillesWindowViewModel.AddEvent -= RefreshStatusBarProperties; PortefeuillesWindowViewModel.UpdateEvent -= HandleSelectedPortefeuilleUpdate; PortefeuillesWindowViewModel.RemoveEvent -= HandleSelectedPortefeuilleDeletion; PortefeuillesWindowViewModel.SelectedPortefeuilleEvent -= ModifyAandelenContentControl; } break; case "InlogViewModel": if (connected) { InlogViewModel.InlogEvent += InlogEvent; BasisContent = userControl; if (idGebruikteEigenaar != 0) { repo.AddLog(new Log(idGebruikteEigenaar, LogOrigin.User, $"Gebruiker {repo.GetEigenaar(idGebruikteEigenaar).Naam}" + $" heeft de verbinding los gemaakt.")); } idGebruikteEigenaar = 0; RapporteringContentControl(RapportLogsContent, false); AandelenContent = null; RapportLogsContent = null; RefreshStatusBarProperties(); } else { InlogViewModel.InlogEvent -= InlogEvent; } break; default: break; } } }
/// <summary> /// viewmodel heeft de repo nodig om met de database te communiceren en de idGebruiker om te kunnen identificeren aan wie /// deze portefeuilles zijn. Maakt de verschillende commando's voor de crud operaties voor de portefeuilles. /// </summary> /// <param name="repo"></param> /// <param name="nieuweIDgebruiker"></param> public PortefeuillesWindowViewModel(AandelenRepo repo, int nieuweIDgebruiker) { this.repo = repo; this.idGebruiker = nieuweIDgebruiker; //wordt gebruikt om de naam van de Gebruiker te hebben en deze hierna te tonen. NaamEigenaar = repo.GetEigenaar(nieuweIDgebruiker).Naam; //Stelt lijst van alle portefeuilles van de gebruiker PortefeuilleCollectie = repo.GetPortefeuilles(nieuweIDgebruiker); AddCmd = new CmdHelper(AddPortefeuille, CanAddPortefeuille); RemoveCmd = new CmdHelper(RemovePortefeuille, CanDeletePortefeuille); UpdateCmd = new CmdHelper(UpdatePortefeuille, CanUpdatePortefeulle); }
/// <summary> /// taken van de constructor: /// 1. Haalt de repo/context en gebruikers id binnen /// 2. Haalt de lijst op van alle logs van de user met de specifieke ID /// 3. Stelt de CollectionView gelijkt met de log lijst /// 4. Maakt de commando's om de loglijst te kunnen sorteren /// 5. Legt de enumeratie logsoorten in een array /// 6. Commando aanmaken om file aan te kunnen maken voor de logs /// </summary> /// <param name="ID">id gebruiker</param> /// <param name="repo">repo/context is de datasource</param> public LogViewModel(int ID, AandelenRepo repo) { Repo = repo; IdGebruiker = ID; Titel = $"Log boek van {repo.GetEigenaar(ID).Naam}"; LogLijst = repo.LogLijst(ID); LogView = (CollectionView)CollectionViewSource.GetDefaultView(LogLijst.ToArray()); BtnHighDate = new CmdHelper(SorteerHoogsteDatum, LogNietLeeg); BtnLowDate = new CmdHelper(SorteerLaagsteDatum, LogNietLeeg); LogSoorten = Enum.GetValues(typeof(LogOrigin)).Cast <LogOrigin>(); CmdSaveFileMdHmtl = new CmdHelper(SaveMarkdownHtmlFiles, () => LogNietLeeg() && (SaveMd || SaveMd)); }
/// <summary> /// Herfrist het markdown rapport property van de eigenaar. /// </summary> private void RefreshPreviewMd() { MarkDownText = repo.GetEigenaar(idGebruiker).GetReturnMarkdownDescription(IncludeAandelen); }