mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-26 13:46:19 +00:00
added command to delete a warning by id
This commit is contained in:
@@ -0,0 +1,61 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class DeleteWarning extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WarnManagementService warnManagementService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
Long warnId = (Long) commandContext.getParameters().getParameters().get(0);
|
||||||
|
Optional<Warning> optional = warnManagementService.findById(warnId);
|
||||||
|
optional.ifPresent(warning -> {
|
||||||
|
if(warning.getWarnedUser().getServerReference().getId().equals(commandContext.getUserInitiatedContext().getServer().getId())) {
|
||||||
|
warnManagementService.deleteWarning(warning);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("warnId").type(Long.class).build());
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
List<String> aliases = Arrays.asList("delWarn");
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("deleteWarning")
|
||||||
|
.module(ModerationModule.MODERATION)
|
||||||
|
.templated(true)
|
||||||
|
.aliases(aliases)
|
||||||
|
.causesReaction(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.WARNING;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class WarnManagementServiceBean implements WarnManagementService {
|
public class WarnManagementServiceBean implements WarnManagementService {
|
||||||
@@ -54,5 +55,15 @@ public class WarnManagementServiceBean implements WarnManagementService {
|
|||||||
return warnRepository.countByWarnedUserAndDecayedFalse(aUserInAServer);
|
return warnRepository.countByWarnedUserAndDecayedFalse(aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Warning> findById(Long id) {
|
||||||
|
return warnRepository.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteWarning(Warning warning) {
|
||||||
|
warnRepository.delete(warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service.management;
|
package dev.sheldan.abstracto.moderation.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface WarnManagementService {
|
public interface WarnManagementService {
|
||||||
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
||||||
@@ -15,4 +15,6 @@ public interface WarnManagementService {
|
|||||||
List<Warning> getAllWarnsForUser(AUserInAServer aUserInAServer);
|
List<Warning> getAllWarnsForUser(AUserInAServer aUserInAServer);
|
||||||
List<Warning> getAllWarningsOfServer(AServer server);
|
List<Warning> getAllWarningsOfServer(AServer server);
|
||||||
Long getActiveWarnsForUser(AUserInAServer aUserInAServer);
|
Long getActiveWarnsForUser(AUserInAServer aUserInAServer);
|
||||||
|
Optional<Warning> findById(Long id);
|
||||||
|
void deleteWarning(Warning warn);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Deletes one specific warning
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Deletes one specific warning by id completely.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
deleteWarning <warnId>
|
||||||
@@ -1 +1 @@
|
|||||||
Warnings #${warnId} with reason: ${reason} towards user ${warnedUserText} by user ${warningUserText} on `${warnDate}`.
|
Warning #${warnId} with reason: ${reason} towards user ${warnedUserText} by user ${warningUserText} on `${warnDate}`.
|
||||||
Reference in New Issue
Block a user