@@ -76,7 +76,7 @@ public class ViolationHandler implements RequestHandler {
|
||||
|
||||
targetFiles = List.of(file);
|
||||
} else {
|
||||
targetFiles = fileEntityService.getAllUserFiles(userId);
|
||||
targetFiles = fileEntityService.getAllUserFilesExcludingBlockedAndRemoved(userId);
|
||||
}
|
||||
|
||||
LocalDateTime startDate = null;
|
||||
|
||||
@@ -23,6 +23,10 @@ public interface FileMonitoringRepository extends JpaRepository<FileMonitoringEn
|
||||
@Query("SELECT fm FROM FileMonitoringEntity fm WHERE fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now")
|
||||
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now);
|
||||
|
||||
@Query("SELECT fm FROM FileMonitoringEntity fm LEFT JOIN FETCH FileEntity f ON f.id = fm.file.id WHERE" +
|
||||
" fm.isActive = true AND fm.monitoringType != 'NONE' AND fm.nextRun <= :now AND f.status IN :statuses")
|
||||
List<FileMonitoringEntity> findReadyForRun(@Param("now") LocalDateTime now, @Param("statuses") List<String> statuses);
|
||||
|
||||
List<FileMonitoringEntity> findByMonitoringTypeAndIsActiveTrue(MonitoringType type);
|
||||
|
||||
@Query("SELECT COUNT(m) FROM FileMonitoringEntity m " +
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import ru.soune.nocopy.entity.file.FileStatus;
|
||||
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
||||
import ru.soune.nocopy.entity.notification.NotificationType;
|
||||
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
||||
@@ -37,7 +38,8 @@ public class MonitoringScheduler {
|
||||
log.info("Starting scheduled monitoring check at 02:01 MSK");
|
||||
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now);
|
||||
List<FileMonitoringEntity> readyForRun = monitoringRepository.findReadyForRun(now,
|
||||
List.of(FileStatus.ACTIVE.name(), FileStatus.MODERATION.name()));
|
||||
Map<Long, List<FileMonitoringEntity>> groupingFilesMonitoring = readyForRun.stream()
|
||||
.collect(Collectors.groupingBy(FileMonitoringEntity::getUserId));
|
||||
|
||||
|
||||
@@ -97,6 +97,24 @@ public class FileEntityService {
|
||||
return allFiles;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<FileEntity> getAllUserFilesExcludingBlockedAndRemoved(Long userId) {
|
||||
User user = userRepository.findById(userId).orElseThrow();
|
||||
List<FileEntity> allFiles = new ArrayList<>();
|
||||
|
||||
if (user.getCompany() != null) {
|
||||
for (Long uId : userRepository.findByCompanyId(user.getCompany().getId()).stream()
|
||||
.map(User::getId)
|
||||
.toList()) {
|
||||
allFiles.addAll(getAllUserFiles(uId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION)));
|
||||
}
|
||||
} else {
|
||||
allFiles = getAllUserFiles(userId, List.of(FileStatus.ACTIVE, FileStatus.MODERATION));
|
||||
}
|
||||
|
||||
return allFiles;
|
||||
}
|
||||
|
||||
public List<FileEntity> getAllUserFiles(Long userId, List<FileStatus> statuses) {
|
||||
User user = userRepository.findById(userId).orElseThrow();
|
||||
List<FileEntity> allFiles = new ArrayList<>();
|
||||
|
||||
Reference in New Issue
Block a user