protected override async Task HandleCoreAsync(HandlerContext <PullRequestEventPayload> context, CancellationToken cancellationToken)
        {
            var payload           = context.Payload;
            var installationId    = payload.Installation.Id;
            var repositoryId      = payload.Repository.Id;
            var sha               = payload.PullRequest.Head.Sha;
            var runIdentifier     = $"{installationId}/{repositoryId}/{sha}";
            var action            = payload.Action;
            var pullRequestNumber = payload.PullRequest.Number;

            Logger.LogInformation(
                "Received {action} action on PR# {pullRequestNumber} against {runIdentifier}",
                action,
                pullRequestNumber,
                runIdentifier
                );

            if (action == "opened" || action == "reopened" || action == "synchronize")
            {
                var configuration = await this.RepositoryConfigurationProvider.GetRepositoryConfigurationAsync(installationId, repositoryId, sha, cancellationToken);

                if (configuration.IsEnabled)
                {
                    var pullRequestTrackingTicket = new PullRequestTrackingTicket(installationId, repositoryId, pullRequestNumber);
                    await pullRequestTracker.StartTrackingPullRequestAsync(pullRequestTrackingTicket);

                    await CreateCheckAsync(context.Client, installationId, repositoryId, sha, false, cancellationToken);

                    if (action == "reopened")
                    {
                        await EvaluatePullRequestAsync(context.Client, installationId, repositoryId, sha, cancellationToken);
                    }
                }
            }
            else
            {
                Logger.LogInformation(
                    "Ignoring pull request event because action was not 'opened' or 'reopened'. It was {action}.",
                    action
                    );
            }
        }