<?php

class enum
{
    // "ipfs://" 대신 "https://ipfs.io/ipfs/" URL로 등록하는 베이스코인ID
    const IPFS_URL_BASE_COIN_ID = array(3);

    /* link type */
    const LINK_TYPE_BY_SERVER = array(
        'local' => 'http://localhost',
        'dev' => 'http://111.119.240.10',
        'stage' => 'http://119.13.77.133',
        'live' => 'http://189.1.244.155',
    );

    const WALLET_ADMIN_DB_PREFIX = array(
        'local' => 'WALLET-ADMIN-LOCAL',
        'dev' => 'WALLET-ADMIN-DEV',
        'stage' => 'WALLET-ADMIN-STAGE',
        'live' => 'WALLET-ADMIN-LIVE',
    );

    const MARKET_ADMIN_DB_PREFIX = array(
        'local' => 'MARKET-ADMIN-LOCAL',
        'dev' => 'MARKET-ADMIN-DEV',
        'stage' => 'MARKET-ADMIN-STAGE',
        'live' => 'MARKET-ADMIN-LIVE',
    );

    const ADMIN_SUPER_ID = array('onbuff', 'leeseul'); //슈퍼계정

    //non permission
    const AUTH_MENU_PERMISSION_NONE = 0;    // 해당 메뉴에 접근 권한 없음
    const AUTH_MENU_PERMISSION_READ = 1;   // 읽기 권한
    const AUTH_MENU_PERMISSION_WRITE = 2;   // 쓰기 권한(입력/수정)

    // error code
    const COMMON_SUCCESS = 200;                         //성공
    const COMMON_ERROR_UNKNOWN = 400;                   //알 수 없는 에러
    const COMMON_ERROR_NOT_MATCHED_AUTHORITY = 401;     //수정 권한이 없습니다. 

    // const API_RESULT_CODE_SUCCESS = 1;                  // response withJson Success
    const API_RESULT_CODE_ERROR = -99;                  // response withJson Error
    const API_RESULT_CODE_SUCCESS = 0;

    const PERMISSION_ERROR_PATH = '/home/check';        // redirect page for not permission

    // const SESS_EXPIRE_TIME = 1800;          // session expire time (1800 => 30min)
    const SESS_EXPIRE_TIME = 7200;          // session expire time (7200 => 2hour)
    const SESS_TYPE_SESSION_DUPLICATED = 1; // session duplicated
    const SESS_TYPE_SESSION_EXPIRED = 2;    // session expired

    const HTTP_STATUS_UNAUTHORIZED = 401;

    // 코인 전송 내역 - 전송 종류
    const TRANSACT_COINS_TX_TYPE = array(
        1 => 'IN',
        2 => 'OUT',
    );

    // NFT 전송 내역 - 전송 종류
    const TRANSACT_NFTS_TX_TYPE = array(
        1 => 'IN',
        2 => 'IOS',
        4 => '발행',
        5 => '소각',
        6 => '컨트랙트 배포',
    );

    // 코인, NFT 전송 내역 - 전송 상태
    const TRANSACT_TX_STATUS = array(
        1 => '전송중',
        2 => '성공',
        3 => '실패',
    );

    // 코인, NFT 전송 내역 -  외부 전송 여부
    const TRANSACT_ISEXTERNAL = array(
        0 => '미전송',
        1 => '전송',
    );

    // SocialType
    const SOCIAL_TYPE = array(
        1 => 'Google',
        2 => 'Facebook',
        3 => 'InnoAI',
    );

    // NFTStatus
    const NFT_STATUS  = [
        1 => '대기',
        2 => '판매중',
        3 => '사용자소유',
    ];
    
    // EventID
    const EVENT_ID = [
        1 => '재화 증가',
        2 => '재화 감소',
        3 => '포인트->코인 전환',
        4 => '코인->포인트 전환',
        5 => '플랫폼 계정 생성',
        6 => '플랫폼 로그인',
        7 => '게임 계정 생성',
        8 => '게임 로그인',
        9 => '일반 상품 구매',
        10 => '경매 입찰 보증금 납부',
        11 => '경매 입찰 보증금 환급',
        12 => '경매 상품 구매',
        13 => '가스비',
        14 => '에어드랍',
        15 => '에너지 민팅',
        16 => '포인트 자동 충전',
        17 => '베팅',
        18 => '배당금 수령',
        19 => '에너지 보상',
        20 => 'NFT 소각',
        21 => 'NFT 전송',
        22 => 'NFT 발행',
        23 => '컨트랙트 배포',
    ];

    // LogID
    const LOG_ID  = [
        1 => '고객사',
        2 => '전환',
        3 => '외부지갑',
        4 => '인증',
        5 => '마켓',
        6 => '지갑 동기화',
        7 => '운영툴',
        8 => '이벤트',
        9 => '이노 게임',
        10 => 'NFT 합성',
        11 => '이노 월렛',
    ];

    // PorductStatus
    const PRODUCT_STATUS  = [
        1 => '판매준비중',
        2 => '판매중(경매중)',
        3 => '경매종료',
        5 => '판매완료',
        6 => '판매기간만료(경매유찰)',
        7 => '취소',
    ];

    // ProductVisible
    const PRODUCT_VISIBLE = [
        0 => '숨김',
        1 => '노출'
    ];

    const NFTPACK_TRANSFER_SERVER = [
        'local' => ['local', 'dev'],
        'dev' => ['dev', 'stage'],
        'stage' => ['stage', 'live'],
        'live' => ['stage'],
    ];

    const MARKET_DB_PREFIX
     = array(
        'local' => 'INNO-MARKET-V2-LOCAL',
        'dev' => 'INNO-MARKET-V2-DEV',
        'dev-wallet' => 'INNO-MARKET-V2-DEV-WALLET',
        'stage' => 'INNO-MARKET-V2-STAGE',
        'live' => 'INNO-MARKET-V2-LIVE',
    );

    //세션 확인을 path하는 URI
    const IGNORE_SESSION_PATH = array(
        '/management/market/nftpack/recieve',
        '/management/platform/news/recieve',
    );

    // 중복 세션 로그인 제외
    const SESS_DUPLICATE_EXCEPT_IDS = [
        
    ];


    const NFT_PUBLISH_KEY = 'MARKET:NFT-PUBLISH';
    const TOKENURI_PATH = '/shell';

    const NFT_IMAGE_FOLDER = [
        'bg' => [
            'serverPath' => '/public/assets/img/nft/nftbg',
            'webPath' => '/assets/img/nft/nftbg'
        ]
    ];
    
    const TRANSFER_STATUS = [
        1 => '코인 전송 시작',
        2 => '코인 전송 성공',
        3 => '코인 전송 실패',
        4 => 'NFT 전송 시작',
        5 => 'NFT 전송 성공',
        6 => 'NFT 전송 실패',
        7 => 'NFT 전송 재시도',
    ];

    const TRANSFER_TYPE = [
        1 => '입찰 보증금 납부',
        2 => '입찰 보증금 환급',
        3 => '일반 상품 구매',
        4 => '경매 상품 구매',
    ];

    const BID_STATUS = [
        1 => '입찰',
        2 => '낙찰',
        3 => '낙찰포기',
    ];

    const NFT_IMAGE_FILES = [
        'OriginalImage' => [
            'filename'=>'origin.png', //CDN, 로컬합성 둘다 사용
            'sizeW'=>764,
            'sizeH'=>764,
            'savePath'=>'/shell',
        ],
        'MainImage' => [
            'filename'=>'main.png',
            'sizeW'=>536,
            'sizeH'=>536,
            'savePath'=>'/shell',
        ],
        'ThumbnailImage' => [
            'filename'=>'thumb.png',
            'sizeW'=>282,
            'sizeH'=>282,
            'savePath'=>'/shell',
        ],
    ];
    
    const MAINTENANCE_STATUS = [
        0 => '정상',
        1 => '점검 중',
        2 => '서비스 장애',
    ];

    const TX_TYPE = [
        3 => '포인트 -> 토큰 전환',
        4 => '토큰 -> 포인트 전환',
        // 5 => '입찰 보증금 납부',
        // 6 => '입찰 보증금 환급',
        // 7 => '일반 상품 구매',
        // 8 => '경매 상품 구매',
        26 => '토큰 -> 토큰 전환',
        28 => '포인트 -> 포인트 전환',
    ];

    const TX_STSTUS = [
        1 => '거래 시작',
        2 => '수수료 전송 시작',
        3 => '수수료 전송 성공',
        4 => '수수료 전송 실패',
        5 => '법인 지갑에서 토큰 출금 시작',
        6 => '법인 지갑에서 토큰 출금 성공',
        7 => '법인 지갑에서 토큰 출금 실패',
        8 => '법인 지갑으로 입금 시작',
        9 => '법인 지갑으로 입금 성공',
        10 => '법인 지갑으로 입금 실패',
        11 => '동적 NFT 전송 시작',
        12 => '동적 NFT 전송 성공',
        13 => '동적 NFT 전송 실패',
    ];
    
    const COMPLETE_STATUS = [
        0 => '미완료',
        1 => '완료',
    ];

    // 온체인 게임 성공 여부TxStatus
    const ONCHAIN_SUCCESS_STATUS = [
        0 => '실패',
        1 => '성공',
    ];

    // 온체인 게임 종료 방식
    const EXIT_METHOD = [
        1 => 'TimeOut',
        2 => 'Force (API를 통한 유저강제종료)',
        3 => 'End (정상종료)',
    ];

    // 온체인 게임 상태
    const ONCHAIN_GAME_STATUS = [
        0 => 'Connect', // 커넥트 상태
        1 => 'Aiming',  // 에이밍 상태
        2 => 'Shoot',   // 공 날린 상태
        3 => 'Charge',  // 충전 대기 상태
    ];
    
    // 온체인 게임 점검 상태
    const ONCHAIN_MAINTENANCE_STATUS = [
        0 => '점검 해제',
        1 => '점검 중'
    ];

    // SUI 집금 상태
    const SUI_SEND_STATUS = [
        1 => '전송 중',
        2 => '성공',
        3 => '실패'
    ];

    // SUI 전송 상태
    const SUI_RECEIVE_STATUS = [
        0 => '대기',
        1 => '전송 중',
        2 => '성공',
        3 => '실패'
    ];
    
    // 브릿지 서버 점검 상태
    const BRIDGE_MAINTENANCE_STATUS = [
        0 => '점검 해제',
        1 => '점검 중'
    ];
    
    // 브릿지 트랜젝션 종류
    const BRIDGE_TX_TYPE = [
        1 => '집금',
        2 => 'SUI로 전송'
    ];
    
    // 브릿지 트랜젝션 상태
    const BRIDGE_TX_STATUS = [
        1 => '거래 시작',
        2 => '토큰 전송 시작',
        3 => '토큰 전송 성공',
        4 => '토큰 전송 실패'
    ];

    // ONIT 소각 상태
    const ONIT_BURN_STATUS = [
        0 => '준비중',
        1 => '소각중',
        2 => '소각 완료',
    ];

    // 뉴스 게시물 TRANSTER
    const NEWS_TRANSFER_SERVER = [
        'local' => ['dev'],
        'dev' => ['stage'],
        'stage' => ['live'],
        'live' => [''],
    ];

    // 스왑 종류
    const SWAP_TYPE = [
        3 => '포인트 to 토큰',
        4 => '토큰 to 포인트',
        26 => '토큰 to 토큰',
    ];

    // NFT 사전 판매 진행 상태
    const PRESALES_PROGRESS_STATUS = [
        0 => '전체',
        1 => '진행 중',
        2 => '진행 예정',
    ];

    // 활성화 여부
    const IS_ENABLED = [
        0 => '비활성',
        1 => '활성',
    ];

    // NFT 사전 판매 Claim 노출 영역
    const PRESALES_CLAIM_DISPLAYAREA = [
        1 => 'Part 1',
        2 => 'Part 2',
        3 => 'Part 3',
        4 => 'Part 4',
        5 => 'Part 5',
    ];

    // NFT 사전 판매 NFT 보상 Claim 상태
    const PRESALES_CLAIM_STATUS = [
        1 => '대기',
        2 => '처리 시작',
        3 => '처리 완료',
    ];
    // NFT 사전 판매 TxType
    const PRESALES_CLAIM_TX_TYPE = [
        9 => '사전 판매 포인트 구매',
        10 => '사전 판매 NFT 구매',
    ];

    // NFT 사전 판매 TxStatus
    const PRESALES_CLAIM_TX_STATUS = [
        1 => '거래 시작',
        5 => '토큰 전송 시작',
        6 => '토큰 전송 성공',
        7 => '토큰 전송 실패',
        8 => 'NFT 전송 시작',
        9 => 'NFT 전송 성공',
        10 => 'NFT 전송 실패',
        11 => '동적 NFT 전송 시작',
        12 => '동적 NFT 전송 성공',
        13 => '동적 NFT 전송 실패',
    ];

    // NFT 사전 판매 swap TxStatus
    const PRESALES_SWAP_TX_STATUS = [
        1 => '거래 시작',
        2 => '수수료 전송 시작',
        3 => '수수료 전송 성공',
        4 => '수수료 전송 실패',
        5 => '법인 지갑에서 토큰 출금 시작',
        6 => '법인 지갑에서 토큰 출금 성공',
        7 => '법인 지갑에서 토큰 출금 실패',
    ];
    
    // SSRPS 쿠폰 진행 상태
    const SSRPS_COUPON_PROGRESS_STATUS = [
        0 => '전체',
        1 => '진행 중',
        2 => '진행 예정',
    ];

    // SSRPS 소설 종류
    const SSRPS_SOCIAL_TYPE = array(
        1 => 'Google',
        2 => 'Facebook',
        4 => 'Line',
        5 => '텔레그램',
        6 => '지갑',
    );

    // SSRPS 손
    const SSRPS_HAND = array(
        1 => '바위',
        2 => '보',
        3 => '가위',
    );

    // SSRPS 게임 결과
    const SSRPS_GAME_RESULT = array(
        1 => '승리',
        2 => '패배',
    );

    // SSRPS 게임 연속 여부
    const SSRPS_IS_CONTINUOUS = array(
        0 => '멈춤',
        1 => '이어하기',
    );

    // SSRPS 구매 상태
    const SSRPS_PURCHASE_STATUS = array(
        0 => '결제 완료',
        1 => '상품 지급 성공',
        2 => '상품 지급 실패',
    );
    
    // SSRPS 결제 종류
    const SSRPS_PAYMENT_TYPE = array(
        1 => 'USD',
        2 => 'SSRPS Chip',
        3 => '루미웨이브 포인트',
        4 => '무료 보상',
        5 => '카이아 토큰',
    );
    
    // SSRPS 보상 종류
    const SSRPS_REWARD_TYPE = array(
        1 => '포인트',
        3 => 'NFT',
        6 => 'SSRPS Chip',
        7 => 'SSRPS 프리미엄 패스',
    );
    
    // SSRPS 보상 ID
    const SSRPS_REWARD_ID = array(
        1 => 'PointID',
        3 => 'NFTPackID',
        6 => '0',
    );
    
    // SSRPS 보상 값
    const SSRPS_REWARD_VALUE = array(
        1 => '포인트 수량',
        3 => 'NFT ID',
        6 => '칩 수량',
    );

    // SWAP Point To Coin Tier 조건 종류
    const SWAP_TIER_CONDITION_TYPE = array(
        2 => '토큰',
        3 => 'NFT',
    );

    // 페이지 리스트 개수
    const LIST_PAGESIZE = array(
        10,
        20,
        50,
        100,
    );

    // 라그몬마블 리더보드 보상 종류
    const RAGMONMARBLE_LEADERBOARD_REWARD_TYPE = array(
        1 => '포인트',
        2 => '토큰',
    );

    // 라그몬마블 리더보드 집계
    const RAGMONMARBLE_LEADERBOARD_AGGREGATE = array(
        0 => '집계 전',
        1 => '집계 완료',
    );

    // 라그몬마블 리더보드 반복 여부
    const RAGMONMARBLE_LEADERBOARD_ISREPEATED = array(
        0 => '반복 아님',
        1 => '반복',
    );

    // 라그몬마블 리더보드 반복 주간 요일
    const RAGMONMARBLE_LEADERBOARD_REPEATED_WEEK = array(
        1 => '일',
        2 => '월',
        3 => '화',
        4 => '수',
        5 => '목',
        6 => '금',
        7 => '토',
    );

    // 미러 토큰 거래 종류 TxType
    const MIRROR_CLAIM_TX_TYPE = [
        1 => '맡기기',
        2 => '되찾기',
    ];

    // 미러 토큰 거래 상태 TxStatus
    const MIRROR_CLAIM_TX_STATUS = [
        1 => '거래 시작',
        14 => 'LWA 스테이킹 시작',
        15 => 'LWA 스테이킹 성공',
        16 => 'LWA 스테이킹 실패',
        17 => '미러 토큰 전송 시작',
        18 => '미러 토큰 전송 성공',
        19 => '미러 토큰 전송 실패',
    ];

    // USER ACTION LOG
    const EVENT_TYPE_NONE = 100;    //확인
    const EVENT_TYPE_INSERT = 101;  //생성
    const EVENT_TYPE_UPDATE = 102;  //수정
    const EVENT_TYPE_DELETE = 103;  //삭제

    // USER ACTION LOG - API 호출
    const EVENT_TYPE_API_GET = 104;     //조회
    const EVENT_TYPE_API_POST = 105;    //생성
    const EVENT_TYPE_API_PUT = 106;     //수정
    const EVENT_TYPE_API_DELETE = 107;  //삭제
}