package com.its.pis.websocket.C2F;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.its.pis.websocket.C2F.prk_plce_opr.OperationInfo;
import com.its.pis.websocket.C2F.prk_plce_opr.OpertnSchedule;
import com.its.pis.websocket.C2F.prk_plce_opr.ParkingChargeDetail;
import lombok.*;

/**
 * 주차장 운영정보 오픈포맷 메시지 구성(개별시스템 → 통합시스템)
 * message
 * prk_plce_opr_info
 * 주차장 운영정보메시지
 * Single, Event-Driven
 * 1.2.410.200053.2.00090.0.2.2.2.0.0
 */
@Data
@Builder
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PrkPlceOprInfo extends C2FMessagePayload {

//    // 이벤트명
//    private String event_name;          // 주차정보 교환에 필요한 기본정보 -  prk_plce_opr_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 prk_plce_opr_ver;    // 주차운영 정보버전 varchar(10) 1.1.0          필수

    // 관할기관 명칭
    private String cmpt_inst_nm;        // 주차정보 수집 및  관리․ 연계, 공유하는 기관 명칭 varchar(32) 관할기관명 (OO 광역시청) 필수

    // 운영기관 정보
    private OperationInfo operation_info;

    // 주차 부제 시행여부
    private Integer no_drv_day_opertn_at;   // 주차부제 시행 유형 numeric(1,0)
                                            // 0 : 미시행
                                            // 1 : 2부제
                                            // 2 : 5부제
                                            // 3 : 10부제
                                            // 4 : 승용차요일제
                                            // 9 : 기타                           필수

    // 운영스케쥴
    private OpertnSchedule opertn_schedule;

    // 기본무료 시간
    private String opertn_bs_free_time;     // 주차장 회차 (기본 무료)시간 time 00:30:00 필수

    // 개방코드
    private Integer opn_code;               // 운영시간 외 무료 개방 numeric(1,0)
                                            // 0 : 미개방
                                            // 1 : 개방            선택

    // 주차요금 정산 방식
    private Integer parking_chrge_excclc_mthd;  // 주차요금 정산하는 방식 numeric(1,0)
                                                // 0 : 유인정산
                                                // 1 : 무인정산
                                                // 2 : 혼합정산
                                                // 9 : 기타            선택

    // 주차요금 지불수단
    private String parking_chrge_pymnt_mn;      // 주차요금 지불수단 방식 BIT(8)
                                                // 1 : 현금
                                                // 2 : 신용카드
                                                // 3 : 교통카드
                                                // 4 : 전자지불 (하이패스)
                                                // 5 : 휴대폰소액결제
                                                // 6 : 핀테크 (OO페이)
                                                // 7 : MaaS 통합결제
                                                // 9 : 기타
                                                //    예시)
                                                //    현금/신용카드 혼합결제 시 (11000000),
                                                //    핀테크            결제 시 (00000100)    필수

    // 주차요금
    // TODO
    //private ParkingChargeDetail parking_charge_detail;
    private ParkingChargeDetail parking_chrge_detail;

    // 주차예약 시행여부
    private Integer parking_resve_opertn_at;    // 사전 주차 예약 서비스 시행 여부 numeric(1,0)
                                                // 0 : 미시행
                                                // 1 : 시행-주차장
                                                // 2 : 시행-주차구역
                                                // 3 : 시행-주차면         필수

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

}
