public async Task <DistanceCombination> CloneDistanceCombinationAsync(DistanceCombination current, DistanceCombinationCloneSettings settings, Guid?competitionId = null, TimeSpan?shiftTimes = null) { competitionId = competitionId ?? current.CompetitionId; int number; if (competitionId != current.CompetitionId) { number = current.Number; } else { number = await Combinations(competitionId.Value).Select(d => d.Number).DefaultIfEmpty(0).MaxAsync() + 1; } var clone = new DistanceCombination { CompetitionId = competitionId.Value, Number = number, Name = current.Name, ClassFilter = current.ClassFilter, CategoryFilter = current.CategoryFilter, ClassificationWeight = current.ClassificationWeight, Starts = current.Starts + (shiftTimes ?? TimeSpan.Zero) }; await AddCombinationAsync(clone); return(clone); }
public static void SetParameters(this Report report, DistanceCombination distanceCombination) { report.ReportParameters.Add("DistanceCombinationName", ReportParameterType.String, distanceCombination.Name); report.ReportParameters.Add("DistanceCombinationNumber", ReportParameterType.Integer, distanceCombination.Number); report.ReportParameters.Add("DistanceCombinationStarts", ReportParameterType.DateTime, distanceCombination.Starts); report.SetParameters(distanceCombination.Competition); }
public RaceDistanceCombinationSelector(DistanceCombination distanceCombination) { if (distanceCombination.Distances == null) { throw new ArgumentNullException("distanceCombination.Distances"); } this.distanceCombination = distanceCombination; }
public DistanceCombinationEventBase(DistanceCombination distanceCombination) : base(distanceCombination.CompetitionId) { if (distanceCombination == null) { throw new ArgumentNullException(nameof(distanceCombination)); } DistanceCombination = distanceCombination; }
public async Task UpdateCombinationDistancesAsync(DistanceCombination current, ICollection <Guid> distances) { using (var transaction = context.UseOrBeginTransaction(IsolationLevel.RepeatableRead)) try { current.Distances.Clear(); foreach (var distance in from d in context.Distances where d.CompetitionId == current.CompetitionId && distances.Contains(d.Id) select d) { current.Distances.Add(distance); } await context.SaveChangesAsync(); transaction.Commit(); } catch { transaction.Rollback(); throw; } }
public void Initialize() { context = new CompetitionMemoryContext(); expert = new IndividualPairsDistanceDisciplineExpert(); competitors = new List <CompetitorBase> { CreateCompetitor("Jantje"), CreateCompetitor("Pietje"), CreateCompetitor("Klaasje"), CreateCompetitor("Petertje"), CreateCompetitor("Diederikje") }; distanceCombination = new DistanceCombination { Id = Guid.NewGuid(), Distances = new List <Distance> { new Distance { Number = 2, ContinuousNumbering = true, FirstHeat = 9, StartMode = DistanceStartMode.MultipleHeats } } }; drawCompetitors = new List <DrawCompetitor> { new DrawCompetitor(competitors[0], CreateHistoricalTime(12)), new DrawCompetitor(competitors[0], CreateHistoricalTime(9)), new DrawCompetitor(competitors[0], null), new DrawCompetitor(competitors[0], CreateHistoricalTime(13)), new DrawCompetitor(competitors[0], CreateHistoricalTime(10)), }; distance = distanceCombination.Distances.Single(d => d.Number == 2); }
public DistanceCombinationClassificationChangedEvent(DistanceCombination distanceCombination) : base(distanceCombination) { }
public async Task DeleteCombinationAsync(DistanceCombination combination) { context.DistanceCombinations.Remove(combination); await context.SaveChangesAsync(); }
public async Task AddCombinationAsync(DistanceCombination combination) { combination.Id = Guid.NewGuid(); context.DistanceCombinations.Add(combination); await context.SaveChangesAsync(); }
public DistanceCombinationClassificationResultChangedEvent(DistanceCombination distanceCombination, IList <ClassifiedCompetitor> result) : base(distanceCombination) { Result = result; }