Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <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;
        }
Beispiel #5
0
        /// <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;
        }
Beispiel #6
0
        /// <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);
        }