コード例 #1
0
        public FormOptionen(AnmeldungAuswertung Auswertung)
        {
            InitializeComponent();

            _Auswertung = Auswertung;
            tbJahr.Text = Auswertung.Jahr.ToString();

            // Sollstunden für jedes Jahr überprüfen
            for (byte i = 1; i <= 12; i++)
            {
                if (_Auswertung.ListeSollstundenJahr.Daten.FirstOrDefault(f => f.Monat == i) == null)
                {
                    var neuSoll = new tabSollStunden()
                    {
                        Id    = Guid.NewGuid(),
                        Jahr  = Auswertung.Jahr,
                        Monat = i,
                    };
                    _Auswertung.Db.tabSollStundenSet.Add(neuSoll);
                    _Auswertung.ListeSollstundenJahr.Add(neuSoll);
                }
                ;
            }

            // Kontrolle, ob alle Bediener die Auswertung für Monat 0 besitzen, da hier die Vorjahresdaten eingetragen werden.
            var idisBediener        = Auswertung.ListeBediener.Daten.Select(s => s.Id).ToArray();
            var auswertungenVorjahr = Auswertung.Db.tabArbeitszeitAuswertungSet.Where(w => (idisBediener.Contains(w.fBediener)) && (w.Jahr == Auswertung.Jahr) && (w.Monat == 0)).ToList();

            foreach (var bediener in _Auswertung.ListeBediener.Daten)
            {
                var auswVorjahr = auswertungenVorjahr.FirstOrDefault(f => f.fBediener == bediener.Id);
                if (auswVorjahr == null)
                {
                    auswVorjahr = new tabArbeitszeitAuswertung()
                    {
                        Id           = Guid.NewGuid(),
                        Jahr         = Auswertung.Jahr,
                        Monat        = 0,
                        Ueberstunden = "00:00",
                        Urlaub       = 0,

                        eBediener = bediener,
                        Status    = EnumStatusArbeitszeitAuswertung.Erledigt,
                    };
                    Auswertung.Db.tabArbeitszeitAuswertungSet.Add(auswVorjahr);
                }
                bediener.EArbeitszeitHelper = auswVorjahr;
            }

            _ListeTerminals = new JgEntityList <tabArbeitszeitTerminal>(_Auswertung.Db)
            {
                ViewSource = (CollectionViewSource)FindResource("vsTerminals"),
                Tabellen   = new DataGrid[] { gridTerminals },
                Daten      = _Auswertung.Db.tabArbeitszeitTerminalSet.ToList()
            };
        }
コード例 #2
0
        private tabArbeitszeitAuswertung ArbeitszeitAuswertungErstellen(tabBediener Bediener, short Jahr, byte Monat, TimeSpan SollStundenMonat)
        {
            var az = new tabArbeitszeitAuswertung()
            {
                Id        = Guid.NewGuid(),
                fBediener = Bediener.Id,
                Jahr      = Jahr,
                Monat     = Monat,
                Urlaub    = 0,
                AuszahlungUeberstunden = "00:00",
                SollStunden            = JgZeit.ZeitInString(SollStundenMonat),
                Status = EnumStatusArbeitszeitAuswertung.InArbeit,
            };

            _Db.tabArbeitszeitAuswertungSet.Add(az);
            _Db.SaveChanges();

            return(az);
        }
コード例 #3
0
        public void ListeFuerJedenTagErstellen(tabArbeitszeitAuswertung AuswertungBediener,
                                               IEnumerable <tabFeiertage> ListeFeiertageMonat,
                                               IEnumerable <tabPausenzeit> ListePausen, bool WerteInDb)
        {
            if (AuswertungBediener == null)
            {
                return;
            }

            ListeTage.Clear();

            // Werte für Tage berechnen
            var auswTage = _Db.tabArbeitszeitTagSet.Where(w => w.fArbeitszeitAuswertung == AuswertungBediener.Id).ToList();

            var anzTageMonat = DateTime.DaysInMonth(AuswertungBediener.Jahr, AuswertungBediener.Monat);

            var monatErster  = JgZeit.ErsterImMonat(AuswertungBediener.Jahr, AuswertungBediener.Monat);
            var monatLetzter = JgZeit.LetzerImMonat(AuswertungBediener.Jahr, AuswertungBediener.Monat);

            var alleZeiten = _Db.tabArbeitszeitSet.Where(w => (w.fBediener == AuswertungBediener.fBediener) && (!w.DatenAbgleich.Geloescht) &&
                                                         (
                                                             ((w.Anmeldung != null) && (w.Anmeldung >= monatErster) && (w.Anmeldung <= monatLetzter))
                                                             ||
                                                             ((w.Anmeldung == null) && (w.Abmeldung != null) && (w.Abmeldung >= monatErster) && (w.Abmeldung <= monatLetzter))
                                                         )
                                                         ).ToList();

            for (byte tag = 1; tag <= anzTageMonat; tag++)
            {
                var auswTag = auswTage.FirstOrDefault(f => f.Tag == tag);
                if (auswTag == null)
                {
                    auswTag = new tabArbeitszeitTag()
                    {
                        Id = Guid.NewGuid(),
                        fArbeitszeitAuswertung = AuswertungBediener.Id,
                        Tag = tag
                    };
                    _Db.tabArbeitszeitTagSet.Add(auswTag);
                }

                var aktDatum = new DateTime(AuswertungBediener.Jahr, AuswertungBediener.Monat, tag);
                auswTag.Wochentag = aktDatum.ToString("ddd");

                auswTag.IstSonnabend = aktDatum.DayOfWeek == DayOfWeek.Saturday;
                auswTag.IstSonntag   = aktDatum.DayOfWeek == DayOfWeek.Sunday;
                auswTag.IstFeiertag  = ListeFeiertageMonat.FirstOrDefault(f => f.Datum == aktDatum) != null;

                auswTag.ZeitBerechnet         = TimeSpan.Zero;
                auswTag.NachtschichtBerechnet = TimeSpan.Zero;

                var zeiten = alleZeiten.Where(w => (w.Anmeldung?.Day == tag) || ((w.Abmeldung == null) && (w.Abmeldung?.Day == tag))).ToList();

                if (zeiten.Count > 0)
                {
                    foreach (var zeit in zeiten)
                    {
                        // Kontrolle ob Zeiten an Tagesauswertung hängt
                        if (zeit.eArbeitszeitAuswertung != auswTag)
                        {
                            zeit.eArbeitszeitAuswertung = auswTag;
                        }

                        zeit.AnmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Anmeldung, zeit.fStandort, zeit.Anmeldung);
                        zeit.AbmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Abmeldung, zeit.fStandort, zeit.Abmeldung);

                        if ((zeit.Anmeldung != null) && (zeit.Abmeldung != null))
                        {
                            auswTag.ZeitBerechnet         += zeit.DauerGerundet;
                            auswTag.NachtschichtBerechnet += NachtSchichtBerechnen(22, 0, 8, 0, zeit.AnmeldungGerundet.Value, zeit.Abmeldung.Value);
                        }
                    }
                    auswTag.ZeitBerechnet         = ZeitAufMinuteRunden(auswTag.ZeitBerechnet);
                    auswTag.NachtschichtBerechnet = ZeitAufMinuteRunden(auswTag.NachtschichtBerechnet);

                    // Pause berechnen

                    var ersteAnmeldungZeit = zeiten.Where(w => (w.Anmeldung != null)).Min(m => m.Anmeldung);
                    if (ersteAnmeldungZeit == null)
                    {
                        auswTag.PauseBerechnet = new TimeSpan(1, 0, 0);
                    }
                    else
                    {
                        var anmZeit = JgZeit.DatumInZeitMinute(ersteAnmeldungZeit.Value);
                        var dsPause = ListePausen.FirstOrDefault(w => (anmZeit >= w.ZeitVon) && (anmZeit <= w.ZeitBis));
                        if (dsPause != null)
                        {
                            auswTag.PauseBerechnet = dsPause.Pausenzeit;
                        }
                    }

                    auswTag.ZeitBerechnet        -= auswTag.PauseBerechnet;
                    auswTag.IstFehlerZeit         = !Kontrolle24StundenOK(auswTag.ZeitBerechnet);
                    auswTag.IstFehlerNachtschicht = !Kontrolle24StundenOK(auswTag.NachtschichtBerechnet);
                }

                auswTag.ArbeitszeitTagGeaendert = OnWertWurdeManuellGeaendert;

                ListeTage.Add(auswTag);
            }

            if (WerteInDb)
            {
                foreach (var tag in ListeTage)
                {
                    if (!tag.IstManuellGeaendert)
                    {
                        if (tag.Pause != tag.PauseBerechnet)
                        {
                            tag.Pause = JgZeit.KontrolleZeitDb(tag.PauseBerechnet);
                            tag.NotifyPropertyChanged("PauseAnzeige");
                        }

                        if (tag.Zeit != tag.ZeitBerechnet)
                        {
                            tag.Zeit = JgZeit.KontrolleZeitDb(tag.ZeitBerechnet);
                            tag.NotifyPropertyChanged("ZeitAnzeige");
                        }

                        if (tag.NachtschichtZuschlag != tag.NachtschichtBerechnet)
                        {
                            tag.NachtschichtZuschlag = JgZeit.KontrolleZeitDb(tag.NachtschichtBerechnet);
                            tag.NotifyPropertyChanged("NachtschichtZuschlagAnzeige");
                        }

                        if (tag.Feiertag != tag.IstFeiertag)
                        {
                            tag.Feiertag = tag.IstFeiertag;
                            tag.NotifyPropertyChanged("FeiertagAnzeige");
                        }
                    }
                }
            }
        }