Exemple #1
0
        /// <summary>
        /// Updates the handicap calculation status.
        /// </summary>
        /// <param name="processId">The process identifier.</param>
        /// <param name="tournamentId">The tournament identifier.</param>
        /// <param name="status">The status.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <param name="errorMessage">The error message.</param>
        /// <returns></returns>
        private async Task UpdateHandicapCalculationStatus(Guid processId,
                                                           Guid tournamentId,
                                                           HandicapCalculationStatus status,
                                                           CancellationToken cancellationToken,
                                                           String errorMessage = null)
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = await this.HandicapCalculationProcessRepository.GetLatestVersion(tournamentId, cancellationToken);

            switch (status)
            {
            case HandicapCalculationStatus.Running:
                handicapCalculationProcessAggregate.UpdateProcessToRunning(DateTime.Now);
                break;

            case HandicapCalculationStatus.Complete:
                handicapCalculationProcessAggregate.UpdateProcessToComplete(DateTime.Now);
                break;

            case HandicapCalculationStatus.Error:
                handicapCalculationProcessAggregate.UpdateProcessToErrored(DateTime.Now, errorMessage);
                break;
            }

            await this.HandicapCalculationProcessRepository.SaveChanges(handicapCalculationProcessAggregate, cancellationToken);
        }
Exemple #2
0
        public static HandicapCalculationProcessAggregate GetRunningHandicapCalculationProcessAggregate()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessAggregate.Create(HandicapCalculationProcessTestData.AggregateId);

            handicapCalculationProcessAggregate.StartHandicapCalculationProcess(TournamentTestData.GetCompletedTournamentAggregateWithCSSCalculatedAggregate(), HandicapCalculationProcessTestData.StartedDateTime);
            handicapCalculationProcessAggregate.UpdateProcessToRunning(HandicapCalculationProcessTestData.RunningDateTime);
            return(handicapCalculationProcessAggregate);
        }
Exemple #3
0
        public void HandicapCalculationProcessAggregate_UpdateProcessToComplete_AlreadyErrored_ErrorThrown()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetErroredHandicapCalculationProcessAggregate();

            Should.Throw <InvalidOperationException>(() =>
            {
                handicapCalculationProcessAggregate.UpdateProcessToComplete(HandicapCalculationProcessTestData
                                                                            .CompletedDateTime);
            });
        }
Exemple #4
0
        public void HandicapCalculationProcessAggregate_UpdateProcessToErrored_NotRunning_ErrorThrown()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetStartedHandicapCalculationProcessAggregate();

            Should.Throw <InvalidOperationException>(() =>
            {
                handicapCalculationProcessAggregate.UpdateProcessToErrored(HandicapCalculationProcessTestData.ErroredDateTime,
                                                                           HandicapCalculationProcessTestData.ErrorMessage);
            });
        }
Exemple #5
0
        public void HandicapCalculationProcessAggregate_UpdateProcessToRunning_AlreadyRunning_ErrorThrown()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetRunningHandicapCalculationProcessAggregate();

            Should.Throw <InvalidOperationException>(() =>
            {
                handicapCalculationProcessAggregate.UpdateProcessToRunning(HandicapCalculationProcessTestData
                                                                           .RunningDateTime);
            });
        }
Exemple #6
0
        public void HandicapCalculationProcessAggregate_StartHandicapCalculationProcess_ProcessRecordedAsStarted()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetEmptyHandicapCalculationProcessAggregate();

            handicapCalculationProcessAggregate.StartHandicapCalculationProcess(TournamentTestData.GetCompletedTournamentAggregateWithCSSCalculatedAggregate(), HandicapCalculationProcessTestData.StartedDateTime);

            handicapCalculationProcessAggregate.AggregateId.ShouldBe(handicapCalculationProcessAggregate.AggregateId);
            handicapCalculationProcessAggregate.StartedDateTime.ShouldBe(handicapCalculationProcessAggregate.StartedDateTime);
            handicapCalculationProcessAggregate.Status.ShouldBe(HandicapProcessStatus.Started);
        }
Exemple #7
0
        public void HandicapCalculationProcessAggregate_UpdateProcessToRunning_ProcessSetToRunning()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetStartedHandicapCalculationProcessAggregate();

            handicapCalculationProcessAggregate.UpdateProcessToRunning(HandicapCalculationProcessTestData.RunningDateTime);

            handicapCalculationProcessAggregate.AggregateId.ShouldBe(handicapCalculationProcessAggregate.AggregateId);
            handicapCalculationProcessAggregate.StartedDateTime.ShouldBe(handicapCalculationProcessAggregate.StartedDateTime);
            handicapCalculationProcessAggregate.RunningDateTime.ShouldBe(handicapCalculationProcessAggregate.RunningDateTime);
            handicapCalculationProcessAggregate.Status.ShouldBe(HandicapProcessStatus.Running);
        }
Exemple #8
0
        //[Authorize(Policy = PolicyNames.GetHandicapCalculationProcessStatusPolicy)]
        public async Task <IActionResult> GetHandicapCalculationProcessStatus([FromQuery] Guid tournamentId,
                                                                              CancellationToken cancellationToken)
        {
            HandicapCalculationProcessAggregate handicapCalculationProcess = await this.HandicapCalculationProcessRepository.GetLatestVersion(tournamentId, cancellationToken);

            if (handicapCalculationProcess.Status == HandicapProcessStatus.Default)
            {
                throw new NotFoundException($"Handicap Calculation Process not found with Id {tournamentId}");
            }

            return(this.Ok(handicapCalculationProcess.Status.ToString()));
        }
Exemple #9
0
        public void HandicapCalculationProcessAggregate_StartHandicapCalculationProcess_TournamentScoresNotPublished()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetEmptyHandicapCalculationProcessAggregate();

            Should.Throw <InvalidOperationException>(() =>
            {
                handicapCalculationProcessAggregate.StartHandicapCalculationProcess(TournamentTestData
                                                                                    .GetCompletedTournamentAggregate(),
                                                                                    HandicapCalculationProcessTestData
                                                                                    .StartedDateTime);
            });
        }
Exemple #10
0
        public void HandicapCalculationProcessAggregate_StartHandicapCalculationProcess_AlreadyErrored_ErrorThrown()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetErroredHandicapCalculationProcessAggregate();

            Should.Throw <InvalidOperationException>(() =>
            {
                handicapCalculationProcessAggregate.StartHandicapCalculationProcess(TournamentTestData
                                                                                    .GetCompletedTournamentAggregateWithCSSCalculatedAggregate(),
                                                                                    HandicapCalculationProcessTestData
                                                                                    .StartedDateTime);
            });
        }
Exemple #11
0
        public void HandicapCalculationProcessAggregate_UpdateProcessToErrored_ProcessSetToErrored()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessTestData.GetRunningHandicapCalculationProcessAggregate();

            handicapCalculationProcessAggregate.UpdateProcessToErrored(HandicapCalculationProcessTestData.ErroredDateTime, HandicapCalculationProcessTestData.ErrorMessage);

            handicapCalculationProcessAggregate.AggregateId.ShouldBe(handicapCalculationProcessAggregate.AggregateId);
            handicapCalculationProcessAggregate.StartedDateTime.ShouldBe(handicapCalculationProcessAggregate.StartedDateTime);
            handicapCalculationProcessAggregate.RunningDateTime.ShouldBe(handicapCalculationProcessAggregate.RunningDateTime);
            handicapCalculationProcessAggregate.ErroredDateTime.ShouldBe(handicapCalculationProcessAggregate.ErroredDateTime);
            handicapCalculationProcessAggregate.ErrorMessage.ShouldBe(handicapCalculationProcessAggregate.ErrorMessage);
            handicapCalculationProcessAggregate.Status.ShouldBe(HandicapProcessStatus.Errored);
        }
Exemple #12
0
        /// <summary>
        /// Handles the command.
        /// </summary>
        /// <param name="command">The command.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        private async Task HandleCommand(StartHandicapCalculationProcessForTournamentCommand command,
                                         CancellationToken cancellationToken)
        {
            // Get the tournament for validation
            TournamentAggregate tournament = await this.TournamentRepository.GetLatestVersion(command.TournamentId, cancellationToken);

            // Rehydrate the aggregate
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate =
                await this.HandicapCalculationProcessRepository.GetLatestVersion(command.TournamentId, cancellationToken);

            // Call the aggregate method
            handicapCalculationProcessAggregate.StartHandicapCalculationProcess(tournament, DateTime.Now);

            // Save the changes
            await this.HandicapCalculationProcessRepository.SaveChanges(handicapCalculationProcessAggregate, cancellationToken);
        }
Exemple #13
0
        public static HandicapCalculationProcessAggregate GetEmptyHandicapCalculationProcessAggregate()
        {
            HandicapCalculationProcessAggregate handicapCalculationProcessAggregate = HandicapCalculationProcessAggregate.Create(HandicapCalculationProcessTestData.AggregateId);

            return(handicapCalculationProcessAggregate);
        }