package cokr.xit.ens.modules.common.ctgy.nicedici.domain.repository;

import cokr.xit.ens.core.exception.code.EnsErrCd;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;

import java.util.Optional;

import static cokr.xit.ens.modules.common.ctgy.nicedici.domain.QNiceCiMng.niceCiMng;
import static cokr.xit.ens.modules.common.ctgy.nicedici.domain.QNiceJidMng.niceJidMng;

@RequiredArgsConstructor
public class NiceCiMngRepositoryImpl implements NiceCiMngRepositoryCustom {

    private final JPAQueryFactory query;

    @Override
    public Optional<String> findCiByJid(String jid) {

        return Optional.ofNullable(
                query.select(niceCiMng.ci)
                        .from(niceCiMng)
                        .innerJoin(niceCiMng.niceJidMng, niceJidMng)
                        .where(
                                niceJidMng.jid.eq(jid)
                                        .and(niceCiMng.ci.isNotNull())
                                        .and(
                                                niceJidMng.error.errorCode.isEmpty()
                                                        .or(niceJidMng.error.errorCode.eq(EnsErrCd.OK.getCode()))
                                        )
                        )
                        .fetchFirst()
        );
    }

}
