public async Task <bool> UpdateStartList(int raceId, IEnumerable <StartList> startList) { using var scope = ScopeBuilder.BuildTransactionScope(); await _startListDao.DeleteAllForRace(raceId); foreach (var sl in startList) { await _startListDao.InsertAsync(sl); } scope.Complete(); return(true); }
public async Task <RaceModificationResult> InsertOrUpdateRace(Race race, int sensorCount) { try { using var scope = ScopeBuilder.BuildTransactionScope(); if (race.Id == -1) { var raceId = await _raceDao.InsertGetIdAsync(race); if (raceId.HasValue) { race.Id = raceId.Value; } else { return(RaceModificationResult.Err); } } else if (!await IsUpdateInvalid(race)) { await _raceDao.UpdateAsync(race); } else { return(RaceModificationResult.StartListDefined); } var sensors = (await _sensorDao.FindAllSensorsForRace(race.Id)).ToList(); if (sensors.Count > sensorCount) { foreach (var s in sensors.Where(s => s.SensorNumber >= sensorCount)) { await _sensorDao.DeleteAsync(s.Id); } } else { for (var i = sensors.Count; i < sensorCount; i++) { await _sensorDao.InsertAsync(new Sensor { RaceId = race.Id, SensorNumber = i }); } } scope.Complete(); return(RaceModificationResult.Ok); } catch (Exception) { return(RaceModificationResult.Err); } }
public async Task <bool> UpdatePossibleDisciplines(int skierId, IEnumerable <int> disciplines) { var skier = await GetSkierById(skierId); if (skier == null) { return(false); } using var scope = ScopeBuilder.BuildTransactionScope(); await _skierDao.DeleteAllPossibleDisciplineForSkier(skierId); foreach (var discipline in disciplines) { await _skierDao.InsertPossibleDisciplineForSkier(skierId, discipline); } scope.Complete(); return(true); }
public async Task <bool> RemoveRace(int raceId) { var race = await _raceDao.FindByIdAsync(raceId); if (race == null) { return(false); } if (race.RaceStateId != (int)RaceState.Upcoming) { return(false); } using var scope = ScopeBuilder.BuildTransactionScope(); await _sensorDao.DeleteAllSensorsForRace(race.Id); await _startListDao.DeleteAllForRace(race.Id); await _raceDao.DeleteAsync(race.Id); scope.Complete(); return(true); }