package ru.nbch.credit_tracker.service;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.service.signal.SignalRestService;
import ru.nbch.credit_tracker.utils.CTUtil;

@Slf4j
@Service
public class MonitoringErrorProcesingService {

    private final SignalService signalService;
    private final SignalRestService signalRestService;

    public MonitoringErrorProcesingService(SignalService signalService, SignalRestService signalRestService) {
        this.signalService = signalService;
        this.signalRestService = signalRestService;
    }

    public void findErrors(Integer packageId) {
        UserPackage userPackage = signalService.findPackage(packageId);
        if (userPackage != null) {
            String packCode = userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName();
            log.info("Проверка на ошибки при постановке на мониторинг. packCode={}, packageId={}", packCode, packageId);
            String fileName = signalRestService.getErrorFileName(packageId, packCode);
            if (StringUtils.isNotBlank(fileName)) {
                String filePath = signalRestService.loadErrorFile(packageId, fileName);
                if (StringUtils.isNotBlank(filePath)) {
                    try {
                        signalService.updateSubjectsErrors(filePath, packageId);
                    } catch (Exception e) {
                        log.error("Ошибка при записи сообщений об ошибках в сформированных субъектах для мониторинга. Package_id = {}", packageId, e);
                    }
                    CTUtil.removeFile(filePath);
                }
            }
        }
    }
}
