public void AddGesammtTeilnehmer(AktionModel value) { if (value.ForAll) { this.Baumhaus += value.Baumhaus; this.Zelt += value.Zelt; this.Berg += value.Berg; } }
public void AddNichtTeilnehmer(AktionModel value) { if (!value.ForAll) { this.Baumhaus -= Math.Abs(value.Baumhaus); this.Zelt -= Math.Abs(value.Zelt); this.Berg -= Math.Abs(value.Berg); } }
public async Task GewinnVerteilung(AktionModel aktionModel) { var userModel = this._User.State; userModel.Baumhaus.Add(aktionModel.Baumhaus, true); userModel.Berg.Add(aktionModel.Berg, true); userModel.Zelt.Add(aktionModel.Zelt, true); await this._User.WriteStateAsync(); }
public async Task GewinnVerteilung() { var aktionProUser = this._Abstimmung.State.AktionProUser; var aktionenDerUser = aktionProUser.Where(kv => !string.IsNullOrEmpty(kv.Value)).ToList(); var aktionen = AktionenModel.GetAktionen(); var count = aktionenDerUser.Count; if (count > 0) { var grpByAktion = aktionenDerUser.GroupBy(i => i.Value); var maxCount = grpByAktion.Max(grp => grp.Count()); var gewinnerAktionen = grpByAktion.Where(grp => (grp.Count() == maxCount)) .Select(grp => grp.Key) .ToDictionary(aktion => aktion, aktion => aktionen.FindAktion(aktion)); var verliehrerAktion = new AktionModel(string.Empty, 0, 0f, 0f, 0f, false); var nichtTeilnehmerAktion = new AktionModel(string.Empty, 0, 0f, 0f, 0f, false); var gewinnerAktion = new AktionModel(string.Empty, 0, 0f, 0f, 0f, false); var gesammtAktion = new AktionModel(string.Empty, 0, 0f, 0f, 0f, false); foreach (var aktuelleGewinnerAktion in gewinnerAktionen.Where(kv => (kv.Value is object) && (kv.Value.ForAll))) { nichtTeilnehmerAktion.AddGesammtTeilnehmer(aktuelleGewinnerAktion.Value !); verliehrerAktion.AddGesammtTeilnehmer(aktuelleGewinnerAktion.Value !); gewinnerAktion.AddGesammtTeilnehmer(aktuelleGewinnerAktion.Value !); } foreach (var aktuelleGewinnerAktion in gewinnerAktionen.Where(kv => (kv.Value is object) && (!kv.Value.ForAll))) { nichtTeilnehmerAktion.AddNichtTeilnehmer(aktuelleGewinnerAktion.Value !); verliehrerAktion.AddVerliehrer(aktuelleGewinnerAktion.Value !); gewinnerAktion.AddGewinner(aktuelleGewinnerAktion.Value !); } foreach (var kv in aktionProUser.ToList()) { var userId = kv.Key; IUserGrain userGrain = this.GrainFactory.GetGrain <IUserGrain>(userId); if (string.IsNullOrEmpty(kv.Value)) { await userGrain.GewinnVerteilung(nichtTeilnehmerAktion); } else if (gewinnerAktionen.TryGetValue(kv.Value, out var aktion)) { await userGrain.GewinnVerteilung(gewinnerAktion); } else { await userGrain.GewinnVerteilung(verliehrerAktion); } aktionProUser[userId] = string.Empty; } await this._Abstimmung.WriteStateAsync(); } }
public void AddVerliehrer(AktionModel value) { if (!value.ForAll) { if (value.Baumhaus < 0) { this.Baumhaus += value.Baumhaus; } if (value.Zelt < 0) { this.Zelt += value.Zelt; } if (value.Berg < 0) { this.Berg += value.Berg; } } }
public void AddGewinner(AktionModel value) { if (!value.ForAll) { if (value.Baumhaus > 0) { this.Baumhaus += value.Baumhaus; } if (value.Zelt > 0) { this.Zelt += value.Zelt; } if (value.Berg > 0) { this.Berg += value.Berg; } } }