This commit is contained in:
@@ -5,13 +5,19 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import ru.soune.nocopy.dto.monitoring.MonitoringStatusResponse;
|
||||
import ru.soune.nocopy.dto.tarriff.TariffDTO;
|
||||
import ru.soune.nocopy.entity.file.*;
|
||||
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
|
||||
import ru.soune.nocopy.entity.monitoring.MonitoringType;
|
||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||
import ru.soune.nocopy.entity.tarif.TariffType;
|
||||
import ru.soune.nocopy.entity.user.User;
|
||||
import ru.soune.nocopy.exception.UserNotHavePermission;
|
||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||
import ru.soune.nocopy.repository.FileMonitoringRepository;
|
||||
import ru.soune.nocopy.repository.FoundViolationRepository;
|
||||
import ru.soune.nocopy.repository.UserRepository;
|
||||
import ru.soune.nocopy.service.tariff.TariffService;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -27,6 +33,10 @@ public class FileMonitoringService {
|
||||
|
||||
private final FoundViolationRepository violationRepository;
|
||||
|
||||
private final TariffService tariffService;
|
||||
|
||||
private final UserRepository userRepository;
|
||||
|
||||
@Transactional
|
||||
public FileMonitoringEntity setMonitoring(Long userId, String fileId, MonitoringType type) throws FileNotFoundException {
|
||||
FileEntity file = fileRepository.findById(fileId)
|
||||
@@ -82,7 +92,7 @@ public class FileMonitoringService {
|
||||
public MonitoringStatusResponse getMonitoringStatus(String fileId, Long userId) {
|
||||
FileMonitoringEntity monitoring = monitoringRepository.findByFileId(fileId).orElse(null);
|
||||
FileEntity file = fileRepository.findById(fileId).orElseThrow();
|
||||
|
||||
User user = userRepository.findById(userId).orElseThrow();
|
||||
long newViolations = violationRepository.countNewByUserId(userId);
|
||||
|
||||
return MonitoringStatusResponse.builder()
|
||||
@@ -94,7 +104,15 @@ public class FileMonitoringService {
|
||||
.lastRunStatus(monitoring != null ? monitoring.getLastRunStatus() : null)
|
||||
.isActive(monitoring != null && monitoring.isActive())
|
||||
.newViolationsCount(newViolations)
|
||||
.needAddTokens(checkTokensForMonitoring(user, monitoring.getMonitoringType()))
|
||||
.build();
|
||||
}
|
||||
|
||||
public boolean checkTokensForMonitoring(User user, MonitoringType monitoringType) {
|
||||
TariffDTO tariff = tariffService.getTariffByType(TariffType.valueOf(monitoringType.name()));
|
||||
TariffInfo activeTariffInfo = user.getActiveTariffInfo();
|
||||
int currentUserCountTokens = activeTariffInfo.getTokens() + activeTariffInfo.getBoughtTokens();
|
||||
|
||||
return currentUserCountTokens > tariff.getTokens();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user