package com.supervision.service.impl;

import com.supervision.model.DiagnosisPrimary;
import com.supervision.model.Disease;
import com.supervision.service.AskPrimaryService;
import com.supervision.service.DiagnosisPrimaryService;
import com.supervision.service.DiseaseService;
import com.supervision.util.UserUtil;
import com.supervision.vo.ask.DiagnosisPrimaryVO;
import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
public class AskPrimaryServiceImpl implements AskPrimaryService {

    private final DiagnosisPrimaryService diagnosisPrimaryService;

    private final DiseaseService diseaseService;

    @Override
    public List<DiagnosisPrimaryVO> queryAskPrimaryList(String processId) {
        return diagnosisPrimaryService.queryAskPrimaryList(processId);
    }

    @Override
    public List<Disease> queryPrimaryCanChooseList() {
        return diseaseService.list();
    }

    @Override
    public void modifyPrimaryDiseaseInfo(ModifyPrimaryDiseaseInfoReqVO reqVO) {
        diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getPatientDiseaseInfo,reqVO.getPatientDiseaseInfo())
                .eq(DiagnosisPrimary::getId,reqVO.getId()).update();
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void savePrimary(DiagnosisPrimary reqVO) {
        reqVO.setCreateUserId(UserUtil.getUser().getId());
        diagnosisPrimaryService.save(reqVO);
    }

    @Override
    public void deletePrimary(String id) {
        diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getDeleteFlag,1).eq(DiagnosisPrimary::getId,id).update();
    }
}