package com.dbnt.faisp.codeMgt;

import com.dbnt.faisp.codeMgt.model.CodeCatg;
import com.dbnt.faisp.codeMgt.model.CodeMgt;
import com.dbnt.faisp.codeMgt.repository.CodeCatgRepository;
import com.dbnt.faisp.codeMgt.repository.CodeMgtRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
public class CodeMgtService{

  private final CodeMgtRepository codeMgtRepository;
  private final CodeCatgRepository codeCatgRepository;

  @Transactional
  public String saveCode(List<CodeCatg> codeMgtList){
    for(CodeCatg codeCatg: codeMgtList){
      codeCatgRepository.save(codeCatg);
      if (codeCatg.getItemList().size()>0){
        codeItemSave(codeCatg.getItemList());
      }
    }
    return "";
  }

  private void codeItemSave(List<CodeMgt> itemList){
    codeMgtRepository.saveAll(itemList);
  }

  public List<CodeCatg> selectCodeCatgAndChild() {
    List<CodeCatg> codeCatgList = codeCatgRepository.findAll();
    for(CodeCatg codeCatg: codeCatgList){
      codeCatg.setItemList(codeMgtRepository.findByCategoryCdOrderByItemCdAsc(codeCatg.getCategoryCd()));
    }
    return codeCatgList;
  }

  public List<CodeMgt> selectCommonCodeList() {
    return codeMgtRepository.findByUseChkOrderByItemCdAsc("T");
  }
}
