package com.takensoft.common.idgen.context;

import com.takensoft.common.idgen.service.IdgenService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author takensoft
 * @since 2025.01.22
 * @modification
 *     since    |    author    | description
 *  2025.01.22  |  takensoft   | 최초 등록
 *
 * 고유 아이디 생성 클래스
 */
@Configuration
public class ContextIdgen {

    // 파일매니저
    @Bean(name = "fileMngIdgn")
    public IdgenService fileMng() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("FILE_MNG_");
        idgenServiceImpl.setTblNm("FILE_MNG_ID");
        return idgenServiceImpl;
    }

    // 회원정보
    @Bean(name = "mberIdgn")
    public IdgenService mber() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("MBR_");
        idgenServiceImpl.setTblNm("MBR_ID");
        return idgenServiceImpl;
    }

    // 메뉴정보
    @Bean(name = "menuIdgn")
    public IdgenService menu() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("MENU_");
        idgenServiceImpl.setTblNm("MENU_ID");
        return idgenServiceImpl;
    }

    // 메뉴별 만족도 정보
    @Bean(name = "menuDgstfnIdgn")
    public IdgenService menuDgstfn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("MENU_DGSTFN_");
        idgenServiceImpl.setTblNm("MENU_DGSTFN_ID");
        return idgenServiceImpl;
    }

    // 콘텐츠 유형 관리
    @Bean(name = "contsTypeIdgn")
    public IdgenService contsTypeIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("CONTS_");
        idgenServiceImpl.setTblNm("CONTS_ID");
        return idgenServiceImpl;
    }

    // 부서정보
    @Bean(name = "deptIdgn")
    public IdgenService deptIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("DEPT_");
        idgenServiceImpl.setTblNm("DEPT_ID");
        return idgenServiceImpl;
    }

    // 게시판 유형 관리
    @Bean(name = "bbsTypeIdgn")
    public IdgenService bbsTypeIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("BBS_TYPE_");
        idgenServiceImpl.setTblNm("BBS_TYPE_ID");
        return idgenServiceImpl;
    }

    // 게시판 관리
    @Bean(name = "bbsMngIdgn")
    public IdgenService bbsMngIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("BBS_MNG_");
        idgenServiceImpl.setTblNm("BBS_MNG_ID");
        return idgenServiceImpl;
    }

    // 게시판 관리
    @Bean(name = "bbsRouterIdgn")
    public IdgenService bbsRouterIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("BBS_ROUTER_");
        idgenServiceImpl.setTblNm("BBS_ROUTER_ID");
        return idgenServiceImpl;
    }

    // 게시판 내용
    @Bean(name = "bbsIdgn")
    public IdgenService bbsIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("BBS_");
        idgenServiceImpl.setTblNm("BBS_ID");
        return idgenServiceImpl;
    }

    // 댓글
    @Bean(name = "cmntIdgn")
    public IdgenService cmntIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("CMNT_");
        idgenServiceImpl.setTblNm("CMNT_ID");
        return idgenServiceImpl;
    }

    // 금칙어
    @Bean(name = "cntrlNmIdgn")
    public IdgenService cntrlNmIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("CNTRL_NM_");
        idgenServiceImpl.setTblNm("CNTRL_NM_ID");
        return idgenServiceImpl;
    }

    // 팝업 관리
    @Bean(name = "popupIdgn")
    public IdgenService popupIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("POPUP_MNG_");
        idgenServiceImpl.setTblNm("POPUP_MNG_ID");
        return idgenServiceImpl;
    }

    // 중복 로그인 정책
    @Bean(name = "loginPolicyIdgn")
    public IdgenService loginPolicyIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);                 // 총 자릿수
        idgenServiceImpl.setFillChar('0');              // 0으로 채움
        idgenServiceImpl.setPrefix("LOGIN_POL_");       // 접두사
        idgenServiceImpl.setTblNm("LOGIN_POLICY_ID");   // 시퀀스 테이블명
        return idgenServiceImpl;
    }
    // 로그인 방식
    @Bean(name = "loginModeIdgen")
    public IdgenService loginModeIdgen() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("LOGIN_MODE_");
        idgenServiceImpl.setTblNm("LOGIN_MODE_ID");
        return idgenServiceImpl;
    }

    // 컨텍스트 패스 관리
    @Bean(name = "cntxtPthIdgn")
    public IdgenService cntxtPthIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("CNTXT_PTH_");
        idgenServiceImpl.setTblNm("CNTXT_PTH_ID");
        return idgenServiceImpl;
    }

    // 이메일 2차 인증
    @Bean(name = "eml2ndAuthIdgn")
    public IdgenService eml2ndAuthIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("EML_2ND_AUTH_");
        idgenServiceImpl.setTblNm("EML_2ND_AUTH_ID");
        return idgenServiceImpl;
    }

    // 스토리지 방식
    @Bean(name = "storageModeIdgn")
    public IdgenService storageModeIdgn() {
        IdgenService idgenServiceImpl = new IdgenService();
        idgenServiceImpl.setCipers(15);
        idgenServiceImpl.setFillChar('0');
        idgenServiceImpl.setPrefix("STORAGE_MODE_");
        idgenServiceImpl.setTblNm("STORAGE_MODE_ID");
        return idgenServiceImpl;
    }
}