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

#ifndef CDSVmsIfscFH
#define CDSVmsIfscFH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <stdio.h>
#include <ADODB.hpp>
#include <DB.hpp>
#include "ITSLibF.h"
#include "ITSDbF.h"
//---------------------------------------------------------------------------


class TIfscTraf
{
public:
    TIfscTraf() {};
    ~TIfscTraf(){};

public:
    String  IFSC_ID;            //NUMBER(10)	N			정보제공구간 ID
    String  PRCN_DT;	    //N	VARCHAR2(14)	Y			가공 일시
    int     SPED;	        //N	NUMBER(3)	    Y	0		속도
    String  CMTR_GRAD_CD;	//N	VARCHAR2(7)	    Y			소통 등급 코드 ==>예는 0,1,2,3으로 들어가네???
    int     TRVL_HH;	    //N	NUMBER(6)	    Y	0		통행 시간
};

//---------------------------------------------------------------------------
class TVmsLinkIfsc
{
public:
    TVmsLinkIfsc();
    ~TVmsLinkIfsc();

public:
    int     VMS_IFSC_ID;        //NUMBER(10)	N			VMS 정보제공구간 ID
    int     ORD;                //NUMBER(3)	Y	0		순서
    String  IFSC_ID;            //NUMBER(10)	N			정보제공구간 ID

    String  IFSC_NM;            //NUMBER(10)	N			정보제공구간 ID
    String  STRT_NM;
    String  END_NM;
    int     SECT_LNGT;
};

//---------------------------------------------------------------------------
class TVmsIfsc
{
public:
    TVmsIfsc();
    ~TVmsIfsc();

public:
    int     VMS_IFSC_ID;        //NUMBER(10)	N			VMS 정보제공구간 ID
    String  VMS_IFSC_NM;        ///VARCHAR2(60)	Y			VMS 정보제공구간 명
    String  DSPL_STRT_NODE_NM;  //VARCHAR2(30)	Y			표출 시작 노드 명
    String  DSPL_END_NODE_NM;   //VARCHAR2(30)	Y			표출 종료 노드 명
    int     DETR_ID;            //NUMBER(10)	Y			우회도로 ID
    String  USE_YN;             //CHAR(1)	    Y			사용 여부
    String  ROAD_NM;            //VARCHAR2(30)	Y			도로명
    String  SPOT_NM;            //VARCHAR2(30)	Y			지점명
    String  AXIS_YN;            //CHAR(1)	    Y	'N'		축정보 생성용
    int     CNGS_SPD;
    String  DEL_YN;
    int     SECT_LNGT;


//1	EDI0	EDI	추가	insert					Y
//2	EDI1	EDI	수정	update					Y
//3	EDI2	EDI	삭제	delete					Y

    int     MIN[3];
    int     MAX[3];

    String  PRCN_DT;	    //N	VARCHAR2(14)	Y			가공 일시
    int     SPED;	        //N	NUMBER(3)	    Y	0		속도
    String  CMTR_GRAD_CD;	//N	VARCHAR2(7)	    Y			소통 등급 코드 ==>예는 0,1,2,3으로 들어가네???
    int     TRVL_HH;	    //N	NUMBER(6)	    Y	0		통행 시간

    void InitTraffic();
    void CalcSectLngt();

public:
    TItsMap<int, TVmsLinkIfsc*>  FLists;

};


//---------------------------------------------------------------------------
class TVmsIfscManager
{
public:
    TVmsIfscManager();
    ~TVmsIfscManager();

private:

public:
    TItsMap<int, TVmsIfsc*>  FLists;
    TItsMap<String, TIfscTraf*>  FIfscLists;

public:
    void InitTraffic();

    bool LoadFromDb(TADOConnection *ADbConn=NULL);
    bool LoadSubFromDb(TADOConnection *ADbConn=NULL);
    bool LoadTraffic(TADOConnection *ADbConn=NULL);
    bool LoadTrafficIfsc(TADOConnection *ADbConn=NULL);

};
//---------------------------------------------------------------------------
extern TVmsIfscManager *VmsIfscManager;
//---------------------------------------------------------------------------

#endif
