package com.its.op.dto.its.weather;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.apache.commons.lang.StringUtils;

import java.io.Serializable;

/**
 * 대기 오염 실시간 현황 DTO Class
 */
@Data
@Builder
@ApiModel("TbAtmpPltnPnstDto(대기 오염 실시간 현황)")
public class TbAtmpPltnPnstDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("측정소 번호")  // N NUMBER(10)
    @JsonProperty("atmp_sttn_nmbr")
    private Long atmpSttnNmbr;

    @ApiModelProperty("측정 일시")  // Y VARCHAR(14)
    @JsonProperty("msrm_dt")
    private String msrmDt;

    @ApiModelProperty("측정 시스템 명")  // Y VARCHAR(10)
    @JsonProperty("msrm_syst_nm")
    private String msrmSystNm;

    @ApiModelProperty("CO 값")  // Y VARCHAR(10)
    @JsonProperty("co_val")
    private String coVal;

    @ApiModelProperty("SO2 값")  // Y VARCHAR(10)
    @JsonProperty("so2_val")
    private String so2Val;

    @ApiModelProperty("NO2 값")  // Y VARCHAR(10)
    @JsonProperty("no2_val")
    private String no2Val;

    @ApiModelProperty("O3 값")  // Y VARCHAR(10)
    @JsonProperty("o3_val")
    private String o3Val;

    @ApiModelProperty("PM10 값")  // Y VARCHAR(10)
    @JsonProperty("pm10_val")
    private String pm10Val;

    @ApiModelProperty("PM10 24시간 값")  // Y VARCHAR(10)
    @JsonProperty("pm10_24hh_val")
    private String pm1024hhVal;

    @ApiModelProperty("PM25 값")  // Y VARCHAR(10)
    @JsonProperty("pm25_val")
    private String pm25Val;

    @ApiModelProperty("PM25 24시간 값")  // Y VARCHAR(10)
    @JsonProperty("pm25_24hh_val")
    private String pm2524hhVal;

    @ApiModelProperty("통합 대기 값")  // Y VARCHAR(10)
    @JsonProperty("intg_atmp_val")
    private String intgAtmpVal;

    @ApiModelProperty("통합 대기 등급")  // Y VARCHAR(10)
    @JsonProperty("intg_atmp_grad")
    private String intgAtmpGrad;

    @ApiModelProperty("SO2 등급")  // Y VARCHAR(10)
    @JsonProperty("so2_grad")
    private String so2Grad;

    @ApiModelProperty("CO 등급")  // Y VARCHAR(10)
    @JsonProperty("co_grad")
    private String coGrad;

    @ApiModelProperty("O3 등급")  // Y VARCHAR(10)
    @JsonProperty("o3_grad")
    private String o3Grad;

    @ApiModelProperty("NO2 등급")  // Y VARCHAR(10)
    @JsonProperty("no2_grad")
    private String no2Grad;

    @ApiModelProperty("PM10 24시간 등급")  // Y VARCHAR(10)
    @JsonProperty("pm10_24hh_grad")
    private String pm1024hhGrad;

    @ApiModelProperty("PM25 24시간 등급")  // Y VARCHAR(10)
    @JsonProperty("pm25_24hh_grad")
    private String pm2524hhGrad;

    @ApiModelProperty("PM10 1시간 등급")  // Y VARCHAR(10)
    @JsonProperty("pm10_1hh_grad")
    private String pm101hhGrad;

    @ApiModelProperty("PM25 1시간 등급")  // Y VARCHAR(10)
    @JsonProperty("pm25_1hh_grad")
    private String pm251hhGrad;

    @ApiModelProperty("갱신 일시")  // Y VARCHAR(14)
    @JsonProperty("updt_dt")
    private String updtDt;

    // Code Description Field
    @ApiModelProperty("측정소 명")  // N VARCHAR(30)
    @JsonProperty("atmp_sttn_nm")
    private String atmpSttnNm;

    @ApiModelProperty("통합 대기 등급 설명")
    @JsonProperty("intg_atmp_grad_desc")
    private String intgAtmpGradDesc;

    @ApiModelProperty("SO2 등급 설명")
    @JsonProperty("so2_grad_desc")
    private String so2GradDesc;

    @ApiModelProperty("CO 등급 설명")
    @JsonProperty("co_grad_desc")
    private String coGradDesc;

    @ApiModelProperty("O3 등급 설명")
    @JsonProperty("o3_grad_desc")
    private String o3GradDesc;

    @ApiModelProperty("NO2 등급 설명")
    @JsonProperty("no2_grad_desc")
    private String no2GradDesc;

    @ApiModelProperty("PM10 24시간 등급 설명")
    @JsonProperty("pm10_24hh_grad_desc")
    private String pm1024hhGradDesc;

    @ApiModelProperty("PM25 24시간 등급 설명")
    @JsonProperty("pm25_24hh_grad_desc")
    private String pm2524hhGradDesc;

    @ApiModelProperty("PM10 1시간 등급 설명")
    @JsonProperty("pm10_1hh_grad_desc")
    private String pm101hhGradDesc;

    @ApiModelProperty("PM25 1시간 등급 설명")
    @JsonProperty("pm25_1hh_grad_desc")
    private String pm251hhGradDesc;

    public String getGradDesc(String grad) {
        if (StringUtils.equals("1", grad)) return "좋음";
        if (StringUtils.equals("2", grad)) return "보통";
        if (StringUtils.equals("3", grad)) return "나쁨";
        if (StringUtils.equals("4", grad)) return "매우나쁨";
        return "진행중";
    }
    public void setGradDesc() {
        this.intgAtmpGradDesc = getGradDesc(this.intgAtmpGrad);
        this.so2GradDesc = getGradDesc(this.so2Grad);
        this.coGradDesc = getGradDesc(this.coGrad);
        this.o3GradDesc = getGradDesc(this.o3Grad);
        this.no2GradDesc = getGradDesc(this.no2Grad);
        this.pm1024hhGradDesc = getGradDesc(this.pm1024hhGrad);
        this.pm2524hhGradDesc = getGradDesc(this.pm2524hhGrad);
        this.pm101hhGradDesc = getGradDesc(this.pm101hhGrad);
        this.pm251hhGradDesc = getGradDesc(this.pm251hhGrad);
    }
}
