/// <summary> /// Akteingeselschaft mit aktuellen Kursinformationen /// </summary> /// <param name="symbol">Liste von Aktiensymbolen die geladen werden sollen</param> /// <returns>Aktiengesellschaft mit aktuellen Kursinformationen.</returns> public async Task <Aktie> GetAktieBySymbol(string symbol) { if (string.IsNullOrEmpty(symbol)) { throw new ArgumentException("Es wurde kein Aktiensymbol angegeben!", "symbol"); } Uri quoteUri = GenerateAktiengesellschaftRequestUri(new string[] { symbol }); // CSV downloaden var client = new WebClient(); string aktienCsv = await client.DownloadStringTaskAsync(quoteUri); // CSV parsen var result = await Task.Run <List <Aktie> >(() => ParseAktienCsv(aktienCsv)); if (result != null && result.Count == 1) { Aktie aktie = result[0]; aktie.Symbol = symbol; return(aktie); } // Ergebnis zurückliefern return(null); }
/// <summary> /// Initialisierung der Werte im ViewModel /// </summary> /// <param name="aktie">neue Werte für das ViewModels</param> public void LoadValues(Aktie aktie) { Symbol = aktie.Symbol; Name = aktie.Name; ÄnderungNominal = aktie.ÄnderungNominal; ÄnderungProzentual = aktie.ÄnderungProzentual; Volumen = aktie.Volumen; Wert = aktie.Wert; Jahreshoch = aktie.Jahreshoch; Jahrestief = aktie.Jahrestief; Tageshoch = aktie.Tageshoch; Tagestief = aktie.Tagestief; }
public static bool IsValid(this Aktie aktienGesellschaft) { bool isInvalid = double.IsNaN(aktienGesellschaft.Startwert) && double.IsNaN(aktienGesellschaft.Endwert) && double.IsNaN(aktienGesellschaft.ÄnderungNominal) && double.IsNaN(aktienGesellschaft.ÄnderungProzentual) && double.IsNaN(aktienGesellschaft.Tagestief) && double.IsNaN(aktienGesellschaft.Tageshoch) && double.IsNaN(aktienGesellschaft.Jahrestief) && double.IsNaN(aktienGesellschaft.Jahreshoch) && double.IsNaN(aktienGesellschaft.Volumen); return(!isInvalid); }
public AktieViewModel() { myCurrentHystory = new HystoryViewModel(); myCurrentHystory.AktuellerWert = 0; myCurrentHystory.Datum = DateTime.Now.Date.ToString(); aktie = new Aktie(); historyList = new ObservableCollection <HystoryViewModel>() { myCurrentHystory }; aktie.abkuerzung = "Unbekannt"; aktie.firmenname = "Unbekannt"; aktie.kaufKurs = 500; aktie.aktuellerKurs = 500; aktie.anzahlGekauft = 12; }
/// <summary> /// Lädt Informationen einer Aktie anhand ihres Symbols aus dem Model /// </summary> /// <param name="symbol">Symbol dessen Informationen geladen werden sollen</param> public async void GetAktieDetailsBySymbolAsync(string symbol) { IsBusy = true; Aktie aktie = await _aktienStorage .GetAktietBySymbol(symbol); if (aktie != null) { //Eigenschaften des ViewModels initialisieren LoadValues(aktie); //Speichern des Aktiensymbols aktivieren UpdateCanAktieBeSaved(true); } else { //Speihern des Aktiensymbols deaktivieren UpdateCanAktieBeSaved(false); } IsBusy = false; }
/// <summary> /// Wertet Antwort des Yahoo Webdienstes /// </summary> /// <param name="csv">auszwertende CSV-Datei als string</param> /// <returns>Liste von Aktiengesellschaften</returns> private List <Aktie> ParseAktienCsv(string csv) { // Aktienkursinformationen in Liste speichern var aktienList = new List <Aktie>(); // Geparse Aktieninfos werden in Array zwischengespeichert var werte = new double[10]; using (var valueStream = new StringReader(csv)) { while (valueStream.Peek() > -1) { var aktie = new Aktie(); // Zeile aufteilen string[] csvWerte = valueStream.ReadLine().Split(','); if (string.IsNullOrWhiteSpace(csvWerte[0])) { continue; } for (int i = 0; i < csvWerte.Length; i++) { // Wert normalisieren (" und % entfernen) string normalisierterText = csvWerte[i].Replace("\"", "") .Replace("%", ""); if (i == 0) { // 1. Wert ist der Name der Aktie aktie.Name = normalisierterText; } else { // Alle weiteren Werte sind vom Typ double // Wert parsen nach englischen Format parsen if (normalisierterText == "N/A") { // Es steht kein Wert zur Verfügung werte[i - 1] = double.NaN; } else { double value = double.Parse(normalisierterText, NumberStyles.Currency, _parsingLanguage); werte[i - 1] = value; } } } // Wertzuweisung in Abstimmung mit Symbolkombination aktie.Wert = werte[0]; aktie.Endwert = werte[1]; aktie.Startwert = werte[2]; aktie.ÄnderungNominal = werte[3]; aktie.ÄnderungProzentual = werte[4]; aktie.Tagestief = werte[5]; aktie.Tageshoch = werte[6]; aktie.Jahrestief = werte[7]; aktie.Jahreshoch = werte[8]; aktie.Volumen = werte[9]; // Geparste Aktieninfos dem Ergebnis hinzufügen if (aktie.IsValid()) { aktienList.Add(aktie); } } } return(aktienList); }