public async Task DoWork(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { _logger.Log(LogLevel.Information, "Update deposit started!"); //список активных депозитов var deposits = _depositRepository.Deposits.Where(x => x.Status).ToList(); foreach (var deposit in deposits) { //зачисление процентов await _depositRepository.PercentAccrual(deposit.IdDeposit); _logger.Log(LogLevel.Information, $"Deposit {deposit.IdDeposit} is updated!"); } //закрытие всех завершенных депозитов var closedDeposits = await _depositRepository.CloseFinishedDeposits(); _logger.Log(LogLevel.Information, $"Finished deposits was closed!"); foreach (var deposit in closedDeposits) { //находим нужный банковский счет var currentAccount = await _bankAccountRepository.Accounts .FirstOrDefaultAsync(x => x.IdAccount == deposit.IdAccount, cancellationToken); //происводим зачисление currentAccount.Amount += deposit.Amount; //фиксируем зачисление средств await _mediator.Send(new BankAccountOperationCommand( currentAccount.IdAccount, "Зачисление", deposit.Amount), cancellationToken); //фиксируем завершение депозита await _mediator.Send(new BankAccountOperationCommand( currentAccount.IdAccount, "Успешное завершение депозита", 0), cancellationToken); } await Task.Delay(86_400_000, cancellationToken); } }