fix: change submit data set logic

- 제출 폼 데이터 삽입 안되는 오류 해결
- api error 메세지 설정
- api 응답 객체 변경
This commit is contained in:
Dayoung 2025-06-17 13:20:18 +09:00
parent e806358d0e
commit 17d306bb11
5 changed files with 39 additions and 47 deletions

View File

@ -1,13 +1,8 @@
import { prisma } from '@/libs/prisma' import { prisma } from '@/libs/prisma'
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
import { loggerWrapper } from '@/libs/api-wrapper' import { loggerWrapper } from '@/libs/api-wrapper'
import { SubmitTargetResponse } from '@/types/Survey'
type AdminSubPerson = {
storeId: string
userId: string
eMail: string
authority: string
}
// 2차점이 자신에게 매핑 된 1차 판매점과 관리자 정보 조회 // 2차점이 자신에게 매핑 된 1차 판매점과 관리자 정보 조회
async function getSubMissionAdminSub(request: NextRequest): Promise<NextResponse> { async function getSubMissionAdminSub(request: NextRequest): Promise<NextResponse> {
try { try {
@ -33,12 +28,11 @@ async function getSubMissionAdminSub(request: NextRequest): Promise<NextResponse
AND MCS.DEL_YN = 'N'; AND MCS.DEL_YN = 'N';
CLOSE SYMMETRIC KEY SYMMETRICKEY; CLOSE SYMMETRIC KEY SYMMETRICKEY;
` `
const suitable: AdminSubPerson[] = await prisma.$queryRawUnsafe(query) const data: SubmitTargetResponse[] = await prisma.$queryRawUnsafe(query)
return NextResponse.json(data)
return NextResponse.json({ message: 'Hello, world!' })
} catch (error) { } catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error) console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 }) return NextResponse.json({ error: 'データの取得に失敗しました。' }, { status: 500 })
} }
} }

View File

@ -37,12 +37,11 @@ async function getSubmissionAdmin(request: NextRequest): Promise<NextResponse> {
; ;
CLOSE SYMMETRIC KEY SYMMETRICKEY; CLOSE SYMMETRIC KEY SYMMETRICKEY;
` `
const suitable: SuperPerson[] = await prisma.$queryRawUnsafe(query) const data: SuperPerson[] = await prisma.$queryRawUnsafe(query)
return NextResponse.json(data)
return NextResponse.json({ message: 'Hello, world!' })
} catch (error) { } catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error) console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 }) return NextResponse.json({ error: 'データの取得に失敗しました。' }, { status: 500 })
} }
} }

View File

@ -3,13 +3,6 @@ import { SubmitTargetResponse } from '@/types/Survey'
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
import { loggerWrapper } from '@/libs/api-wrapper' import { loggerWrapper } from '@/libs/api-wrapper'
type BuilderPerson = {
agencyStoreId: string
userId: string
eMail: string
userAuthCd: string
}
// 2차점의 시공권한 user가 해당 판매점의 관리자 정보 조회 // 2차점의 시공권한 user가 해당 판매점의 관리자 정보 조회
// N == 일반유저, S == 수퍼유저, B == 시공권한유저 // N == 일반유저, S == 수퍼유저, B == 시공권한유저
async function getSubmissionBuilder(request: NextRequest): Promise<NextResponse> { async function getSubmissionBuilder(request: NextRequest): Promise<NextResponse> {
@ -37,14 +30,11 @@ async function getSubmissionBuilder(request: NextRequest): Promise<NextResponse>
AND MCAS.DEL_YN = 'N'; AND MCAS.DEL_YN = 'N';
CLOSE SYMMETRIC KEY SYMMETRICKEY; CLOSE SYMMETRIC KEY SYMMETRICKEY;
` `
// const suitable: BuilderPerson[] = await prisma.$queryRawUnsafe(query)
// return NextResponse.json({ message: 'Hello, world!' })
const data: SubmitTargetResponse[] = await prisma.$queryRawUnsafe(query) const data: SubmitTargetResponse[] = await prisma.$queryRawUnsafe(query)
return NextResponse.json(data) return NextResponse.json(data)
} catch (error) { } catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error) console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 }) return NextResponse.json({ error: 'データの取得に失敗しました。' }, { status: 500 })
} }
} }

View File

@ -30,12 +30,11 @@ async function getSubmissionSuper(request: NextRequest): Promise<NextResponse> {
AND MCSA.DEL_YN = 'N'; AND MCSA.DEL_YN = 'N';
CLOSE SYMMETRIC KEY SYMMETRICKEY; CLOSE SYMMETRIC KEY SYMMETRICKEY;
` `
const suitable: SuperPerson[] = await prisma.$queryRawUnsafe(query) const data: SuperPerson[] = await prisma.$queryRawUnsafe(query)
return NextResponse.json(data)
return NextResponse.json({ message: 'Hello, world!' })
} catch (error) { } catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error) console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error);
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 }) return NextResponse.json({ error: 'データの取得に失敗しました。' }, { status: 500 });
} }
} }

View File

@ -48,34 +48,43 @@ export default function SurveySaleSubmitPopup() {
}) })
const [commCodeList, setCommCodeList] = useState<CommCode[]>([]) const [commCodeList, setCommCodeList] = useState<CommCode[]>([])
/** 제출 타겟 데이터 조회 및 제출 폼 데이터 삽입 */
useEffect(() => { useEffect(() => {
if (!session?.isLoggedIn || !surveyDetail?.id) return if (!session?.isLoggedIn || !surveyDetail?.id) return
const baseUpdate = {
sender: session?.email ?? '',
title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')',
}
if (session?.role === 'Admin') { if (session?.role === 'Admin') {
getCommCode('SALES_OFFICE_CD').then((codes) => { getCommCode('SALES_OFFICE_CD').then((codes) => {
setCommCodeList(codes) setCommCodeList(codes)
}) })
setSubmitData((prev) => ({
...prev,
...baseUpdate,
}))
} else if (session?.role === 'Builder' || session?.role === 'Admin_Sub') { } else if (session?.role === 'Builder' || session?.role === 'Admin_Sub') {
getSubmitTarget({ storeId: surveyDetail?.storeId ?? '', role: session?.role ?? '' }).then((data) => { getSubmitTarget({ storeId: surveyDetail?.storeId ?? '', role: session?.role ?? '' }).then((data) => {
if (data) { if (!data) return
setSubmitData({ if (data && data.length > 0) {
...submitData, const updateData: Partial<SubmitFormData> = {
targetId: data[0].targetStoreId, sender: session?.email ?? '',
targetNm: data[0].targetStoreNm, title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')',
}) targetId: data[0]?.targetStoreId ?? '',
data.length > 1 && targetNm: data[0]?.targetStoreNm ?? '',
setSubmitData({ receiver: data.filter((item) => item.auth === 'S').map((item) => item.repUserEmail),
...submitData, reference: data.filter((item) => item.auth === 'N').map((item) => item.repUserEmail),
receiver: data.filter((item) => item.auth === 'S').map((item) => item.repUserEmail), saleBase: null,
reference: data.filter((item) => item.auth === 'N').map((item) => item.repUserEmail), contents: '',
}) }
setSubmitData((prev) => ({
...prev,
...updateData,
}))
} }
}) })
} }
setSubmitData({
...submitData,
sender: session?.email ?? '',
title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')',
})
}, [session, surveyDetail]) }, [session, surveyDetail])
const FORM_FIELDS: FormField[] = [ const FORM_FIELDS: FormField[] = [
@ -118,6 +127,7 @@ export default function SurveySaleSubmitPopup() {
setIsShow(true) setIsShow(true)
sendEmail({ sendEmail({
to: submitData.receiver, to: submitData.receiver,
cc: submitData.reference ?? '',
subject: submitData.title, subject: submitData.title,
content: contentsRef.current?.innerHTML ?? '', content: contentsRef.current?.innerHTML ?? '',
}) })