private void AddSpecialTourClick(object sender, RoutedEventArgs e)
        {
            Dispatcher.Invoke(new Action(() =>
                                    {
                                        var r = new Random((int)DateTime.Now.Ticks);
                                        var fahrzeug = (Fahrzeug)DataContext;
                                        if (fahrzeug == null) return;

                                        if (!fahrzeug.Fahrten.Any(p => p.Description.StartsWith("Hof")))
                                            fahrzeug.Fahrten.Add(new Fahrt { Description = "Hof-Scheeßel-Hof", KM = 20 });

                                        int fehlendeFahrten = fahrzeug.TourenTotal - fahrzeug.TourCount;
                                        for (int i = 1; i <= fehlendeFahrten; i++)
                                        {
                                            float preis = 54.0F + (float)Math.Round(r.NextDouble() * 2.0F - 1.0F, 2);

                                            if (i == fehlendeFahrten) preis = fahrzeug.Preisdifferenz;

                                            preis = (float)Math.Round(preis / 10.0F, 2) * 10.0F;
                                            var f = new Fahrt { Description = "Scheeßel-Seedorf", APES = 48.0F - preis, Preis = preis };
                                            fahrzeug.Fahrten.Add(f);

                                        }
                                    }));
        }
Example #2
0
        private void LoadAsync(string txiFile)
        {
            var doc = XDocument.Load(txiFile);

            var shiftCount = doc.Element("Schichten").Descendants().Count();
            int verarb = 0;

            Schichten = new ObservableCollection<Schicht>();

            // Parallel.ForEach(doc.Element("Schichten").Elements("Schicht"), ig =>
            foreach (var ig in doc.Element("Schichten").Elements("Schicht"))
            {
                var i = ig;
                var schicht = new Schicht()
                                  {
                                      Index = i.AttValue<int>("Index"),
                                      AbrechnungFertig = i.AttValue<bool>("AbrechnungFertig"),
                                      Abgerechnet = i.AttValue<bool>("IstAbgerechnet"),
                                      Anfang = i.AttValue<DateTime>("Anfang"),
                                      Ende = i.AttValue<DateTime>("Ende"),
                                      GeldVorher = i.AttValue<float>("GeldVorher"),
                                      GeldNachher = i.AttValue<float>("GeldNachher"),
                                      GeliehenesWechselgeld = i.AttValue<float>("GeliehenesWechselgeld")
                                  };

                foreach (var j in i.Elements("Sonderausgabe"))
                {
                    schicht.Sonderausgaben.Add(j.AttValue<float>("Wert"));
                }

                foreach (var j in i.Elements("Privatausgabe"))
                {
                    var priv = new Privatausgabe { Index = j.AttValue<int>("Index"), Bemerkung = j.AttValue<string>("Bemerkung") ?? "n/a", Wert = j.AttValue<double>("Wert") };
                    schicht.Privatausgaben.Add(priv);
                }

                foreach (var n in i.Elements("Fahrzeug"))
                {
                    var fzg = new Fahrzeug
                                  {
                                      Index = n.AttValue<int>("Index"),
                                      Nummer = n.AttValue<int>("Nummer"),
                                      TotalAnfang = n.AttValue<Single>("TotalAnfang"),
                                      TotalEnde = n.AttValue<Single>("TotalEnde"),
                                      BesetztAnfang = n.AttValue<Single>("BesetztAnfang"),
                                      BesetztEnde = n.AttValue<Single>("BesetztEnde"),
                                      TourenAnfang = n.AttValue<int>("TourenAnfang"),
                                      TourenEnde = n.AttValue<int>("TourenEnde"),
                                      PreisAnfang = n.AttValue<Single>("EinnahmenAnfang"),
                                      PreisEnde = n.AttValue<Single>("EinnahmenEnde"),
                                  };

                    schicht.Fahrzeuge.Add(fzg);

                    foreach (var p in n.Elements("Fahrt"))
                    {
                        var _kmV = p.Attribute("km").Value;
                        var _km = (int?)p.AttValue<int>("km");
                        var _apesV = p.Attribute("APES").Value;
                        var _apes = (float?)p.AttValue<Single>("APES");
                        var _priceV = p.Attribute("Preis").Value;
                        var _price = (float?)p.AttValue<Single>("Preis");
                        var ft = new Fahrt
                                     {
                                         Index = p.AttValue<int>("Index"),
                                         Description = p.AttValue<string>("Bemerkung"),
                                         KM = (_kmV == "NULL") ? null : _km,
                                         APES = (_apesV == "NULL") ? null : _apes,
                                         Preis = (_priceV == "NULL") ? null : _price,
                                         Rechnungsfahrt = p.AttValue<bool>("IstRechnungsfahrt")
                                     };
                        this.OnProgress(ref verarb, shiftCount);
                        fzg.Fahrten.Add(ft);
                    }
                    this.OnProgress(ref verarb, shiftCount);
                }

                UIDispatcher.Invoke(new Action(() => this.Schichten.Add(schicht)));

                this.OnProgress(ref verarb, shiftCount);
            }
            int uoSIdx = 1;
            foreach (var item in Schichten.OrderBy(p => p.Anfang))
            {
                if (item.Index == 0)
                {
                    while (Schichten.Any(p => p.Index != 0 && p.Index == uoSIdx)) uoSIdx++;
                    item.Index = uoSIdx;
                    item.Parent = this;
                }
                item.ReindexVehicles();
            }
        }