package com.its.pis.websocket.C2F;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.its.pis.websocket.C2F.prk_plce_reservation.ResveTime;
import com.its.pis.websocket.C2F.prk_plce_reservation.RsvCtmInfo;
import lombok.*;

/**
 * 주차장 예약 요청(통합시스템 → 개별시스템)
 * message
 * prk_plce_reservation_request_info
 * 주차장 시설 이용 예약 요청
 * Single, Event-Driven
 * 1.2.410.200053.2.00090.0.2.2.4.0.1
 */
@Data
@Builder
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PrkPlceReservationRequestInfo {

    // 이벤트명
    private String event_name;          // 주차정보 교환에 필요한 기본정보 -  prk_plce_reservation_request_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 resve_innb;  // 예약에 대한 고유 식별 번호 (건당 1개 아이디 생성) varchar(32) 주차장 정보관리 확장 ID체계(18)+입차기준일(8)+입차건일련번호(6) (418002243300001002 20200101 000001) 필수

    // 예약자 정보
    private RsvCtmInfo rsv_ctm_info;

    // 주차 예약 시간
    private ResveTime resve_time;

    // 예약코드
    private Integer resve_code;     //  예약상태 코드표 numeric(1, 0)
                                    // 0 : 신규예약
                                    // 1 : 예약변경
                                    // 2 : 취소요청             필수

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