Beispiel #1
0
        public async Task <IEnumerable <Spielerabrechnung> > RechneAbAsync(DateTime begda, DateTime endda, VolleMoehre.Contracts.Interfaces.IDBAdapter store)
        {
            List <Spielerabrechnung> abrechnungsListe = new List <Spielerabrechnung>();

            List <Spieler>         alleSpieler = (await store.GetAllAsync <Spieler>()).Where(s => s.Aktiv).ToList();
            List <Auftrittstermin> termine     = (await store.GetAllAsync <Auftrittstermin>(t => begda <= t.Datum && t.Datum <= endda)).ToList();

            foreach (Spieler spieler in alleSpieler)
            {
                Spielerabrechnung abrechnung = new Spielerabrechnung();
                abrechnung.Spielername = spieler.Name;

                //Termine lesen
                termine = termine.OrderBy(t => t.Datum).ToList();
                foreach (Auftrittstermin termin in termine)
                {
                    var ort = await store.GetAsync <Ort>(termin.OrtId.ToString());

                    if (termin.Helfer.Contains(spieler.Id))
                    {
                        abrechnung.Abrechnungszeilen.Add(termin.Showtyp + " - " + ort.Bezeichnung + " - " + termin.Datum.Date.ToShortDateString() + " - Helfer - " + termin.BezahlungHelfer + "€");
                        abrechnung.Endergebnis += termin.BezahlungHelfer;
                    }
                    else if (termin.Spieler.Contains(spieler.Id))
                    {
                        abrechnung.Abrechnungszeilen.Add(termin.Showtyp + " - " + ort.Bezeichnung + " - " + termin.Datum.Date.ToShortDateString() + " - Spieler - " + termin.BezahlungSpieler + "€");
                        abrechnung.Endergebnis += termin.BezahlungSpieler;
                    }
                    else if (termin.Moderator.Contains(spieler.Id))
                    {
                        abrechnung.Abrechnungszeilen.Add(termin.Showtyp + " - " + ort.Bezeichnung + " - " + termin.Datum.Date.ToShortDateString() + " - Moderation - " + termin.BezahlungModerator + "€");
                        abrechnung.Endergebnis += termin.BezahlungModerator;
                    }
                    foreach (Auslagen auslage in termin.Auslagen.Where(a => a.SpielerId == spieler.Id))
                    {
                        if (auslage.GefahreneKilometer != 0)
                        {
                            double KMWert = ((float)auslage.GefahreneKilometer) * 0.16d;
                            KMWert = Math.Round(KMWert, 2);
                            abrechnung.Abrechnungszeilen.Add("    + Gefahrene Kilometer: " + auslage.GefahreneKilometer + " - " + KMWert + "€");
                            abrechnung.Endergebnis += KMWert;
                        }
                        if (auslage.AuslagenBetrag != 0)
                        {
                            abrechnung.Abrechnungszeilen.Add("    + " + auslage.AuslagenBezeichnung + ": " + auslage.AuslagenBetrag + "€");
                            abrechnung.Endergebnis += auslage.AuslagenBetrag;
                        }
                    }
                }
                abrechnungsListe.Add(abrechnung);
            }
            return(abrechnungsListe);
        }
        // GET api/public/auftritte        [HttpGet]
        public async Task <ActionResult <IEnumerable <VolleMoehre.Contracts.Model.AuftrittsterminPublic> > > Get()
        {
            try
            {
                var auftritte = await _store.GetAllAsync <VolleMoehre.Contracts.Model.Auftrittstermin>(a => a.Oeffentlich && a.Datum >= DateTime.Now);

                List <VolleMoehre.Contracts.Model.AuftrittsterminPublic> retList = new List <Contracts.Model.AuftrittsterminPublic>();
                foreach (var auftritt in auftritte)
                {
                    var retAuftritt = new Contracts.Model.AuftrittsterminPublic()
                    {
                        Id                 = auftritt.Id,
                        Datum              = auftritt.Datum,
                        EintrittFrei       = auftritt.EintrittFrei,
                        EintrittInfo       = auftritt.EintrittInfo,
                        FreitextInfoExtern = auftritt.FreitextInfoExtern,
                        Gegnerlink         = auftritt.Gegnerlink,
                        Infolink           = auftritt.Infolink,
                        Showtyp            = auftritt.Showtyp,
                        Spielort           = auftritt.SpezialOrtText
                    };
                    foreach (var spieler in auftritt.Spieler)
                    {
                        retAuftritt.Teilnehmer.Add((await _store.GetAsync <Spieler>(spieler)).Name);
                    }
                    foreach (var spieler in auftritt.Moderator)
                    {
                        retAuftritt.Teilnehmer.Add((await _store.GetAsync <Spieler>(spieler)).Name);
                    }
                    foreach (var spieler in auftritt.Helfer)
                    {
                        retAuftritt.Teilnehmer.Add((await _store.GetAsync <Spieler>(spieler)).Name);
                    }
                    if (string.IsNullOrEmpty(auftritt.SpezialOrtText))
                    {
                        var ort = await _store.GetAsync <Ort>(auftritt.OrtId);

                        if (ort != null)
                        {
                            retAuftritt.Spielort     = ort.Bezeichnung;
                            retAuftritt.Hausnummer   = ort.Hausnummer;
                            retAuftritt.Postleitzahl = ort.Postleitzahl;
                            retAuftritt.Ort          = ort.Stadt;
                            retAuftritt.AnfahrtLink  = ort.AnfahrtLink;
                            retAuftritt.Infolink     = ort.InfoLink;
                            retAuftritt.VVKLink      = ort.VVKLink;
                            if (string.IsNullOrEmpty(retAuftritt.EintrittInfo))
                            {
                                retAuftritt.EintrittInfo = ort.Eintritt;
                            }
                        }
                        else
                        {
                            retAuftritt.Ort = "nähere Informationen folgen";
                        }
                    }
                    if (!string.IsNullOrEmpty(auftritt.SpezialTerminDescription))
                    {
                        retAuftritt.Showtyp = auftritt.SpezialTerminDescription;
                    }


                    retList.Add(retAuftritt);
                }
                return(retList);
            }
            catch (Exception ex)
            {
                var ret = new List <Contracts.Model.AuftrittsterminPublic>();
                ret.Add(new AuftrittsterminPublic()
                {
                    Showtyp = ex.Message
                });
                return(ret);
            }
        }