Example #1
0
        /// <summary>
        /// Removes entries in AvailableMatchDates database table.
        /// </summary>
        /// <param name="clear">Which entries to delete for the tournament.</param>
        /// <param name="cancellationToken"></param>
        /// <returns>Returns the number of deleted records.</returns>
        internal async Task <int> ClearAsync(ClearMatchDates clear, CancellationToken cancellationToken)
        {
            var deleted = 0;

            // tournament is always in the filter
            var filterAvailable = new RelationPredicateBucket();

            filterAvailable.PredicateExpression.Add(AvailableMatchDateFields.TournamentId ==
                                                    _tenantContext.TournamentContext.MatchPlanTournamentId);

            if (clear == ClearMatchDates.All)
            {
                deleted = await _appDb.GenericRepository.DeleteEntitiesDirectlyAsync(typeof(AvailableMatchDateEntity),
                                                                                     null !, cancellationToken);

                _generatedAvailableMatchDateEntities.Clear();
            }
            else if (clear == ClearMatchDates.OnlyAutoGenerated)
            {
                filterAvailable.PredicateExpression.AddWithAnd(AvailableMatchDateFields.IsGenerated == true);
                deleted = await _appDb.GenericRepository.DeleteEntitiesDirectlyAsync(typeof(AvailableMatchDateEntity),
                                                                                     filterAvailable, cancellationToken);

                _generatedAvailableMatchDateEntities.Clear();
            }
            else if (clear == ClearMatchDates.OnlyManual)
            {
                filterAvailable.PredicateExpression.AddWithAnd(AvailableMatchDateFields.IsGenerated == false);
                deleted = await _appDb.GenericRepository.DeleteEntitiesDirectlyAsync(typeof(AvailableMatchDateEntity),
                                                                                     filterAvailable, cancellationToken);
            }

            return(deleted);
        }
Example #2
0
        /// <summary>
        /// Removes all entries in AvailableMatchDates database table.
        /// </summary>
        /// <param name="clear">Which entries to delete for the tournament.</param>
        /// <returns>Returns the number of deleted records.</returns>
        internal int Clear(ClearMatchDates clear)
        {
            int deleted = 0;

            // tournament is always in the filter
            var filterAvailable = new RelationPredicateBucket();

            filterAvailable.PredicateExpression.Add(AvailableMatchDateFields.TournamentId == _matchPlanner.Tournament.Id);

            if (clear == ClearMatchDates.All)
            {
                deleted = _matchPlanner.Adapter.DeleteEntitiesDirectly(typeof(AvailableMatchDateEntity), null);
            }
            else if (clear == ClearMatchDates.OnlyAutoGenerated)
            {
                filterAvailable.PredicateExpression.AddWithAnd(AvailableMatchDateFields.IsGenerated == true);
                deleted = _matchPlanner.Adapter.DeleteEntitiesDirectly(typeof(AvailableMatchDateEntity), filterAvailable);
            }
            else if (clear == ClearMatchDates.OnlyManual)
            {
                filterAvailable.PredicateExpression.AddWithAnd(AvailableMatchDateFields.IsGenerated == false);
                deleted = _matchPlanner.Adapter.DeleteEntitiesDirectly(typeof(AvailableMatchDateEntity), filterAvailable);
            }

            return(deleted);
        }
Example #3
0
        public async Task GenerateAvailableMatchDatesAsync(ClearMatchDates clearMatchDates, RoundEntity round,
                                                           CancellationToken cancellationToken)
        {
            _ = await _availableMatchDates.ClearAsync(clearMatchDates, cancellationToken);

            if (!AreEntitiesLoaded)
            {
                await LoadEntitiesAsync(cancellationToken);
            }
            await _availableMatchDates.GenerateNewAsync(round, cancellationToken);
        }