package com.eactive.eai.rms.onl.dashboard.modern.dto;

import lombok.Data;

/**
 * 어댑터 상태 요약 정보 DTO
 * 어댑터 유형별 상태 집계 정보를 제공합니다.
 */
@Data
public class AdapterStatusSummaryDTO {
    private String adapterType;     // 어댑터 유형(SNA, Socket, Tuxedo, MQ, HTTP, EJB)

    // 상태별 카운트
    private int errorCount;         // 에러 상태 수
    private int warningCount;       // 부분정상(경고) 상태 수
    private int normalCount;        // 정상 상태 수
    private int inactiveCount;      // 정지 상태 수

    // 전체 상태 (UI 표시용)
    private String overallStatus;   // 전체 상태 (normal, warning, error, inactive)

    public AdapterStatusSummaryDTO(String adapterType) {
        this.adapterType = adapterType;
        this.errorCount = 0;
        this.warningCount = 0;
        this.normalCount = 0;
        this.inactiveCount = 0;
        this.overallStatus = "normal";
    }

    /**
     * 상태 코드에 따라 카운트를 증가시킵니다.
     * @param statusCode 상태 코드 (0: 에러, 1: 부분정상, 2: 정상, 3: 정지)
     */
    public void incrementStatusCount(int statusCode) {
        switch (statusCode) {
            case 0: // 에러
                errorCount++;
                break;
            case 1: // 부분정상
                warningCount++;
                break;
            case 2: // 정상
                normalCount++;
                break;
            case 3: // 정지
                inactiveCount++;
                break;
        }

        // 전체 상태 업데이트
        updateOverallStatus();
    }

    /**
     * 카운트 정보를 기반으로 전체 상태를 업데이트합니다.
     */
    private void updateOverallStatus() {
        if (errorCount > 0) {
            overallStatus = "error";
        } else if (warningCount > 0) {
            overallStatus = "warning";
        } else if (normalCount > 0) {
            overallStatus = "normal";
        } else {
            overallStatus = "inactive";
        }
    }

    /**
     * 전체 어댑터 수를 반환합니다.
     */
    public int getTotalCount() {
        return errorCount + warningCount + normalCount + inactiveCount;
    }
}