//---------------------------------------------------------------------------

#ifndef CDSPrkPlceFH
#define CDSPrkPlceFH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include "ITSLibF.h"
#include "CDSObjectF.h"
//---------------------------------------------------------------------------
#include "CenterCommF.h"
//---------------------------------------------------------------------------

/*
* 주차장 실시간 정보
*/
class TPrkPlceRt
{
public:
    TPrkPlceRt(){};
    virtual ~TPrkPlceRt(){};

public:
    String PRK_PLCE_NMBR;               //	N	NUMBER(10)	    N			주차장 관리 번호
    String DATA_COLCT_TIME;             //	N	VARCHAR2(14)	N			실시간 주차데이터 수집시간 (YYYY-MM-DD hh:mm:ss)
    int    PARKING_CGS_STTUS;           //	N	NUMBER(1)	    Y			주차장 상태 코드 (0 : 여유 (점유 50% 미만), 1 : 보통 (점유 70% 미만), 2 : 혼잡 (점유 90% 미만), 3 : 만차 (점유 90% 초과))
    int    PRK_CMPRT_CO;                //	N	NUMBER(18)	    Y			주차장의 총 주차 구획 수, 150 (면)
    int    REMNDR_PRK_CMPRT_CO;         //	N	NUMBER(18)	    Y			주차장의 총 잔여 주차 구획 수, 150 (면)
    int    PRK_RESVE_AVAIL_CMPRT_CO;    //	N	NUMBER(18)	    Y			현재 주차 예약이 가능한 주차 단위 구획 수 (주차예약 시행 시)
    String PARTCLR_MATTER;              //	N	VARCHAR2(128)	Y			특이사항, 기타 주차장 실시간 정보 관련
};
//---------------------------------------------------------------------------

/*
*  주차장 주차요금
*/
class TPrkPlceOprChrge : public TCDSObject
{
public:
    TPrkPlceOprChrge(){};
    virtual ~TPrkPlceOprChrge(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;                   //	N	NUMBER(10)	    N			주차장 관리 번호
    int    CHRGE;	                        //  N	NUMBER(1)	    N			주차요금 구분 (1-일반요금-필수, 2-정액요금-선택, 3-할증요금-선택, 4-요금할인-선택)
    int    PARKING_CHRGE_BS_TIME;           //	N	NUMBER(4)	    Y			기본주차시간, 120 (2시간, 분단위 표기)
    int    PARKING_CHRGE_BS_CHRGE;          //	N	NUMBER(6)	    Y			기본주차요금, 2000 (원)
    int    PARKING_CHRGE_ADIT_UNIT_TIME;    //	N	NUMBER(4)	    Y			추가단위시간, 60 (1시간, 분단위 표기)
    int    PARKING_CHRGE_ADIT_UNIT_CHRGE;   //	N	NUMBER(6)	    Y			추가단위요금, 1000(원)
};
//---------------------------------------------------------------------------

/*
*  주차장 운영스케쥴
*/
class TPrkPlceOprSched : public TCDSObject
{
public:
    TPrkPlceOprSched(){};
    virtual ~TPrkPlceOprSched(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;           //	N	NUMBER(10)	    N			주차장 관리 번호
    int    SCHED;                   //	N	NUMBER(1)	    N			요일구분(1-일요일, 2-월요일, 3-화요일, 4-수요일, 5-목요일, 6-금요일, 7-토요일, 8-휴일)
    String OPERTN_START_TIME;       //	N	VARCHAR2(8)	    Y			운영시작시간 (08:00:00)
    String OPERTN_END_TIME;         //	N	VARCHAR2(8)	    Y			운영종료시간 (21:00:00)
    int    PARKING_CHRGE_LEVY_AT;   //	N	NUMBER(1)	    Y			요일별 주차요금 부과여부 (0 : 무료, 1 : 유료, 2 : 혼합)
};
//---------------------------------------------------------------------------

/*
*  주차장 운영정보
*/
class TPrkPlceOpr : public TCDSObject
{
public:
    TPrkPlceOpr(){};
    virtual ~TPrkPlceOpr(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;               //	N	NUMBER(10)	    N			주차장 관리 번호
    String PRK_PLCE_OPR_VER;            //	N	VARCHAR2(10)	Y			주차운영 정보버전
    String CMPT_INST_NM;                //	N	VARCHAR2(32)	Y			관할기관명
    String OPER_DEPT_NM;                //	N	VARCHAR2(32)	Y			운영기관 정보 - 운영부서명
    String OPER_PERSON_NM;              //	N	VARCHAR2(10)	Y			운영기관 정보 - 운영기관 담당자
    String OPER_CTT_PC_TEL;             //	N	VARCHAR2(13)	Y			운영기관 정보 - 운영담당자 전화번호
    String OPER_CTT_PC_EMAIL;           //	N	VARCHAR2(50)	Y			운영기관 정보 - 운영담당자 이메일
    int    NO_DRV_DAY_OPERTN_AT;        //	N	NUMBER(1)	    Y			주차 부제 시행여부 (0 : 미시행, 1 : 2부제, 2 : 5부제, 3 : 10부제, 4 : 승용차요일제, 9 : 기타)
    String OPERTN_BS_FREE_TIME;         //	N	VARCHAR2(8)	    Y			기본무료 시간, 주차장 회차 (기본 무료) (00:30:00)
    int    OPN_CODE;                    //	N	NUMBER(1)	    Y			개방코드, 운영시간 외 무료 개방 (0 : 미개방, 1 : 개방)
    int    PARKING_CHRGE_EXCCLC_MTHD;   //	N	NUMBER(1)	    Y			주차요금 정산 방식 (0 : 유인정산, 1 : 무인정산, 2 : 혼합정산, 9 : 기타)
    String PARKING_CHRGE_PYMNT_MN;      //	N	VARCHAR2(8)	    Y			주차요금 지불수단 - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
    int    PARKING_RESVE_OPERTN_AT;     //	N	NUMBER(1)	    Y			주차예약 시행여부 (0 : 미시행, 1 : 시행-주차장, 2 : 시행-주차구역, 3 : 시행-주차면)
    String PARTCLR_MATTER;              //	N	VARCHAR2(128)	Y			특이사항
    String INFO_CREATE_TIME;            //	N	VARCHAR2(14)    Y			주차정보를 입력하여 생성하는 시각, (YYYY-MM-DD hh:mm:ss)

public:
    TItsMap<int, TPrkPlceOprChrge*> FChrges;
    TItsMap<int, TPrkPlceOprSched*> FScheds;
};
//---------------------------------------------------------------------------

/*
*  주차장 전용주차구역정보
*/
class TPrkPlcePrv : public TCDSObject
{
public:
    TPrkPlcePrv(){};
    virtual ~TPrkPlcePrv(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;                   //	N	NUMBER(10)	    N			주차장 관리 번호
    int    VHCTY_AR_SE;                     //	N	NUMBER(1)	    N			전용주차구역 구분 (0: 경차 전용, 1: 친환경차 (전기차), 2: 화물차 전용, 3: 긴급차량 전용, 4: 장애인 전용, 5: 어르신 전용, 6: 여성 전용, 9: 기타)
    int    VHCTY_AR_PRK_CMPRT_CO;           //	N	NUMBER(18)	    Y			전용주차구역별 주차 구획 수, 시설정보+실시간정보
    int    VHCTY_AR_REMNDR_PRK_CMPRT_CO;    //	N	NUMBER(18)	    Y			전용주차구역별 잔여 주차 구획 수, 실시간정보
};
//---------------------------------------------------------------------------

/*
*  주차장 구역 정보
*/
class TPrkPlceAr : public TCDSObject
{
public:
    TPrkPlceAr(){};
    virtual ~TPrkPlceAr(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;           //	N	NUMBER(10)	    N			주차장 관리 번호
    String FLR_NO;                  //	N	VARCHAR2(10)	N			층 번호
    String AR_NO;                   //	N	VARCHAR2(10)	N			구역 일련번호
    int    AR_PRK_CMPRT_CO;         //	N	NUMBER(18)	    Y			구역별 주차 구획 수, 120(면), 시설정보+실시간정보
    int    AR_REMNDR_PRK_CMPRT_CO;  //	N	NUMBER(18)	    Y			구역별 잔여 주차 구획 수, 120(면), 실시간정보

};
//---------------------------------------------------------------------------

/*
*  주차장 층별 수집장치 정보
*/
class TPrkPlceFlrDev : public TCDSObject
{
public:
    TPrkPlceFlrDev(){};
    virtual ~TPrkPlceFlrDev(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;           //	N	NUMBER(10)	    N			주차장 관리 번호
    String FLR_NO;                  //	N	VARCHAR2(10)	N			층 번호
    int    DEVICE_ID;               //	N	VARCHAR2(5)	    N			주차정보수집장치 ID
    int    X_POS;                   //	N	NUMBER(4)	    Y	0		이미지 좌표 X
    int    Y_POS;                   //	N	NUMBER(4)	    Y	0		이미지 좌표 Y

};
//---------------------------------------------------------------------------

/*
*  주차장 층 정보
*/
class TPrkPlceFlr : public TCDSObject
{
public:
    TPrkPlceFlr(){};
    virtual ~TPrkPlceFlr(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;           //	N	NUMBER(10)	    N			주차장 관리 번호
    String FLR_NO;                  //	N	VARCHAR2(10)	N			층 번호
    int    FLR_PRK_CMPRT_CO;        //	N	NUMBER(18)	    Y			층별 주차구획 수, 120(면), 시설정보+ 실시간정보
    int    FLR_REMNDR_PRK_CMPRT_CO; //	N	NUMBER(18)	    Y			층별 잔여 주차구획 수, 120(면), 실시간정보
    String DATA_COLCT_TIME;         //	N	VARCHAR2(14)	Y			실시간 주차데이터 수집시간 (YYYY-MM-DD hh:mm:ss)
    String FLR_NM;                  //	N	VARCHAR2(32)	Y			층 이름
    String FLR_IMAGE_DATA;          //	N	BLOB	        Y			층 이미지 데이터(bitmap)

public:
    TItsMap<String, TPrkPlceAr*> FArs;
    TItsMap<int,    TPrkPlceFlrDev*> FFlrDevs;

};
//---------------------------------------------------------------------------

/*
*  주차정보 수집장치 정보
*/
class TPrkPlceDev : public TCDSObject
{
public:
    TPrkPlceDev(){};
    virtual ~TPrkPlceDev(){};

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    String PRK_PLCE_NMBR;       //	N	NUMBER(10)	    N			주차장 관리 번호
    int    DEVICE_ID;           //	N	VARCHAR2(5)	    N			주차정보수집장치 ID
    int    DEVICE_TYPE;         //	N	NUMBER(1)	    Y			주차정보수집장치 종류 (0 : 영상식, 1 : 지자기, 2 : 레이더, 3 : 루프, 4 : 초음파, 9 : 기타)
    String PRK_UNIT_ID;         //	N	VARCHAR2(10)	Y			주차면 ID, 층번호+구역일련번호 예시) 1FA01 1층 A구역 01번 주차면
    int    TYPED_PARKING_LOTS;  //	N	NUMBER(1)	    Y			주차면 유형 (0 : 일반, 1 : 경차 전용, 2 : 대형(화물)전용, 3 : 긴급차량전용, 4 : 장애인 전용, 5 : 여성 전용, 9 : 기타)
    int    OCCUPATION;          //	N	NUMBER(1)	    Y			주차면 점유여부 (0 : 주차가능 (주차면 비점유), 1 : 주차불가 (주차면 점유))
    int    CONNECTED;           //	N	NUMBER(1)	    Y			통신상태 (0 : 불량, 1 : 정상)

public:
    TItsMap<String, TPrkPlceAr*> FArs;

};
//---------------------------------------------------------------------------

/*
*  주차장 정보
*/
class TPrkPlce : public TCDSObject
{
public:
    TPrkPlce();
    virtual ~TPrkPlce();

public:
#if 0
    String  CTLR_NMBR;          //	N	NUMBER(10)	    N			VMS 제어기 번호
    String  CTLR_ID;            //	N	VARCHAR2(10)	Y			VMS 제어기 ID
    String  NAME;               //	N	VARCHAR2(40)	Y			VMS 명칭
    String  CTLR_IP;            //	N	VARCHAR2(20)	Y			VMS 제어기 아이피
    int     CTLR_PORT;          //	N	NUMBER(5)	    Y	0		VMS 제어기 포트
    int     CTLR_LOCAL_NO;      //	N	NUMBER(5)	    Y	0		VMS 제어기 지역번호
    String  TYPE_CD;            //	N	VARCHAR2(7)	    Y			VMS 유형 코드
    String  ISTL_LCTN_NM;       //	N	VARCHAR2(40)	Y			설치 위치 명
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    double  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    double  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
#endif

    //String PRK_PLCE_NMBR;                   //	N	NUMBER(10)	    N			주차장 관리 번호
    //String PRK_PLCE_MANAGE_NO;              //	N	VARCHAR2(18)	N			주차장 관리 ID
    String PRK_PLCE_STTUS_VER;              //	N	VARCHAR2(10)	Y			주차시설 정보버전
    //String PRK_PLCE_NM;                     //	N	VARCHAR2(32)	Y			주차장 이름
    String VMS_DSPL_NM;                     //	N	VARCHAR2(32)	Y			VMS 표출 주차장 이름
    //String PRK_PLCE_ADRES;                  //	N	VARCHAR2(32)	Y			도로명 주소
    String PRK_PLCE_INSTL_DE;               //	N	VARCHAR2(8)	    Y			설치 주체에 의해 주차장이 설치된 일자 (YYYY-MM-DD)
    String PRK_PLCE_ABL_DE;                 //	N	VARCHAR2(8)	    Y			주차장 폐지된 일자 (YYYY-MM-DD)
    String PRK_PLCE_ENTRC_NM;               //	N	VARCHAR2(32)	Y			주차장 입구위치 (주출입구 기준) - 주차장 입구명
    //String PRK_PLCE_ENTRC_LA;               //	N	VARCHAR2(16)	Y			주차장 입구위치 (주출입구 기준) - 주차장 입구위치 위도(35.879337)
    //String PRK_PLCE_ENTRC_LO;               //	N	VARCHAR2(16)	Y			주차장 입구위치 (주출입구 기준) - 주차장 입구위치 경도(128.628764)
    int    PRK_PLCE_ENTRC_EXTTY;            //	N	NUMBER(1)	    Y			주차장 입출구 형태(0 : 공통출입구, 1 : 출입구 분리, 9 : 기타)
    int    PARKING_TY;                      //	N	NUMBER(1)	    Y			주차형식(0 : 평행주차, 1 : 직각주차, 2 : 60도 대향주차, 3 : 45도 대향주차, 9 : 기타)
    int    PARKING_US;                      //	N	NUMBER(1)	    Y			이용형태(0 : 자주식, 1 : 기계식, 9 : 기타)
    int    AR_LEVEL_SE;                     //	N	NUMBER(1)	    Y			급지구분(0 : 1급지, 1 : 2급지, 2 : 3급지, 3 : 4급지, 4 : 5급지, 9 : 기타)
    String PRK_PLCE_IMAGE_DATA;             //	N	BLOB            Y			주차장 구조 이미지 - 주차장 구조 이미지 데이터
    int    PRK_PLCE_IMAGE_TYPE;             //	N	NUMBER(1)	    Y			주차장 구조 이미지 - 주차장 이미지 유형(0 :bitmap, 1 :gif, 2 :jpg, 3 :png, 9 :기타)
    String PRK_PLCE_IMAGE_DC;               //	N	VARCHAR2(50)	Y			주차장 구조 이미지 - 이미지 파일명 또는 부가설명
    String SYS_NE;                          //	N	VARCHAR2(32)	Y			시스템명
    String PARKING_CNTRL_SYS_INSTL_DE;      //	N	VARCHAR2(8)	    Y			주차관제 시스템 설치일자 (YYYY-MM-DD)
    String RELATION_LAW_AND_ORDINANCES;     //	N	VARCHAR2(50)	Y			관련법령 시스템 운영 및 데이터 수집과 관련된 근거 법령
    String PRK_AVAIL_CARTYPE;               //	N	VARCHAR2(7)	    Y			이용가능 차량유형 - 아래 유형 조합해서 생성됌 - 예시)  승용(중형), SUV 이용가능 시, (0101000) 0: 승용(소형), 1: 승용(중형), 2: 승용(대형), 3: SUV, 4: 승합차, 5: 화물(중형), 6: 화물(대형)
    int    PRK_CMPRT_CO;                    //	N	NUMBER(18)	    Y			주차장 주차구획 - 총 주차구획 수, 주차장의 총 주차 구획 수
    int    COLCT_DEVICE_INSTL_AT;           //	N	NUMBER(1)	    Y			주차구획 단위정보 수집장치 정보 - 주차구획 단위정보 수집장치 설치 여부(0 : 미설치, 1 : 설치)
    int    MASTER_CONTROLLER;               //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 제어기 수량 - Master 제어기
    int    SLAVE_CONTROLLER;                //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 제어기 수량 - Slave 제어기
    int    COLCT_DEVICE_QTY;                //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 설치 수량
    String COLCT_DEVICE_KND;                //	N	VARCHAR2(6)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류 - 아래 유형 조합해서 생성됌 - 예시) 지자기설치 시 (010000), 영상/레이더 혼합 설치시(101000), 0: 영상식, 1: 지자기, 2: 레이더, 3: 루프, 4: 초음파, 9: 기타
    //int    TYPE_IMGAGE;                     //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 영상식
    //int    TYPE_GEOMAGNETIC;                //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 지자기
    //int    TYPE_RADAR;                      //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 레이더
    //int    TYPE_LOOP;                       //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 루프
    //int    TYPE_ULTRASONIC;                 //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 초음파
    //int    TYPE_ETC;                        //	N	NUMBER(18)	    Y			주차구획 단위정보 수집장치 정보 - 주차정보 수집장치 종류별 수량 - 기타
    String COLCT_DEVICE_INSTL_DE;           //	N	VARCHAR2(8)	    Y			주차구획 단위정보 수집장치 설치일자 (YYYY-MM-DD)
    int    CRM_PRV_CCTV_INSTL_AT;           //	N	NUMBER(1)	    Y			방범 CCTV 설치여부 정보 - 방범 CCTV 설치여부 (0 : 미설치, 1 : 설치)
    int    CRM_PRV_CCTV_INSTL_CO;           //	N	NUMBER(18)	    Y			방범 CCTV 설치여부 정보 - 방범 CCTV 설치대수
    String INFO_CREATE_TIME;                //	N	VARCHAR2(14)	Y			주차정보를 입력하여 생성하는 시각, (YYYY-MM-DD hh:mm:ss)
    //String PIS_TYPE;                        //	N	VARCHAR2(5)	    N	'N'		주차정보시스템 구분(N-설치안됌, C2F-지역주차관제시스템, C2C-타주차센터연계주차시스템)
    String  OPR_INFO;
    int     MIN30_FEE;  //	35	N	NUMBER(5)	Y		최초 30분 시간요금
	int     MIN10_FEE;  //	36	N	NUMBER(5)	Y		30분초과 매 10분 요금
	int     DAY_FEE;    //	37	N	NUMBER(10)	Y		1일 주차요금
	int     MON_FEE;    //	38	N	NUMBER(10)	Y		월 정기권 요금


public:
    TPrkPlceOpr *FOPR;
    TItsMap<String, TPrkPlceFlr*>    FFlrs;
    TItsMap<int,    TPrkPlcePrv*>    FPrvs;
    TItsMap<int,    TPrkPlceDev*>    FDevs;

    INT_PARK_STATE   STATE;

public:
    //__property String  PRK_PLCE_NMBR      = { read = CTLR_NMBR,     write = CTLR_NMBR     };
    //__property String  PRK_PLCE_MANAGE_NO = { read = CTLR_ID,       write = CTLR_ID       };
    //__property String  PRK_PLCE_NM        = { read = NAME,          write = NAME          };
    //__property String  PRLT_CTLR_IP       = { read = CTLR_IP,       write = CTLR_IP       };
    //__property int     PRLT_CTLR_PORT     = { read = CTLR_PORT,     write = CTLR_PORT     };
    //__property int     PRLT_CTLR_LOCAL_NO = { read = CTLR_LOCAL_NO, write = CTLR_LOCAL_NO };
    //__property String  PRLT_TYPE_CD       = { read = TYPE_CD,       write = TYPE_CD       };

};
//---------------------------------------------------------------------------

/*
* Prlt Manager
*/
class TPrkPlceManager
{
public:
    TPrkPlceManager();
    virtual ~TPrkPlceManager();

public:
    TItsMap<String, TPrkPlce*>    FLists;

public:
    bool LoadFromDb(TADOConnection *ADbConn=NULL);
    bool LoadStatusFromDb(TADOConnection *ADbConn=NULL);

    bool LoadFromDbOpr(TADOConnection *ADbConn=NULL);
    bool LoadFromDbOpr(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);

    bool LoadFromDbOprChrge(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool LoadFromDbOprSched(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);


    bool LoadFromDbFlr(TADOConnection *ADbConn=NULL);
    bool LoadFromDbFlr(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);

    bool LoadFromDbFlrDev(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool LoadFromDbAr(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool LoadFromDbPrv(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool LoadFromDbDev(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);

    bool GetNextPrkNmbr(int &ANmbr, int &AId, TADOConnection *ADbConn=NULL);

    bool DeletePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool InsertPrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool UpdatePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool MergePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool MergePrkPlceOpr(TPrkPlceOpr *AObj, TADOConnection *ADbConn=NULL);
    bool MergePrkPlcePrv(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
    bool MergeFcltInfo(TPrkPlce *AObj, TADOConnection *ADbConn=NULL);
};
//---------------------------------------------------------------------------
extern TPrkPlceManager *PrkPlceManager;
//---------------------------------------------------------------------------

#endif

