@@ -19,9 +19,6 @@ import ru.soune.nocopy.service.register.AuthService;
|
|||||||
import ru.soune.nocopy.service.search.GlobalSearchService;
|
import ru.soune.nocopy.service.search.GlobalSearchService;
|
||||||
import ru.soune.nocopy.service.violation.ViolationService;
|
import ru.soune.nocopy.service.violation.ViolationService;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.time.format.DateTimeParseException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -69,29 +69,27 @@ public class ViolationService {
|
|||||||
return violationRepository.findById(violationId).orElse(null);
|
return violationRepository.findById(violationId).orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection, Integer page,
|
public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection,
|
||||||
Integer size, String start, String end) {
|
Integer page, Integer size, String start, String end) {
|
||||||
List<FileEntity> userFiles = fileName == null || fileName.isEmpty() ? fileEntityService.getAllUserFiles(userId)
|
List<FileEntity> userFiles = fileName == null || fileName.isEmpty()
|
||||||
|
? fileEntityService.getAllUserFiles(userId)
|
||||||
: fileEntityService.getAllUserFilesWithFileName(userId, fileName,
|
: fileEntityService.getAllUserFilesWithFileName(userId, fileName,
|
||||||
List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
|
List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
|
||||||
|
|
||||||
Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
|
List<Violation> allViolations;
|
||||||
"createdDate");
|
|
||||||
Pageable pageable = PageRequest.of(page, size, sort);
|
|
||||||
Page<Violation> violations;
|
|
||||||
|
|
||||||
if (start == null || end == null) {
|
if (start == null || end == null) {
|
||||||
violations = violationRepository.findByFileEntityInAndStatusNot( userFiles,
|
allViolations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
|
||||||
ViolationStatus.NOT_OWNER_FILE.name(),pageable);
|
ViolationStatus.NOT_OWNER_FILE.name());
|
||||||
} else {
|
} else {
|
||||||
violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween(
|
allViolations = violationRepository.findByFileEntityInAndCreatedDateBetweenAndStatusNot(
|
||||||
userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable);
|
userFiles, parseDate(start), parseDate(end),
|
||||||
|
ViolationStatus.NOT_OWNER_FILE.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, List<Violation>> violationsByFileId = violations.getContent().stream()
|
Map<String, List<Violation>> violationsByFileId = allViolations.stream()
|
||||||
.collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
|
.collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
|
||||||
|
|
||||||
List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream()
|
List<FileViolationSummaryDTO> allDTOs = violationsByFileId.entrySet().stream()
|
||||||
.map(entry -> {
|
.map(entry -> {
|
||||||
List<Violation> fileViolations = entry.getValue();
|
List<Violation> fileViolations = entry.getValue();
|
||||||
FileEntity file = fileViolations.get(0).getFileEntity();
|
FileEntity file = fileViolations.get(0).getFileEntity();
|
||||||
@@ -115,8 +113,67 @@ public class ViolationService {
|
|||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
return new PageImpl<>(dtoList, pageable, violations.getTotalElements());
|
Comparator<FileViolationSummaryDTO> comparator = Comparator.comparing(
|
||||||
|
FileViolationSummaryDTO::getLatestViolationDate,
|
||||||
|
sortDirection.equalsIgnoreCase("desc") ? Comparator.reverseOrder(): Comparator.naturalOrder());
|
||||||
|
allDTOs.sort(comparator);
|
||||||
|
|
||||||
|
int startIdx = page * size;
|
||||||
|
int endIdx = Math.min(startIdx + size, allDTOs.size());
|
||||||
|
List<FileViolationSummaryDTO> pageContent = startIdx < allDTOs.size()
|
||||||
|
? allDTOs.subList(startIdx, endIdx)
|
||||||
|
: Collections.emptyList();
|
||||||
|
|
||||||
|
return new PageImpl<>(pageContent, PageRequest.of(page, size), allDTOs.size());
|
||||||
}
|
}
|
||||||
|
// public Page<FileViolationSummaryDTO> getFileViolationsSummary(Long userId, String fileName, String sortDirection,
|
||||||
|
// Integer page, Integer size, String start, String end) {
|
||||||
|
// List<FileEntity> userFiles = fileName == null || fileName.isEmpty() ? fileEntityService.getAllUserFiles(userId)
|
||||||
|
// : fileEntityService.getAllUserFilesWithFileName(userId, fileName,
|
||||||
|
// List.of(FileStatus.ACTIVE, FileStatus.BLOCKED, FileStatus.MODERATION));
|
||||||
|
//
|
||||||
|
// Sort sort = Sort.by(sortDirection.equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
|
||||||
|
// "createdDate");
|
||||||
|
// Pageable pageable = PageRequest.of(page, size, sort);
|
||||||
|
// Page<Violation> violations;
|
||||||
|
//
|
||||||
|
// if (start == null || end == null) {
|
||||||
|
// violations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
|
||||||
|
// ViolationStatus.NOT_OWNER_FILE.name(),pageable);
|
||||||
|
// } else {
|
||||||
|
// violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween(
|
||||||
|
// userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// Map<String, List<Violation>> violationsByFileId = violations.getContent().stream()
|
||||||
|
// .collect(Collectors.groupingBy(v -> v.getFileEntity().getId()));
|
||||||
|
//
|
||||||
|
// List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream()
|
||||||
|
// .map(entry -> {
|
||||||
|
// List<Violation> fileViolations = entry.getValue();
|
||||||
|
// FileEntity file = fileViolations.get(0).getFileEntity();
|
||||||
|
//
|
||||||
|
// LocalDateTime latestDate = fileViolations.stream()
|
||||||
|
// .map(Violation::getCreatedDate)
|
||||||
|
// .max(LocalDateTime::compareTo)
|
||||||
|
// .orElse(null);
|
||||||
|
//
|
||||||
|
// return FileViolationSummaryDTO.builder()
|
||||||
|
// .fileId(file.getId())
|
||||||
|
// .supportId(file.getSupportId())
|
||||||
|
// .fileName(file.getOriginalFileName())
|
||||||
|
// .fileSize(file.getFileSize())
|
||||||
|
// .mimeType(file.getMimeType())
|
||||||
|
// .status(file.getStatus())
|
||||||
|
// .createdAt(file.getCreatedAt())
|
||||||
|
// .violationCount(fileViolations.size())
|
||||||
|
// .latestViolationDate(latestDate)
|
||||||
|
// .build();
|
||||||
|
// })
|
||||||
|
// .collect(Collectors.toList());
|
||||||
|
//
|
||||||
|
// return new PageImpl<>(dtoList, pageable, violations.getTotalElements());
|
||||||
|
// }
|
||||||
|
|
||||||
public List<FileViolationSummaryDTO> getFileViolationsSummary(Long userId) {
|
public List<FileViolationSummaryDTO> getFileViolationsSummary(Long userId) {
|
||||||
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);
|
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);
|
||||||
|
|||||||
Reference in New Issue
Block a user