@@ -19,9 +19,6 @@ import ru.soune.nocopy.service.register.AuthService;
|
||||
import ru.soune.nocopy.service.search.GlobalSearchService;
|
||||
import ru.soune.nocopy.service.violation.ViolationService;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
|
||||
@@ -69,29 +69,27 @@ public class ViolationService {
|
||||
return violationRepository.findById(violationId).orElse(null);
|
||||
}
|
||||
|
||||
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)
|
||||
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;
|
||||
|
||||
List<Violation> allViolations;
|
||||
if (start == null || end == null) {
|
||||
violations = violationRepository.findByFileEntityInAndStatusNot( userFiles,
|
||||
ViolationStatus.NOT_OWNER_FILE.name(),pageable);
|
||||
allViolations = violationRepository.findByFileEntityInAndStatusNot(userFiles,
|
||||
ViolationStatus.NOT_OWNER_FILE.name());
|
||||
} else {
|
||||
violations = violationRepository.findByFileEntityInAndStatusNotAndCreatedDateBetween(
|
||||
userFiles, ViolationStatus.NOT_OWNER_FILE.name(), parseDate(start), parseDate(end), pageable);
|
||||
allViolations = violationRepository.findByFileEntityInAndCreatedDateBetweenAndStatusNot(
|
||||
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()));
|
||||
|
||||
List<FileViolationSummaryDTO> dtoList = violationsByFileId.entrySet().stream()
|
||||
List<FileViolationSummaryDTO> allDTOs = violationsByFileId.entrySet().stream()
|
||||
.map(entry -> {
|
||||
List<Violation> fileViolations = entry.getValue();
|
||||
FileEntity file = fileViolations.get(0).getFileEntity();
|
||||
@@ -115,8 +113,67 @@ public class ViolationService {
|
||||
})
|
||||
.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) {
|
||||
List<FileEntity> userFiles = fileEntityService.getAllUserFiles(userId);
|
||||
|
||||
Reference in New Issue
Block a user