package com.its.op.dto.its.common;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

/**
 *  DTO Class
 */
@Data
@Builder
@ApiModel("DetlTrafRoadDto(도로 소통정보 상세)")
public class DetlTrafRoadDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("도로 ID")
    @JsonProperty("road_id")
    private Long roadId;

    @ApiModelProperty("레벨")
    @JsonProperty("levl")
    private Integer levl;

    @ApiModelProperty("구간 길이")
    @JsonProperty("sect_lngt")
    private Integer sectLngt;

    @ApiModelProperty("시작 노드 ID")
    @JsonProperty("f_node_id")
    private Long   fNodeId;
    @ApiModelProperty("시작 노드 명")
    @JsonProperty("f_node_nm")
    private String fNodeNm;

    @ApiModelProperty("종료 노드 ID")
    @JsonProperty("t_node_id")
    private Long   tNodeId;
    @ApiModelProperty("종료 노드 명")
    @JsonProperty("t_node_nm")
    private String tNodeNm;

    @ApiModelProperty("도로명")  // Y VARCHAR(50)
    @JsonProperty("road_name")
    private String roadName;

    @ApiModelProperty("구간 등급 코드")  // Y VARCHAR(7)
    @JsonProperty("sect_grad_cd")
    private String sectGradCd;

    @ApiModelProperty("현재소통정보")  // Y VARCHAR(50)
    @JsonProperty("traf")
    private DetlTrafRoadInfo traf;

    @ApiModelProperty("소통정보이력(1시간이내)")  // Y VARCHAR(50)
    @JsonProperty("traf_hs")
    private List<DetlTrafRoadInfo> trafHs;

    @ApiModel("DetlTrafRoadInfo(도로 소통정보 상세 정보)")
    @Data
    @ToString
    @Builder
    public static class DetlTrafRoadInfo {
        @ApiModelProperty("가공 일시")  // Y VARCHAR(14)
        @JsonProperty("prcn_dt")
        private String prcnDt;

        @ApiModelProperty("소통 등급 코드")  // Y VARCHAR(7)
        @JsonProperty("cmtr_grad_cd")
        private String cmtrGradCd;

        @ApiModelProperty("속도")  // Y NUMBER(3)
        @JsonProperty("sped")
        private Integer sped;

        @ApiModelProperty("통행 시간")  // Y NUMBER(6)
        @JsonProperty("trvl_hh")
        private Integer trvlHh;

        @ApiModelProperty("패턴 속도")
        @JsonProperty("ptrn_sped")
        private Integer ptrnSped;

        @ApiModelProperty("데이터 개수")
        @JsonProperty("data_num")
        private Integer dataNum;

        @ApiModelProperty("소통 등급 코드 설명")
        @JsonProperty("cmtr_grad_desc")
        private String cmtrGradDesc;

        @ApiModelProperty("순서")
        @JsonProperty("rank")
        private Integer rank;
//
//        @Builder
//        public DetlTrafRoadInfo(String prcnDt, String cmtrGradCd, Integer sped, Integer trvlHh, Integer ptrnSped, Integer dataNum, String cmtrGradDesc, Integer rank) {
//            this.prcnDt = prcnDt;
//            this.cmtrGradCd = cmtrGradCd;
//            this.sped = sped;
//            this.trvlHh = trvlHh;
//            this.ptrnSped = ptrnSped;
//            this.dataNum = dataNum;
//            this.cmtrGradDesc = cmtrGradDesc;
//            this.rank = rank;
//        }
    }

}
