This commit is contained in:
2024-11-19 16:39:46 +01:00
parent b06597f36e
commit e79cab687c
5 changed files with 41 additions and 22 deletions
@@ -192,31 +192,38 @@ public class EventService {
entity = userAccountRepository.save(entity);
accountsByAccountName.put(Account.Skarbiec.name(), entity);
}
List<UserAccount> accountsToCharge = new ArrayList<>();
event
List<TransactionItem> itemsToCharge = new ArrayList<>();
List<Registration> registrationsToCharge = event
.getRegistrations()
.forEach(registration -> {
String login = registration.getUser().getLogin();
UserAccount userAccount = accountsByLogin.get(login);
if (userAccount == null) {
userAccount = createNewAccountForLogin(login);
accountsByLogin.put(login, userAccount);
}
accountsToCharge.add(userAccount);
});
.stream()
.filter(registration -> !Boolean.FALSE.equals(registration.getActive()))
.sorted(Comparator.comparing(Registration::getDateTime))
.limit(event.getPlayersLimit() == null ? 10000 : event.getPlayersLimit()) // Ograniczamy do pierwszych n elementów
.toList();
registrationsToCharge.forEach(registration -> {
String login = registration.getUser().getLogin();
UserAccount userAccount = accountsByLogin.get(login);
if (userAccount == null) {
userAccount = createNewAccountForLogin(login);
accountsByLogin.put(login, userAccount);
}
TransactionItem transactionForPlayer = new TransactionItem();
transactionForPlayer.setRegistration(registration);
transactionForPlayer.setUserAccount(userAccount);
itemsToCharge.add(transactionForPlayer);
});
TransactionItem fieldServiceItem = new TransactionItem();
fieldServiceItem.setEvent(event);
fieldServiceItem.setAmount(event.getCost());
fieldServiceItem.setUserAccount(accountsByAccountName.get(Account.Boisko.name()));
fieldServiceItem.setTransaction(transaction);
transaction.getTransactionItems().add(fieldServiceItem);
accountsToCharge.forEach(userAccount -> {
TransactionItem playerCharge = new TransactionItem();
playerCharge.setEvent(event);
playerCharge.setAmount(event.getCost().divide(BigDecimal.valueOf(-accountsToCharge.size()), 2, RoundingMode.HALF_UP));
playerCharge.setUserAccount(userAccount);
playerCharge.setTransaction(transaction);
transaction.getTransactionItems().add(playerCharge);
itemsToCharge.forEach(transactionForPlayer -> {
transactionForPlayer.setEvent(event);
transactionForPlayer.setAmount(event.getCost().divide(BigDecimal.valueOf(-itemsToCharge.size()), 2, RoundingMode.HALF_UP));
transactionForPlayer.setTransaction(transaction);
transaction.getTransactionItems().add(transactionForPlayer);
});
BigDecimal vaultValue = transaction
.getTransactionItems()
@@ -237,7 +237,8 @@ public class RegistrationResource {
throw new AccessDeniedException("Registration is closed for this event");
}
LOG.debug("REST request to delete Registration : {}", id);
registrationRepository.deleteById(id);
registration.setActive(Boolean.FALSE);
registrationRepository.save(registration);
return ResponseEntity.noContent()
.headers(HeaderUtil.createEntityDeletionAlert(applicationName, false, ENTITY_NAME, id.toString()))
.build();