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); } }