import axios from 'axios'

/**
 * 가격조사 수정
 * @param {object} params
 * @property {string} params.cateNm - 분야
 * @property {string} params.cateNm - 결제상태
 * @property {string} params.regNm - 담당자
 * @property {string} params.regSdat - 등록기간
 * @returns
 */
export async function updatePrice(params = {}) {
    try {
        const result = await axios.put(`/api/prcs`,params)
        return result
    } catch (e) {
        const serverError = e.response?.data;

        const message = typeof serverError?.body === 'string'
            ? serverError.body
            : 'Unknown error occurred';

        const error = new Error(message); // ✅ 반드시 string만 넣기! 아니면 객체가 문자열로 나옴
        error.code = serverError?.code;
        error.errTime = serverError?.errTime;
        throw error;
    }
}

/**
 * 가격조사 저장
 * @param {object} params
 * @property {string} params.cateNm - 분야
 * @property {string} params.cateNm - 결제상태
 * @property {string} params.regNm - 담당자
 * @property {string} params.regSdat - 등록기간
 * @returns
 */
export async function savePrice(params = {}) {
    try {
        const result = await axios.post(`/api/prcs`,params)
        return result
    } catch (e) {
        const serverError = e.response?.data;

        const message = typeof serverError?.body === 'string'
            ? serverError.body
            : 'Unknown error occurred';

        const error = new Error(message); // ✅ 반드시 string만 넣기! 아니면 객체가 문자열로 나옴
        error.code = serverError?.code;
        error.errTime = serverError?.errTime;
        throw error;
    }
}

/**
 * 가격조사 상세조회
 * @param {object} params
 * @property {string} params.prcsNo - 가격조사번호
 * @returns
 */
export async function getDetailPrcs(params) {
    try {
        const result = await axios.get(`/api/prcs/${params}`)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사서 다운로드
 * @param {object} params
 * @property {string} params.prcsNo - 가격조사번호
 * @property {string} params.fileOrd - 파일순서
 * @returns
 */
export async function getPrcsFileDown(prcsNo, fileOrd) {
    try {
        const result = await axios.get(`/api/prcs/${prcsNo}/${fileOrd}`)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사서 첨부파일 삭제
 * @param {object} params
 * @property {string} params.prcsNo - 가격조사번호
 * @property {string} params.fileOrd - 파일순서
 * @returns
 */
export async function deletePrcsFile(prcsNo, fileOrd) {
    try {
        const result = await axios.delete(`/api/prcs/${prcsNo}/${fileOrd}`)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사_결제관리 조회(페이징)
 * @param {object} params
 * @property {string} params.cateCd - 분야코드
 * @property {string} params.regNm - 담당자
 * @property {string} params.regSdt - 등록시작일
 * @property {string} params.regEdt - 등록종료일
 * @property {string} params.page - 페이지
 * @property {string} params.row - 아이템갯수
 * @returns
 */
export async function getPriceApproList(params = {}) {
    try {
        const result = await axios.get(`/api/prcs/approval/page`,params)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사_계약관리 조회(페이징)
 * @param {object} params
 * @property {string} params.cateCd - 분야코드
 * @property {string} params.regNm - 담당자
 * @property {string} params.regSdt - 등록시작일
 * @property {string} params.regEdt - 등록종료일
 * @property {string} params.page - 페이지
 * @property {string} params.row - 아이템갯수
 * @returns
 */
export async function getPriceContrList(params = {}) {
    try {
        const result = await axios.get(`/api/prcs/contract/page`,params)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사_견적관리 조회(페이징)
 * @param {object} params
 * @property {string} params.prcsNo - 가격조사번호
 * @returns
 */
export async function getPriceExtList(params = {}) {
    try {
        const result = await axios.get(`/api/prcs/external/count`,params)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사_견적관리 조회(페이징)
 * @param {object} params
 * @property {string} params.cateCd - 분야코드
 * @property {string} params.regNm - 담당자
 * @property {string} params.title - 제목
 * @property {string} params.regSdt - 등록시작일
 * @property {string} params.regEdt - 등록종료일
 * @property {string} params.page - 페이지
 * @property {string} params.row - 아이템갯수
 * @returns
 */
export async function getPriceExtCountList(params = {}) {
    try {
        const result = await axios.get(`/api/prcs/external/page`,params)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}
/**
 * 가격조사 조회(페이징)
 * @param {object} params
 * @property {string} params.cateCd - 분야코드
 * @property {string} params.regNm - 담당자
 * @property {string} params.title - 제목
 * @property {string} params.regSdt - 등록시작일
 * @property {string} params.regEdt - 등록종료일
 * @property {string} params.page - 페이지
 * @property {string} params.row - 아이템갯수
 * @returns
 */
export async function getPriceList(params = {}) {
    try {
        const result = await axios.get(`/api/prcs/page`,params)
        return result.data
    } catch (e) {
        throw new Error(e)
    }
}

/**
 * 가격조사 회수 처리
 * @param {object} params
 * @property {string} params.prcsNo - 가격조사번호
 * @returns
 */
export async function updatePrcsNo(param) {
    try {
        const result = await axios.put(`/api/prcs/ret/${param}`)
        return result
    } catch (e) {
        const serverError = e.response?.data;

        const message = typeof serverError?.body === 'string'
            ? serverError.body
            : 'Unknown error occurred';

        const error = new Error(message); // ✅ 반드시 string만 넣기! 아니면 객체가 문자열로 나옴
        error.code = serverError?.code;
        error.errTime = serverError?.errTime;
        throw error;
    }
}

/**
 * 가격조사 완료 처리
 * @param {object} params
 * @property {string} params.prcsNo  - 가격조사 번호

 * @returns
 */
export async function putSurveyPrcsNo(params = {}) {
    try {
        const result = await axios.put(`/api/prcs/survey${params}`)
        return result.data
    } catch (e) {
        const serverError = e.response?.data;

        const message = typeof serverError?.body === 'string'
            ? serverError.body
            : 'Unknown error occurred';

        const error = new Error(message); // ✅ 반드시 string만 넣기! 아니면 객체가 문자열로 나옴
        error.code = serverError?.code;
        error.errTime = serverError?.errTime;
        throw error;
    }
}

