From ea2f62b721d0d92fac43c337c231009c4e319413 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Wed, 9 Nov 2022 22:53:36 +0100 Subject: [PATCH] [AB-74] adding more information to output of transfer credits command --- .../command/economy/TransferCredits.java | 29 ++++++++++++++++--- .../model/command/TransferCreditsModel.java | 13 +++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 abstracto-application/abstracto-modules/entertainment/entertainment-int/src/main/java/dev/sheldan/abstracto/entertainment/model/command/TransferCreditsModel.java diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java index b3efea394..2d89751a9 100644 --- a/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-impl/src/main/java/dev/sheldan/abstracto/entertainment/command/economy/TransferCredits.java @@ -11,10 +11,14 @@ import dev.sheldan.abstracto.core.interaction.InteractionService; import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig; import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService; import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.template.display.MemberDisplay; +import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.management.UserInServerManagementService; +import dev.sheldan.abstracto.core.utils.FutureUtils; import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition; import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames; +import dev.sheldan.abstracto.entertainment.model.command.TransferCreditsModel; import dev.sheldan.abstracto.entertainment.service.EconomyService; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; @@ -44,15 +48,25 @@ public class TransferCredits extends AbstractConditionableCommand { @Autowired private EconomyService economyService; + @Autowired + private ChannelService channelService; + @Override - public CommandResult execute(CommandContext commandContext) { + public CompletableFuture executeAsync(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); Member targetMember = (Member) parameters.get(0); Integer amount = (Integer) parameters.get(1); AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember); AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor()); economyService.transferCredits(sourceUser, targetUser, amount.longValue()); - return CommandResult.fromSuccess(); + TransferCreditsModel responseModel = TransferCreditsModel + .builder() + .sourceMember(MemberDisplay.fromMember(commandContext.getAuthor())) + .targetMember(MemberDisplay.fromMember(targetMember)) + .credits(amount) + .build(); + return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInTextChannelList(TRANSFER_CREDITS_RESPONSE, responseModel, commandContext.getChannel())) + .thenApply(unused -> CommandResult.fromSuccess()); } @Override @@ -61,8 +75,14 @@ public class TransferCredits extends AbstractConditionableCommand { Integer amount = slashCommandParameterService.getCommandOption(AMOUNT_PARAMETER, event, Integer.class); AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember); AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(event.getMember()); + TransferCreditsModel responseModel = TransferCreditsModel + .builder() + .sourceMember(MemberDisplay.fromMember(event.getMember())) + .targetMember(MemberDisplay.fromMember(targetMember)) + .credits(amount) + .build(); economyService.transferCredits(sourceUser, targetUser, amount.longValue()); - return interactionService.replyEmbed(TRANSFER_CREDITS_RESPONSE, event) + return interactionService.replyEmbed(TRANSFER_CREDITS_RESPONSE, responseModel, event) .thenApply(interactionHook -> CommandResult.fromSuccess()); } @@ -105,7 +125,8 @@ public class TransferCredits extends AbstractConditionableCommand { .templated(true) .supportsEmbedException(true) .parameters(parameters) - .causesReaction(true) + .causesReaction(false) + .async(true) .help(helpInfo) .build(); } diff --git a/abstracto-application/abstracto-modules/entertainment/entertainment-int/src/main/java/dev/sheldan/abstracto/entertainment/model/command/TransferCreditsModel.java b/abstracto-application/abstracto-modules/entertainment/entertainment-int/src/main/java/dev/sheldan/abstracto/entertainment/model/command/TransferCreditsModel.java new file mode 100644 index 000000000..8326a7d01 --- /dev/null +++ b/abstracto-application/abstracto-modules/entertainment/entertainment-int/src/main/java/dev/sheldan/abstracto/entertainment/model/command/TransferCreditsModel.java @@ -0,0 +1,13 @@ +package dev.sheldan.abstracto.entertainment.model.command; + +import dev.sheldan.abstracto.core.models.template.display.MemberDisplay; +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class TransferCreditsModel { + private Integer credits; + private MemberDisplay sourceMember; + private MemberDisplay targetMember; +}