package com.its.api.its.model.dto.vms;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.its.api.its.model.entity.vms.TbVmsCtlr;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;

/**
 * VMS 교통 정보 표출 일정 DTO Class
 */
@Data
@Builder
@ApiModel("TbVmsMsgDsplSchVmsListDto(VMS 교통 정보 표출 일정 편집 VMS 정보)")
public class TbVmsMsgDsplSchVmsListDto implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
    @JsonProperty("vms_ctlr_nmbr")
    private Long vmsCtlrNmbr;

    @ApiModelProperty("스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄)")  // N VARCHAR(7)
    @JsonProperty("trfc_situ_type_cd")
    private String trfcSituTypeCd;

    @ApiModelProperty("PHASE")  // N NUMBER(2)
    @JsonProperty("phase")
    private Integer phase;

    @ApiModelProperty("VMS FORM ID")  // Y NUMBER(5)
    @JsonProperty("vms_form_id")
    private Integer vmsFormId;

    @ApiModelProperty("표출 시간")  // Y NUMBER(3)
    @JsonProperty("dspl_hh")
    private Integer dsplHh;

    @ApiModelProperty("표출 시작 시간")  // Y VARCHAR(14)
    @JsonProperty("dspl_strt_hh")
    private String dsplStrtHh;

    @ApiModelProperty("표출 종료 시간")  // Y VARCHAR(14)
    @JsonProperty("dspl_end_hh")
    private String dsplEndHh;

    @ApiModelProperty("사용여부(Y:시용,N:사용안함)")  // Y CHAR(1)
    @JsonProperty("use_yn")
    private String useYn;

    /**
     * VMS 편집 목록에 VMS 목록 조회시 사용됨
     */
    @ApiModelProperty("VMS 제어기 ID")  // Y VARCHAR(30)
    @JsonProperty("vms_ctlr_id")
    private String vmsCtlrId;

    @ApiModelProperty("VMS 명")  // Y VARCHAR(40)
    @JsonProperty("vms_nm")
    private String vmsNm;

    @ApiModelProperty("VMS 스케줄 선택")
    @JsonProperty("select_yn")
    private String selectYn;

    public void setVmsInfo(TbVmsCtlr vms, boolean isSelect) {
        if (vms != null) {
            this.vmsCtlrId = vms.getVmsCtlrId();
            this.vmsNm = vms.getVmsNm();
        }
        this.selectYn = isSelect ? "Y" : "N";
    }

}
