public PenaltyRecurrentProcessor( IServiceScopeFactory scopeFactory, ILogger <PenaltyRecurrentProcessor> logger) { _logger = logger; _repository = scopeFactory.CreateScope().ServiceProvider.GetService <IPenaltyRepository>(); _penaltyProcessor = scopeFactory.CreateScope().ServiceProvider.GetService <PenaltyProcessor>(); }
public PenaltyOperationCreatedEventHandler( PenaltyProcessor penaltyProcessor, IPenaltyRepository penaltyRepository, ILogger <LoanOperationCreatedEventHandler> logger ) { _penaltyProcessor = penaltyProcessor; _penaltyRepository = penaltyRepository; _logger = logger; }
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 { })); }