/// <summary> /// Updates the <see cref="Checks"/> table with any items from the specified <paramref name="checks"/> collection /// that are missing in the <see cref="Checks"/> table. /// </summary> /// <param name="checks">List of check names to add (if missing) to the <see cref="Checks"/> table.</param> public void AddMissingChecks(IEnumerable <CheckInfo> checks) { foreach (var check in checks) { if (!Checks.Any(row => row.Name.Equals(check.Name))) { Checks.AddChecksRow(check.Name, check.Description, check.FilePath); } } }
internal string GetCreateSql(TableMapping table) { var constraints = new List <string>(); if (PrimaryKey != null && table.PrimaryKey.Columns.Length == 1) { constraints.Add(string.Format(CultureInfo.InvariantCulture, "{0} PRIMARY KEY {1}", string.IsNullOrEmpty(PrimaryKey.Name) ? string.Empty : string.Format(CultureInfo.InvariantCulture, "CONSTRAINT {0}", PrimaryKey.Name), PrimaryKey.Direction)); if (table.OnPrimaryKeyConflict != ConflictResolution.Default) { constraints.Add(string.Format(CultureInfo.InvariantCulture, "ON CONFLICT {0}", table.OnPrimaryKeyConflict)); } if (table.AutoIncrementColumn == this) { constraints.Add("AUTOINCREMENT"); } } if (Unique != null) { constraints.Add(string.Format(CultureInfo.InvariantCulture, "UNIQUE {0}", Unique.OnConflict != ConflictResolution.Default ? string.Format(CultureInfo.InvariantCulture, "ON CONFLICT {0}", Unique.OnConflict) : string.Empty)); } if (!IsNullable) { constraints.Add("NOT NULL"); } if (Checks.Any()) { constraints.Add(string.Join(" ", Checks.Select(c => string.Format(CultureInfo.InvariantCulture, "CHECK ({0})", c)).ToArray())); } if (!string.IsNullOrEmpty(DefaultValue)) { constraints.Add(string.Format(CultureInfo.InvariantCulture, "DEFAULT({0})", DefaultValue)); } if (Collation != Collation.Default) { constraints.Add(string.Format(CultureInfo.InvariantCulture, "COLLATE {0}", Collation)); } return(string.Format(CultureInfo.InvariantCulture, "[{0}] {1} {2}", Name, OrmHelper.SqlType(this), string.Join(" ", constraints.ToArray()))); }
public HealthInfo Health() { var checkResults = new List <CheckResult>(); if (Checks.Any()) { checkResults = Checks.Select(c => c.Run()).ToList(); } // assume unhealthy by default var health = OpsEndpoints.Health.Unhealthy; if (checkResults.Any()) { health = checkResults.Aggregate(OpsEndpoints.Health.Healthy, (prev, cr) => cr.Health > prev ? cr.Health : prev); } return(new HealthInfo(Name, Description, health, checkResults)); }
public EndResultViewModel(ShellViewModel conductor, SimpleContainer container) { this.conductor = conductor; this.container = container; timer.Tick += Timer_Tick; timer.Interval = TimeSpan.FromSeconds(5); alleScores = new List <Scores>(); var gespeeldeOpdrachtenIds = new List <string>(); aantalPasvragenPerNaam = new Dictionary <string, int>(); foreach (var dag in container.GetInstance <ShellViewModel>().DagenData.Dagen) { Checks.Add(new CheckViewModel($"Administratie saved {dag.Naam} :", Util.DataFileFoundAndValid <AdminData>(dag.Id))); var adminadata = Util.SafeReadJson <AdminData>(dag.Id); foreach (var gespeeldeOpdrachtData in adminadata.OpdrachtenGespeeld) { gespeeldeOpdrachtenIds.Add(gespeeldeOpdrachtData.OpdrachtId); } foreach (var pasvragenVerdiend in adminadata.Pasvragen) { var naam = pasvragenVerdiend.Naam; if (aantalPasvragenPerNaam.ContainsKey(naam)) { aantalPasvragenPerNaam[naam] += pasvragenVerdiend.PasVragenVerdiend; } else { aantalPasvragenPerNaam.Add(naam, pasvragenVerdiend.PasVragenVerdiend); } } } gespeeldeOpdrachten = Util.AlleOpdrachtData().Where(od => gespeeldeOpdrachtenIds.Any(i => i == od.Opdracht)) .ToList(); alleAntwoordenPerOpdrachtId = new Dictionary <string, AntwoordenData>(); alleJuisteAntwoorden = new Dictionary <string, string>(); molPerOpdrachtId = new Dictionary <string, string>(); radersPerOpdrachtId = new Dictionary <string, string>(); aantalRadersPerOpdrachtId = new Dictionary <string, int>(); groepspot = 0; maxTeVerdienen = 0; foreach (var opdrachtData in gespeeldeOpdrachten) { var antwoordengevonden = Util.DataFileFoundAndValid <AntwoordenData>(opdrachtData.Opdracht); Checks.Add(new CheckViewModel($"Antwoorden saved {Util.OpdrachtUiNaam(opdrachtData)} :", antwoordengevonden)); if (antwoordengevonden) { var antwoorden = Util.SafeReadJson <AntwoordenData>(opdrachtData.Opdracht); alleAntwoordenPerOpdrachtId.Add(opdrachtData.Opdracht, antwoorden); Checks.Add(new CheckViewModel( $"Opdracht {Util.OpdrachtUiNaam(opdrachtData)}: Aantal Antwoorden: {antwoorden.Spelers.Count}", antwoorden.Spelers.Count == container.GetInstance <ShellViewModel>().AantalSpelers)); Checks.Add(new CheckViewModel( $"Opdracht {Util.OpdrachtUiNaam(opdrachtData)}: Aantal Mollen: {antwoorden.Spelers.Count(s => s.IsDeMol)}", antwoorden.Spelers.Count(s => s.IsDeMol) == 1)); Checks.Add(new CheckViewModel($"Dubbel geantwoord in opdracht {Util.OpdrachtUiNaam(opdrachtData)}:", Util.CheckForDoubles(antwoorden.Spelers))); if (Checks.Any(c => !c.IsOk)) { continue; } groepspot += antwoorden.EffectiefVerdiend; maxTeVerdienen += antwoorden.MaxTeVerdienen; var molNaam = antwoorden.Spelers.First(s => s.IsDeMol)?.Naam ?? "?"; molPerOpdrachtId.Add(opdrachtData.Opdracht, molNaam); foreach (var juistAntwoord in antwoorden.Spelers.First(s => s.IsDeMol).Antwoorden) { alleJuisteAntwoorden.Add(juistAntwoord.Key, juistAntwoord.Value); } var aantalRaders = antwoorden .Spelers .Where(s => !s.IsDeMol) .Count(s => s.DeMolIs.SafeEqual(molNaam)); aantalRadersPerOpdrachtId.Add(opdrachtData.Opdracht, aantalRaders); var radersLijst = string.Join(", ", antwoorden.Spelers .Where(s => !s.IsDeMol) .Where(s => s.DeMolIs.SafeEqual(molNaam)).Select(s => s.Naam)); radersPerOpdrachtId.Add(opdrachtData.Opdracht, radersLijst); } } //finaleantwoordenData = Util.SafeReadJson<FinaleAntwoordenData>(); // var finaleDoorIedereenGespeeld = finaleantwoordenData.Spelers.Count == // container.GetInstance<ShellViewModel>().AantalSpelers; // Checks.Add(new CheckViewModel($"Finale: Aantal Antwoorden: {finaleantwoordenData.Spelers.Count}", // finaleDoorIedereenGespeeld)); //if (finaleDoorIedereenGespeeld) { foreach (var speler in container.GetInstance <ShellViewModel>().Spelerdata.Spelers) { var scores = new Scores(); scores.Naam = speler.Naam; scores.totaleTijd = TimeSpan.Zero; var pasvragenVerdiend = aantalPasvragenPerNaam.Any(kvp => kvp.Key.SafeEqual(speler.Naam)) ? aantalPasvragenPerNaam.Single(kvp => kvp.Key.SafeEqual(speler.Naam)).Value : 0; scores.aantalPasVragenVerdiend = pasvragenVerdiend; foreach (var opdrachtData in gespeeldeOpdrachten) { if (alleAntwoordenPerOpdrachtId.ContainsKey(opdrachtData.Opdracht)) { var antwoorden = alleAntwoordenPerOpdrachtId[opdrachtData.Opdracht]; var a = antwoorden.Spelers.FirstOrDefault(s => s.Naam.SafeEqual(speler.Naam)); if (a != null) { scores.totaleTijd += a.Tijd; if (a.IsDeMol) { if (aantalRadersPerOpdrachtId.ContainsKey(opdrachtData.Opdracht) && aantalRadersPerOpdrachtId[opdrachtData.Opdracht] < Settings.Default.AantalSpelersDieDeMolMoetenGeradenHebben) { scores.verdiendAlsMol += antwoorden.MaxTeVerdienen - antwoorden.EffectiefVerdiend; } scores.aantalKeerMolGeweest++; continue; } foreach (var antwoord in a.Antwoorden) { scores.aantalVragenBeantwoord++; var juistAntwoord = alleJuisteAntwoorden.ContainsKey(antwoord.Key) ? alleJuisteAntwoorden[antwoord.Key] : "?"; if (antwoord.Value.SafeEqual(juistAntwoord)) { scores.aantalVragenJuistBeantwoord++; } } } } } //var finaleAntwoorden = finaleantwoordenData.Spelers.Single(s => s.Naam.SafeEqual(speler.Naam)); //scores.totaleTijd += finaleAntwoorden.Tijd; // foreach (var demolIsPerOpdrachtId in finaleAntwoorden.DeMolIsPerOpdrachtId) // { // scores.finaleAantalVragenBeantwoord++; // // if (molPerOpdrachtId.ContainsKey(demolIsPerOpdrachtId.Key) // && molPerOpdrachtId[demolIsPerOpdrachtId.Key].SafeEqual(demolIsPerOpdrachtId.Value)) // { // scores.finaleAantalVragenJuistBeantwoord++; // } // } // foreach (var antwoordenPerVraagId in finaleAntwoorden.AntwoordenPerVraagId) // { // scores.finaleAantalVragenBeantwoord++; // // if (alleJuisteAntwoorden.ContainsKey(antwoordenPerVraagId.Key) // && alleJuisteAntwoorden[antwoordenPerVraagId.Key].SafeEqual(antwoordenPerVraagId.Value)) // { // scores.finaleAantalVragenJuistBeantwoord++; // } // } var x = Math.Min(scores.aantalVragenJuistBeantwoord + scores.aantalPasVragenVerdiend, scores.aantalVragenBeantwoord); scores.percentage = (scores.aantalVragenBeantwoord > 0) ? x / scores.aantalVragenBeantwoord : 0m; //scores.finalePercentage = (scores.finaleAantalVragenBeantwoord > 0) ? scores.finaleAantalVragenJuistBeantwoord / scores.finaleAantalVragenBeantwoord : 0m; scores.totaalPercentage = scores.percentage; alleScores.Add(scores); } Util.SafeFileWithBackup(new ScoresData { MaxTeVerdienen = maxTeVerdienen, GroepsPot = groepspot, Scores = alleScores.OrderByDescending(s => s.totaalPercentage).ThenBy(s => s.totaleTijd).ToList() }); } }