diff --git a/src/components/survey-sale/detail/DetailButton.tsx b/src/components/survey-sale/detail/DetailButton.tsx index a77bc3b..6b45eb1 100644 --- a/src/components/survey-sale/detail/DetailButton.tsx +++ b/src/components/survey-sale/detail/DetailButton.tsx @@ -24,7 +24,9 @@ export default function DetailButton({ isTemporary, surveyId }: { isTemporary: b router.push(`/survey-sale/basic-info?id=${surveyId}&isTemp=${isTemporary}`) } const handleDelete = async () => { - if (confirm('削除しますか?')) { + const result = confirm('削除しますか?') + console.log('🚀 ~ handleDelete ~ result:', result) + if (result) { if (surveyId) { await deleteSurvey() router.push('/survey-sale') diff --git a/src/components/survey-sale/detail/form/BasicForm.tsx b/src/components/survey-sale/detail/form/BasicForm.tsx index 4ef6c68..18bb089 100644 --- a/src/components/survey-sale/detail/form/BasicForm.tsx +++ b/src/components/survey-sale/detail/form/BasicForm.tsx @@ -8,6 +8,7 @@ import { useSurveySaleTabState } from '@/store/surveySaleTabState' import { usePopupController } from '@/store/popupController' import { useAddressStore } from '@/store/addressStore' import { useSessionStore } from '@/store/session' +import { useUserType } from '@/hooks/useUserType' const defaultBasicInfoForm: SurveyBasicRequest = { representative: '', @@ -23,7 +24,7 @@ const defaultBasicInfoForm: SurveyBasicRequest = { submission_date: null, } -const REQUIRED_FIELDS: (keyof SurveyBasicRequest)[] = ['representative', 'store', 'construction_point'] +const REQUIRED_FIELDS: (keyof SurveyBasicRequest)[] = ['representative', 'building_name', 'customer_name'] export default function BasicForm() { const searchParams = useSearchParams() @@ -36,6 +37,8 @@ export default function BasicForm() { const [basicInfoData, setBasicInfoData] = useState(defaultBasicInfoForm) const { addressData } = useAddressStore() + const { userType, store, construction_point } = useUserType() + const { session } = useSessionStore() const popupController = usePopupController() @@ -52,8 +55,14 @@ export default function BasicForm() { address_detail: addressData.address_detail, }) } + if (session?.isLoggedIn) { + setBasicInfoData((prev) => ({ + ...prev, + representative: session?.userNm ?? '', + })) + } setBasicInfoSelected() - }, [surveyDetail, addressData]) + }, [surveyDetail, addressData, session?.isLoggedIn, session?.userNm]) const focusInput = (input: keyof SurveyBasicRequest) => { const inputElement = document.getElementById(input) @@ -64,7 +73,6 @@ export default function BasicForm() { const validateSurvey = (basicInfoData: SurveyBasicRequest) => { const emptyField = REQUIRED_FIELDS.find((field) => !basicInfoData[field]) - if (emptyField) { focusInput(emptyField) return false @@ -109,30 +117,36 @@ export default function BasicForm() { type="text" className="input-frame" id="representative" - value={basicInfoData.representative} + value={session?.userNm ? session?.userNm : basicInfoData.representative} onChange={(e) => handleChange('representative', e.target.value)} /> -
-
販売店
- handleChange('store', e.target.value)} - /> -
-
-
施工店
- handleChange('construction_point', e.target.value)} - /> -
+ {(userType === 'musubi' || userType === 'order' || userType?.includes('musubi')) && ( + <> +
+
販売店
+ handleChange('store', e.target.value)} + /> +
+ + )} + {(userType === 'partner' || userType === 'musubi_con') && ( +
+
施工店
+ handleChange('construction_point', e.target.value)} + /> +
+ )} diff --git a/src/components/survey-sale/list/ListTable.tsx b/src/components/survey-sale/list/ListTable.tsx index e85eda5..ade76f2 100644 --- a/src/components/survey-sale/list/ListTable.tsx +++ b/src/components/survey-sale/list/ListTable.tsx @@ -5,9 +5,8 @@ import { useServey } from '@/hooks/useSurvey' import { useEffect, useState } from 'react' import { useRouter } from 'next/navigation' import SearchForm from './SearchForm' -import { MEMBER_TYPE, useSurveyFilterStore } from '@/store/surveyFilterStore' -// import { useSessionStore } from '@/store/session' -import { dummyUser } from '@/types/Survey' +import { useSurveyFilterStore } from '@/store/surveyFilterStore' +import { UserType } from '@/hooks/useUserType' export default function ListTable() { const router = useRouter() @@ -16,10 +15,7 @@ export default function ListTable() { const [heldSurveyList, setHeldSurveyList] = useState([]) const [hasMore, setHasMore] = useState(false) - const [memberType, setMemberType] = useState('hwj') - - // TODO : 회원 유형 설정 이후 변경 - // const { session } = useSessionStore() + const [memberType, setMemberType] = useState('hwj') useEffect(() => { if (surveyList && surveyList.length > 0) { @@ -33,10 +29,7 @@ export default function ListTable() { } setHasMore(surveyListCount > offset + 10) } - // TODO : 회원 유형 설정 이후 변경 - // if (session?.userId) { - // setMemberType(session.userId) - // } + // 회원 유형 설정 이후 변경 setMemberType('hwj') }, [surveyList, surveyListCount, offset]) diff --git a/src/components/survey-sale/list/SearchForm.tsx b/src/components/survey-sale/list/SearchForm.tsx index c2b6be3..6cd8b57 100644 --- a/src/components/survey-sale/list/SearchForm.tsx +++ b/src/components/survey-sale/list/SearchForm.tsx @@ -1,10 +1,11 @@ 'use client' -import { MEMBER_TYPE, SEARCH_OPTIONS, SEARCH_OPTIONS_ENUM, SEARCH_OPTIONS_PARTNERS, useSurveyFilterStore } from '@/store/surveyFilterStore' +import { SEARCH_OPTIONS, SEARCH_OPTIONS_ENUM, SEARCH_OPTIONS_PARTNERS, useSurveyFilterStore } from '@/store/surveyFilterStore' +import { UserType } from '@/hooks/useUserType' import { useRouter } from 'next/navigation' import { useState } from 'react' -export default function SearchForm({ onItemsInit, memberType }: { onItemsInit: () => void; memberType: MEMBER_TYPE }) { +export default function SearchForm({ onItemsInit, memberType }: { onItemsInit: () => void; memberType: UserType }) { const router = useRouter() const { setSearchOption, setSort, setIsMySurvey, setKeyword, isMySurvey, keyword, searchOption, sort } = useSurveyFilterStore() const [searchKeyword, setSearchKeyword] = useState(keyword) diff --git a/src/hooks/useUserType.ts b/src/hooks/useUserType.ts index 4b6951b..e8a9dcd 100644 --- a/src/hooks/useUserType.ts +++ b/src/hooks/useUserType.ts @@ -1,34 +1,24 @@ -import { dummyUser } from '@/types/Survey' +import { useSessionStore } from '@/store/session' import { useEffect, useState } from 'react' +export type UserType = 'hwj' | 'order' | 'musubi' | 'musubi_con' | 'partner' + +// 로그인 된 회원 유형에 따라 조사 매물 목록 변경됨 export function useUserType() { + const { session } = useSessionStore() + const [userType, setUserType] = useState(null) const [store, setStore] = useState(null) const [construction_point, setConstructionPoint] = useState(null) + // TODO: 회원 유형 설정 useEffect(() => { - if (dummyUser.userType === 'hwj') { - // hwj는 작성된 모든 매물 조회 가능 - setStore(null) - setConstructionPoint(null) - } else if (dummyUser.userType === 'order') { - // order는 같은 판매점의 매물 조회 가능 - setStore(dummyUser.store) - setConstructionPoint(null) - } else if (dummyUser.userType === 'musubi') { - if (dummyUser.construction_point) { - // musubi 시공점 id 존재 시 같은 시공점 매물 조회 가능 - setStore(dummyUser.store) - setConstructionPoint(dummyUser.construction_point) - } else { - // musubi user&admin 같은 판매점 매물 조회 가능 - setStore(dummyUser.store) - setConstructionPoint(null) - } - } else if (dummyUser.userType === 'partner') { - setStore(dummyUser.store) - setConstructionPoint(dummyUser.construction_point) - } - }, []) + if (!session?.isLoggedIn) return + setUserType('musubi_con') + }, [session]) - return { store, construction_point } + return { + userType, + store, + construction_point, + } } diff --git a/src/store/surveyFilterStore.ts b/src/store/surveyFilterStore.ts index 8aecb7e..56414c7 100644 --- a/src/store/surveyFilterStore.ts +++ b/src/store/surveyFilterStore.ts @@ -60,7 +60,6 @@ export const SEARCH_OPTIONS_PARTNERS = [ }, ] -export type MEMBER_TYPE = 'hwj' | 'order' | 'musubi' | 'partner' export type SEARCH_OPTIONS_ENUM = (typeof SEARCH_OPTIONS)[number]['id'] export type SEARCH_OPTIONS_PARTNERS_ENUM = (typeof SEARCH_OPTIONS_PARTNERS)[number]['id'] export type SORT_OPTIONS_ENUM = 'created' | 'updated' diff --git a/src/types/Survey.ts b/src/types/Survey.ts index 9614cfa..1c68c42 100644 --- a/src/types/Survey.ts +++ b/src/types/Survey.ts @@ -115,13 +115,3 @@ export type SurveyDetailRequest = { export type SurveyDetailCoverRequest = { detail_info: SurveyDetailRequest } - -// TODO: 회원 유형 설정 이후 변경 -export const dummyUser = { - id: '1', - userNm: 'testUser', - memberType: 'hwj', - store: '1', - construction_point: '1', - userType: 'hwj', -}