コード例 #1
0
 public PenaltyRecurrentProcessor(
     IServiceScopeFactory scopeFactory,
     ILogger <PenaltyRecurrentProcessor> logger)
 {
     _logger           = logger;
     _repository       = scopeFactory.CreateScope().ServiceProvider.GetService <IPenaltyRepository>();
     _penaltyProcessor = scopeFactory.CreateScope().ServiceProvider.GetService <PenaltyProcessor>();
 }
コード例 #2
0
 public PenaltyOperationCreatedEventHandler(
     PenaltyProcessor penaltyProcessor,
     IPenaltyRepository penaltyRepository,
     ILogger <LoanOperationCreatedEventHandler> logger
     )
 {
     _penaltyProcessor  = penaltyProcessor;
     _penaltyRepository = penaltyRepository;
     _logger            = logger;
 }
コード例 #3
0
        public async Task <IActionResult> ProcessPenalty(
            [FromServices] IPenaltyRepository repository,
            [FromRoute] Guid id,
            [FromServices] PenaltyProcessor processor,
            CancellationToken cancellationToken)
        {
            var penalty = await repository.Get(id, HttpContext.GetGuildId(), cancellationToken);

            if (penalty == null)
            {
                throw new ApiException(HttpStatusCode.NotFound, ErrorCodes.PenaltyNotFound, $"Penalty {id} not found");
            }

            try{
                await processor.Process(penalty, cancellationToken);

                await repository.Save(penalty);
            }
            catch (InvalidOperationException) {
                throw new ApiException(HttpStatusCode.Conflict, ErrorCodes.IncorrectOperation, $"Incorrect penalty state");
            }

            return(Ok(new { }));
        }