// *** TIMING DATABASE CONNECTION *** // public void GetTimes(int competitionInstanceId) { IEnumerable <Heat> heats = heats = _repo.GetHeatsInCompetitionInstance((int)competitionInstanceId); var results = _repo.GetResultsFromTimingDb(competitionInstanceId); foreach (var r in results) { int counter = 0; foreach (var h in heats) { //Can only have one entry for a single chip IEnumerable <ChipInHeatViewModel> exists = (from c in _repo.GetChipsInHeat(h.Id) where r.ChipCode == c.ChipCode select c).ToList(); if (exists.Count() == 0) { break; } var existsInHeat = (from e in exists where e.HeatId == h.Id select e).SingleOrDefault(); if (existsInHeat != null) { if (r.Time01 != 0) { Time time01 = new Time { ChipCode = existsInHeat.ChipCode, HeatId = h.Id, RawTime = r.Time01, TimeNumber = 1, Type = TimeType.Start }; Time time = _repo.GetTime(h.Id, existsInHeat.ChipCode, 1); //Add time if it does not exist if (time == null) { _repo.AddTime(time01); } //Update time if different else if (time01.RawTime != time.RawTime) { _repo.Remove(h.Id, existsInHeat.ChipCode, 1); _repo.AddTime(time01); } } if (r.Time02 != 0) { Time time02 = new Time { ChipCode = existsInHeat.ChipCode, HeatId = h.Id, RawTime = r.Time02, TimeNumber = 2, Type = TimeType.Finish }; Time time = _repo.GetTime(h.Id, existsInHeat.ChipCode, 2); //Add time if it does not exist if (time == null) { _repo.AddTime(time02); } //Update time if different else if (time02.RawTime != time.RawTime) { _repo.Remove(h.Id, existsInHeat.ChipCode, 1); _repo.AddTime(time02); } } counter++; } if (counter == exists.Count()) { counter = 0; break; } } } }