@@ -2,6 +2,7 @@ package ru.soune.nocopy.dto.file;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import ru.soune.nocopy.entity.file.FileAppeal;
|
||||
import ru.soune.nocopy.entity.file.FileStatus;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -16,5 +17,5 @@ public class FileModerationInfo {
|
||||
private FileStatus currentStatus;
|
||||
private LocalDateTime uploadDate;
|
||||
private Boolean hasActiveAppeal;
|
||||
private AppealInfo activeAppeal;
|
||||
private FileAppeal activeAppeal;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import ru.soune.nocopy.dto.file.AppealResponse;
|
||||
import ru.soune.nocopy.dto.file.FileEntityRequest;
|
||||
import ru.soune.nocopy.dto.file.FileModerationInfo;
|
||||
import ru.soune.nocopy.entity.file.FileEntity;
|
||||
import ru.soune.nocopy.entity.file.FileStatus;
|
||||
import ru.soune.nocopy.service.file.moderation.ModerationService;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -71,9 +72,11 @@ public class FileInteranlInfoHandler implements RequestHandler {
|
||||
try {
|
||||
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 0;
|
||||
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
|
||||
List<String> statuses = fileRequest.getStatuses().isEmpty() ? List.of(FileStatus.MODERATION.name(),
|
||||
FileStatus.BLOCKED.name(), FileStatus.ACTIVE.name()): fileRequest.getStatuses();
|
||||
|
||||
Page<FileEntity> files = moderationService.getFilesForModeration(page, pageSize,
|
||||
fileRequest.getSortOrder(), fileRequest.getSortBy());
|
||||
fileRequest.getSortOrder(), fileRequest.getSortBy(), statuses);
|
||||
|
||||
List<Map<String, Object>> filesWithInfo = files.getContent().stream()
|
||||
.map(file -> {
|
||||
@@ -92,11 +95,8 @@ public class FileInteranlInfoHandler implements RequestHandler {
|
||||
moderationInfoMap.put("hasActiveAppeal", info != null && info.getHasActiveAppeal());
|
||||
|
||||
if (info != null && info.getActiveAppeal() != null) {
|
||||
Map<String, Object> appealInfoMap = new HashMap<>();
|
||||
appealInfoMap.put("appealId", info.getActiveAppeal().getAppealId());
|
||||
appealInfoMap.put("status", info.getActiveAppeal().getStatus());
|
||||
appealInfoMap.put("createdAt", info.getActiveAppeal().getCreatedAt());
|
||||
moderationInfoMap.put("appealInfo", appealInfoMap);
|
||||
AppealResponse appealResponse = moderationService.convertToResponse(info.getActiveAppeal());
|
||||
moderationInfoMap.put("appealInfo", appealResponse);
|
||||
} else {
|
||||
moderationInfoMap.put("appealInfo", null);
|
||||
}
|
||||
|
||||
@@ -76,6 +76,9 @@ public interface FileEntityRepository extends JpaRepository<FileEntity, String>
|
||||
|
||||
Page<FileEntity> findByStatusIn(List<FileStatus> statuses, Pageable pageable);
|
||||
|
||||
@Query("SELECT f FROM FileEntity f WHERE f.status IN :statuses")
|
||||
Page<FileEntity> findByStatusInAndSorted(@Param("statuses") List<String> statuses, Pageable pageable);
|
||||
|
||||
List<FileEntity> findByUserIdAndStatusIn(Long userId, List<FileStatus> statuses);
|
||||
|
||||
@Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.status IN :statuses")
|
||||
|
||||
@@ -207,12 +207,7 @@ public class ModerationService {
|
||||
.currentStatus(file.getStatus())
|
||||
.uploadDate(file.getCreatedAt())
|
||||
.hasActiveAppeal(activeAppeal != null)
|
||||
.activeAppeal(activeAppeal != null ?
|
||||
AppealInfo.builder()
|
||||
.appealId(activeAppeal.getId())
|
||||
.status(activeAppeal.getStatus().name())
|
||||
.createdAt(activeAppeal.getCreatedAt())
|
||||
.build() : null)
|
||||
.activeAppeal(activeAppeal)
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -229,7 +224,8 @@ public class ModerationService {
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Page<FileEntity> getFilesForModeration(int page, int size, String sortDirection, String sortBy) {
|
||||
public Page<FileEntity> getFilesForModeration(int page, int size, String sortDirection, String sortBy,
|
||||
List<String> statuses) {
|
||||
if (sortDirection == null || sortDirection.isEmpty()) {
|
||||
sortDirection = "desc";
|
||||
}
|
||||
@@ -240,7 +236,7 @@ public class ModerationService {
|
||||
|
||||
Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDirection), sortBy));
|
||||
|
||||
return fileEntityRepository.findByStatusIn(Arrays.asList(FileStatus.MODERATION, FileStatus.BLOCKED), pageable);
|
||||
return fileEntityRepository.findByStatusInAndSorted(statuses, pageable);
|
||||
}
|
||||
|
||||
|
||||
@@ -268,7 +264,7 @@ public class ModerationService {
|
||||
.map(this::convertToResponse);
|
||||
}
|
||||
|
||||
private AppealResponse convertToResponse(FileAppeal appeal) {
|
||||
public AppealResponse convertToResponse(FileAppeal appeal) {
|
||||
return AppealResponse.builder()
|
||||
.appealId(appeal.getId())
|
||||
.fileId(appeal.getFileId())
|
||||
|
||||
Reference in New Issue
Block a user