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

#ifndef CDSParkingFH
#define CDSParkingFH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include "cxCustomData.hpp"
#include "ITSLibF.h"
//---------------------------------------------------------------------------

#define USE_PARK_REALx
#define MAX_PARKING_FLOOR   20

/*
*  Parking class
*/
class TItsParking
{
public:
    TItsParking();
    virtual ~TItsParking();
    void Clear();
private:
    bool    FCompleted;
    int     FEditMode;
	int     FGridIndex;

public:

    //주차장 제어기정보
    String  CTLR_MNGM_NMBR;     //	N	VARCHAR2(20)	N			제어기 관리 번호
    String  PRLT_OPER_DVSN_CD;  //	N	VARCHAR2(7)	    Y			주차장 운영 구분 코드
    String  PRLT_TYPE_DVSN_CD;  //	N	VARCHAR2(7)	    Y			주차장 유형 구분 코드
    String  VALD_YN;            //	N	CHAR(1)	        Y	'N'		유효 여부
    String  X_CRDN;             //	N	NUMBER(11,8)	Y			X 좌표
    String  Y_CRDN;             //	N	NUMBER(10,8)	Y			Y 좌표
    String  ISTL_LCTN_ADDR;     //	N	VARCHAR2(200)	Y			설치 위치 주소
    String  TRMN_IP;            //	N	VARCHAR2(20)	Y			단말기 아이피
    String  TRMN_PORT;          //	N	VARCHAR2(5)	    Y			단말기 포트
    String  CTLR_CLCT_CYCL;     //	N	NUMBER(3)	    Y	0		제어기 수집 주기
    String  CTLR_STTS_CYCL;     //	N	NUMBER(3)	    Y	0		제어기 상태 주기
    String  WHOL_NPLS;          //	N	NUMBER(3)	    Y	0		전체 주차면수
    String  DEL_USER_ID;        //	N	VARCHAR2(64)	Y			삭제 사용자 ID
    String  DEL_DT;             //	N	VARCHAR2(14)	Y			삭제 일시
    String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
    String  ADTN_USER_ID;       //	N	VARCHAR2(64)	Y			추가 사용자 ID
    String  ADTN_DT;            //	N	VARCHAR2(14)	Y			추가 일시
    String  CHNG_USER_ID;       //	N	VARCHAR2(64)	Y			변경 사용자 ID
    String  CHNG_DT;            //	N	VARCHAR2(14)	Y			변경 일시
    String  CTLR_MNGM_NM;	    //  N	VARCHAR2(50)	Y			주차장명(20161213 추가)
    String  REAL_DATA_YN;       //	N	CHAR(1)	        Y	'Y'		실시간 정보 제공 여부(20171220 추가)


    //주차장 운영 정보
    //String  CTLR_MNGM_NMBR;     //	N	VARCHAR2(20)	N			제어기 관리 번호
    String  PRLT_MNGM_INTN_NM;  //	N	VARCHAR2(40)	Y			주차장 관리 기관 명
    String  PRLT_MNGM_INTN_TEL; //	N	VARCHAR2(128)	Y			주차장 관리 기관 전화번호
    String  PARK_NDSY_CD;       //	N	VARCHAR2(7)	    Y			주차 부제 코드
    String  PARK_OPER_DAY_CD;   //	N	VARCHAR2(7)	    Y			주차 운영 요일 코드
    String  PARK_WKDY_STRT_HH;  //	N	VARCHAR2(6)	    Y			주차 평일 시작 시간
    String  PARK_WKDY_END_HH;   //	N	VARCHAR2(6)	    N			주차 평일 종료 시간
    String  PARK_LHDY_STRT_HH;  //	N	VARCHAR2(6)	    Y			주차 공휴일 시작 시간
    String  PARK_LHDY_END_HH;   //	N	VARCHAR2(6)	    Y			주차 공휴일 종료 시간
    String  PARK_OPDR_CD;       //	N	VARCHAR2(7)	    Y			주차 개방 코드
    String  PARK_FARE_IMPS_CD;  //	N	VARCHAR2(7)	    Y			주차 요금 부과 코드
    String  PARK_APNT_OFFR_YN;  //	N	CHAR(1)	        Y	'N'		주차 예약 제공 여부

    String MEM_DEL;
    //String DEL_YN;

    int Floors;
    String FLOR_NMBR[MAX_PARKING_FLOOR];
    String FLOR_NM[MAX_PARKING_FLOOR];

    void *FData1;
    void *FData2;

public:
    __property bool   Completed = {read = FCompleted, write = FCompleted};
	__property int    EditMode  = {read = FEditMode,  write = FEditMode };
	__property int    GridIndex = {read = FGridIndex, write = FGridIndex };
};
//---------------------------------------------------------------------------

/*
* Parking Manager
*/
class TItsParkingManager
{
public:
    TItsParkingManager();
    virtual ~TItsParkingManager();

public:
    TItsMap<String, TItsParking*>  FLists;

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

    bool GetNextParkingId(String &ANewId, TADOConnection *ADbConn=NULL);
    bool DeleteParking(TItsParking *AObj, TADOConnection *ADbConn=NULL);
    bool UpdateParking(TItsParking *AObj, TADOConnection *ADbConn=NULL);
    bool InsertParking(TItsParking *AObj, TADOConnection *ADbConn=NULL);

    bool InsertParkingOper(TItsParking *AObj, TADOConnection *ADbConn=NULL);
    bool InsertParkingFloors(TItsParking *AObj, TADOConnection *ADbConn=NULL);
    bool SelParkingFloors(TItsParking *AObj, TADOConnection *ADbConn=NULL);
};
//---------------------------------------------------------------------------
extern TItsParkingManager *ItsParkingManager;
//---------------------------------------------------------------------------

#endif

