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);
 }
Exemplo n.º 3
0
        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;
                }
        }
Exemplo n.º 6
0
        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;
 }