refactor: rename store to storeId in API and components for consistency

This commit is contained in:
Dayoung 2025-06-02 10:16:00 +09:00
parent 4ed8a78192
commit 454a8a39a9
6 changed files with 49 additions and 27 deletions

View File

@ -11,7 +11,7 @@ type SearchParams = {
sort?: string | null // 정렬 방식 sort?: string | null // 정렬 방식
offset?: string | null offset?: string | null
role?: string | null // 회원권한한 role?: string | null // 회원권한한
store?: string | null // 판매점ID storeId?: string | null // 판매점ID
builderNo?: string | null // 시공ID builderNo?: string | null // 시공ID
} }
@ -75,11 +75,11 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => {
where.OR = [ where.OR = [
{ {
// 같은 판매점에서 작성한 제출/제출되지 않은 매물 // 같은 판매점에서 작성한 제출/제출되지 않은 매물
AND: [{ STORE_ID: { equals: params.store } }], AND: [{ STORE_ID: { equals: params.storeId } }],
}, },
{ {
// MUSUBI (시공권한 X) 가 ORDER 에 제출한 매물 // MUSUBI (시공권한 X) 가 ORDER 에 제출한 매물
AND: [{ SUBMISSION_TARGET_ID: { equals: params.store } }, { SUBMISSION_STATUS: { equals: true } }], AND: [{ SUBMISSION_TARGET_ID: { equals: params.storeId } }, { SUBMISSION_STATUS: { equals: true } }],
}, },
] ]
break break
@ -89,18 +89,18 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => {
{ {
// MUSUBI (시공권한 X) 같은 판매점에서 작성한 제출/제출되지 않은 매물 // MUSUBI (시공권한 X) 같은 판매점에서 작성한 제출/제출되지 않은 매물
AND: [ AND: [
{ STORE_ID: { equals: params.store } }, { STORE_ID: { equals: params.storeId } },
// { {
// OR: [{ CONSTRUCTION_POINT: { equals: null } }, { CONSTRUCTION_POINT: { equals: '' } }], OR: [{ CONSTRUCTION_POINT_ID: { equals: null } }, { CONSTRUCTION_POINT_ID: { equals: '' } }],
// }, },
], ],
}, },
{ {
// MUSUBI (시공권한 O) 가 MUSUBI 에 제출한 매물 + PARTNER 가 제출한 매물 // MUSUBI (시공권한 O) 가 MUSUBI 에 제출한 매물 + PARTNER 가 제출한 매물
AND: [ AND: [
{ SUBMISSION_TARGET_ID: { equals: params.store } }, { SUBMISSION_TARGET_ID: { equals: params.storeId } },
{ CONSTRUCTION_POINT: { not: null } }, { CONSTRUCTION_POINT_ID: { not: null } },
{ CONSTRUCTION_POINT: { not: '' } }, { CONSTRUCTION_POINT_ID: { not: '' } },
{ SUBMISSION_STATUS: { equals: true } }, { SUBMISSION_STATUS: { equals: true } },
], ],
}, },
@ -109,9 +109,8 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => {
case 'Builder': // MUSUBI (시공권한 O) case 'Builder': // MUSUBI (시공권한 O)
case 'Partner': // PARTNER case 'Partner': // PARTNER
// 시공점이 있고 STORE_ID 가 시공ID와 같은 매물 // 시공ID 같은 매물
where.AND?.push({ where.AND?.push({
// CONSTRUCTION_POINT: { not: null },
CONSTRUCTION_POINT_ID: { equals: params.builderNo }, CONSTRUCTION_POINT_ID: { equals: params.builderNo },
}) })
break break
@ -127,7 +126,7 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => {
}, },
{ {
STORE_ID: { STORE_ID: {
equals: params.store, equals: params.storeId,
}, },
}, },
] ]
@ -154,7 +153,7 @@ export async function GET(request: Request) {
sort: searchParams.get('sort'), sort: searchParams.get('sort'),
offset: searchParams.get('offset'), offset: searchParams.get('offset'),
role: searchParams.get('role'), role: searchParams.get('role'),
store: searchParams.get('store'), //storeId storeId: searchParams.get('storeId'), //storeId
builderNo: searchParams.get('builderNo'), builderNo: searchParams.get('builderNo'),
} }

View File

@ -38,12 +38,12 @@ export default function SurveySaleSubmitPopup() {
const [submitData, setSubmitData] = useState<SubmitFormData>({ const [submitData, setSubmitData] = useState<SubmitFormData>({
saleBase: null, saleBase: null,
targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? '' : '', targetId: '',
targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? '' : '', targetNm: '',
sender: session?.email ?? '', sender: '',
receiver: [], receiver: [],
reference: null, reference: null,
title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')', title: '',
contents: '', contents: '',
}) })
@ -57,6 +57,8 @@ export default function SurveySaleSubmitPopup() {
} }
setSubmitData({ setSubmitData({
...submitData, ...submitData,
targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? '' : '',
targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? '' : '',
sender: session?.email ?? '', sender: session?.email ?? '',
title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')', title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')',
}) })
@ -65,7 +67,7 @@ export default function SurveySaleSubmitPopup() {
const FORM_FIELDS: FormField[] = [ const FORM_FIELDS: FormField[] = [
{ id: 'sender', name: '発送者', required: true }, { id: 'sender', name: '発送者', required: true },
{ id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' }, { id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' },
{ id: 'targetNm', name: '提出販売店', required: session?.role !== 'Admin' }, { id: 'targetNm', name: '提出販売店', required: session?.role === 'Admin_Sub' || session?.role === 'Builder' },
{ id: 'receiver', name: '受信者', required: true }, { id: 'receiver', name: '受信者', required: true },
{ id: 'reference', name: '参考', required: false }, { id: 'reference', name: '参考', required: false },
{ id: 'title', name: 'タイトル', required: true }, { id: 'title', name: 'タイトル', required: true },
@ -75,6 +77,9 @@ export default function SurveySaleSubmitPopup() {
const { submitSurvey, isSubmittingSurvey } = useSurvey(Number(routeId)) const { submitSurvey, isSubmittingSurvey } = useSurvey(Number(routeId))
const handleInputChange = (field: keyof SubmitFormData, value: string) => { const handleInputChange = (field: keyof SubmitFormData, value: string) => {
if (field === 'receiver' && session?.role === 'Partner') {
setSubmitData((prev) => ({ ...prev, targetNm: value }))
}
setSubmitData((prev) => ({ ...prev, [field]: value })) setSubmitData((prev) => ({ ...prev, [field]: value }))
} }
@ -134,9 +139,10 @@ export default function SurveySaleSubmitPopup() {
if (field.id === 'saleBase' && session?.role !== 'Admin') { if (field.id === 'saleBase' && session?.role !== 'Admin') {
return null return null
} }
if (field.id === 'targetNm' && session?.role === 'Admin') { if (field.id === 'targetNm' && (session?.role === 'Admin' || session?.role === 'Partner')) {
return null return null
} }
return ( return (
<div className="data-input-form-bx" key={field.id}> <div className="data-input-form-bx" key={field.id}>
<div className="data-input-form-tit"> <div className="data-input-form-tit">

View File

@ -30,6 +30,8 @@ export default function ButtonForm(props: {
detailInfo: props.data.roof, detailInfo: props.data.roof,
}) })
console.log(session)
console.log(props.data.basic)
// -------------------------------------------------------------- // --------------------------------------------------------------
// 권한 // 권한
@ -49,12 +51,12 @@ export default function ButtonForm(props: {
// 1차 판매점(Order) + 2차 판매점(Musubi) => 같은 판매점 제출권한 // 1차 판매점(Order) + 2차 판매점(Musubi) => 같은 판매점 제출권한
case 'Admin': case 'Admin':
case 'Admin_Sub': case 'Admin_Sub':
setIsSubmiter(session.storeNm === props.data.basic.store && session.builderNo === props.data.basic.constructionPoint) setIsSubmiter(session.storeNm === props.data.basic.store && session.builderNo === props.data.basic.constructionPointId)
break break
// 시공권한 User(Musubi) + Partner => 같은 시공ID 제출권한 // 시공권한 User(Musubi) + Partner => 같은 시공ID 제출권한
case 'Builder': case 'Builder':
case 'Partner': case 'Partner':
setIsSubmiter(session.builderNo === props.data.basic.constructionPoint) setIsSubmiter(session.builderNo === props.data.basic.constructionPointId)
break break
default: default:
setIsSubmiter(false) setIsSubmiter(false)
@ -76,7 +78,6 @@ export default function ButtonForm(props: {
const { deleteSurvey, updateSurvey, isDeletingSurvey, isUpdatingSurvey } = useSurvey(Number(id)) const { deleteSurvey, updateSurvey, isDeletingSurvey, isUpdatingSurvey } = useSurvey(Number(id))
const { validateSurveyDetail, createSurvey, isCreatingSurvey } = useSurvey() const { validateSurveyDetail, createSurvey, isCreatingSurvey } = useSurvey()
const handleSave = (isTemporary: boolean, isSubmitProcess: boolean) => { const handleSave = (isTemporary: boolean, isSubmitProcess: boolean) => {
const emptyField = validateSurveyDetail(props.data.roof) const emptyField = validateSurveyDetail(props.data.roof)
const hasEmptyField = emptyField?.trim() !== '' const hasEmptyField = emptyField?.trim() !== ''

View File

@ -4,12 +4,15 @@ import { useSurvey } from '@/hooks/useSurvey'
import { useParams, useRouter } from 'next/navigation' import { useParams, useRouter } from 'next/navigation'
import { useEffect } from 'react' import { useEffect } from 'react'
import DetailForm from './DetailForm' import DetailForm from './DetailForm'
import { useSessionStore } from '@/store/session'
export default function DataTable() { export default function DataTable() {
const params = useParams() const params = useParams()
const id = params.id const id = params.id
const router = useRouter() const router = useRouter()
const { session } = useSessionStore()
useEffect(() => { useEffect(() => {
if (Number.isNaN(Number(id))) { if (Number.isNaN(Number(id))) {
alert('間違ったアプローチです。') alert('間違ったアプローチです。')
@ -23,6 +26,20 @@ export default function DataTable() {
return <></> return <></>
} }
const submitStatus = () => {
if (session?.role === 'Admin') {
return <div>HWJ</div>
}
if (session?.role === 'Partner') {
return <div>{surveyDetail?.submissionTargetNm}</div>
}
return (
<div>
({surveyDetail?.submissionTargetNm} - {surveyDetail?.submissionTargetId})
</div>
)
}
return ( return (
<> <>
<div className="sale-data-table-wrap"> <div className="sale-data-table-wrap">
@ -56,9 +73,7 @@ export default function DataTable() {
{surveyDetail?.submissionStatus && surveyDetail?.submissionDate ? ( {surveyDetail?.submissionStatus && surveyDetail?.submissionDate ? (
<> <>
<div>{new Date(surveyDetail.submissionDate).toLocaleString()}</div> <div>{new Date(surveyDetail.submissionDate).toLocaleString()}</div>
<div> {submitStatus()}
({surveyDetail.submissionTargetNm} - {surveyDetail.submissionTargetId})
</div>
</> </>
) : ( ) : (
'-' '-'

View File

@ -90,7 +90,7 @@ export function useSurvey(id?: number): {
isMySurvey, isMySurvey,
sort, sort,
offset, offset,
store: session?.storeId, storeId: session?.storeId,
builderNo: session?.builderNo, builderNo: session?.builderNo,
role: session?.role, role: session?.role,
}, },

View File

@ -43,6 +43,7 @@ const initialState: InitialState = {
builderNo: null, builderNo: null,
isLoggedIn: false, isLoggedIn: false,
role: null, role: null,
builderNm: null,
}, },
} }