package com.its.pis.websocket.C2F;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.its.pis.websocket.C2F.prk_plce_rl_time.PrkColctDeviceInfo;
import com.its.pis.websocket.C2F.prk_plce_rl_time.RtArInfr;
import com.its.pis.websocket.C2F.prk_plce_rl_time.RtFlrInfr;
import com.its.pis.websocket.C2F.prk_plce_rl_time.RtPrvusePrkarInfo;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 주차장 실시간 정보 응답(개별시스템 → 통합시스템)
 * message
 * prk_plce_rl_time_info
 * 주차장 실시간 정보 응답
 * Single, Event-Driven, Periodic
 * 1.2.410.200053.2. 00090.0.2.2.3.2.2
 */
@Data
@Builder
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PrkPlceRlTimeResponseInfo extends C2FMessagePayload {

    // Token
    private String prk_tkn;
//    // 이벤트명
//    private String event_name;          // 주차정보 교환에 필요한 기본정보 -  prk_plce_rl_time_info(주차장 실시간 정보) 필수
//
//    // 이벤트형식
//    private String event_type;          // 정보 등록/갱신 요청 메시지      -  request/event-driven                 필수
//
//    // 정보생성 시각
//    private String info_create_time;    // 주차정보를 입력하여 생성하는 시각(주차정보 신규 생성 시, 서버에서 정보 갱신 시각 관리, 24시간 표기법 사용)
//                                        // datetime	2020년01월01일10시10분10초(YYYY-MM-DD hh:mm:ss)       필수
//
//    // 주차장 관리번호
//    private String prk_plce_manage_no;  // 주차장 관리 ID 또는 확장 ID (시스템 내 정보교환을 하는데 있어, 필요하다 판단될 경우 관리ID와 확장ID 모두 명기)
//                                        // char(18) 주차장 관리 ID 체계 또는 확장 ID 체계 참고               필수

    ////////////////////////////////////////
    // 데이터 수집 시간
    private String data_colct_time;     // 실시간 주차데이터 수집시간 datetime 2020년01월01일 10시10분10초 (YYYY-MM-DD hh:mm:ss) 필수

    // 주차혼잡 상태
    private Integer parking_cgs_sttus;  // 주차장 상태 코드 (운영사와 협의하에 기준 선정하며, 제시된 기준은 예시임) numeric(1,0)
                                        // 0 : 여유 (점유 50% 미만)
                                        // 1 : 보통 (점유 70% 미만)
                                        // 2 : 혼잡 (점유 90% 미만)
                                        // 3 : 만차 (점유 90% 초과)       선택

    // 총 주차구획 수
    private Integer prk_cmprt_co;           // 주차장의 총 주차 구획 수 numeric(18,0) 150 (면) 필수

    // 총 잔여 주차 구획 수
    private Integer remndr_prk_cmprt_co;    // 주차장의 총 잔여 주차 구획 수 numeric(18,0) 150 (면) 필수

    // 층 구분
    private List<RtFlrInfr> flr_info = new ArrayList<>();

    // 구역 구분
    private List<RtArInfr> ar_info = new ArrayList<>();

    // 전용주차 구역
    private List<RtPrvusePrkarInfo> prvuse_prkar_info = new ArrayList<>();

    // 주차예약 가능 단위 구획 수
    private Integer prk_resve_avail_cmprt_co;    // 현재 주차 예약이 가능한 주차 단위 구획 수 (주차예약 시행 시) numeric(18,0) 5 (면) 선택

    // 주차정보 수집장치 정보
    private List<PrkColctDeviceInfo> prk_colct_device_info = new ArrayList<>();     // 선택

    // 특이사항
    private String partclr_matter;  // 기타 주차장 실시간 정보 관련 varchar(128) - 선택

}
