package com.takensoft.cms.menu.vo;

import lombok.*;

/**
 * @author  : takensoft
 * @since   : 2024.04.08
 * @modification
 *     since    |    author    | description
 *  2024.04.08  |  takensoft   | 최초 등록
 *  2025.03.13  |    방선주     | 코드 리펙토링
 *  2025.04.23  |    하석형     | 파일명 변경
 *
 * 메뉴별 만족도 관련 VO
 */
@Builder
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MenuDgstfnVO {
    private String menuDgstfnId; // 메뉴별 만족도 아이디
    private String menuId; // 메뉴 아이디
    private String rspns5; // 응답 5(N: 미체크, Y: 체크)
    private String rspns4; // 응답 4(N: 미체크, Y: 체크)
    private String rspns3; // 응답 3(N: 미체크, Y: 체크)
    private String rspns2; // 응답 2(N: 미체크, Y: 체크)
    private String rspns1; // 응답 1(N: 미체크, Y: 체크)
    private String opnn; // 의견
    private String regIp; // 등록 아이피
    private String rgtr; // 등록자
    private String regDt; // 등록일

    private String menuNm; // 메뉴 명
    private String rspnsTotCnt; // 응답 총 개수
    private String rspns5Cnt; // 응답 5 개수
    private String rspns4Cnt; // 응답 4 개수
    private String rspns3Cnt; // 응답 3 개수
    private String rspns2Cnt; // 응답 2 개수
    private String rspns1Cnt; // 응답 1 개수
    private String avrgRspnsScore; // 응답 점수 평균

    // 응답 점수 평균 계산
    public void calculateAverage() {
        try {
            int five = Integer.parseInt(rspns5Cnt);
            int four = Integer.parseInt(rspns4Cnt);
            int three = Integer.parseInt(rspns3Cnt);
            int two = Integer.parseInt(rspns2Cnt);
            int one = Integer.parseInt(rspns1Cnt);

            int totalScore = (five * 5) + (four * 4) + (three * 3) + (two * 2) + (one * 1);
            int totalCount = one + two + three + four + five;

            this.rspnsTotCnt = String.valueOf(totalCount);
            this.avrgRspnsScore = totalCount == 0 ? "0.00" : String.format("%.2f", (double) totalScore / totalCount);
        } catch (Exception e) {
            this.avrgRspnsScore = "0.00";
        }
    }
}