diff --git a/src/app/api/user/route.ts b/src/app/api/user/route.ts index e1562ac..b637bc0 100644 --- a/src/app/api/user/route.ts +++ b/src/app/api/user/route.ts @@ -27,7 +27,7 @@ export async function POST(request: Request) { const session = await getIronSession(cookieStore, sessionOptions) console.log('start session edit!') session.userNm = user.username! - // session.email = user.email! + session.email = user.email! session.isLoggedIn = true console.log('end session edit!') await session.save() diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1bd8967..2632157 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -18,7 +18,7 @@ interface RootLayoutProps { header: ReactNode footer: ReactNode floatBtn: ReactNode -} +}6 export default async function RootLayout({ children, header, footer, floatBtn }: RootLayoutProps): Promise { return ( diff --git a/src/components/survey-sale/common/NavTab.tsx b/src/components/survey-sale/common/NavTab.tsx index d556e00..4131804 100644 --- a/src/components/survey-sale/common/NavTab.tsx +++ b/src/components/survey-sale/common/NavTab.tsx @@ -3,7 +3,6 @@ import { useSurveySaleTabState } from '@/store/surveySaleTabState' import { usePathname, useRouter, useSearchParams, useParams } from 'next/navigation' import { useEffect } from 'react' -import { usePopupController } from '@/store/popupController' export default function NavTab() { const router = useRouter() @@ -11,6 +10,7 @@ export default function NavTab() { const searchParams = useSearchParams() const id = searchParams.get('id') + const isTemp = searchParams.get('isTemp') const params = useParams() const detailId = params.id @@ -40,6 +40,10 @@ export default function NavTab() { const handleRoofInfoClick = () => { if (id) { + if (isTemp === 'true') { + alert('基本情報が一時保存された状態です。') + return + } router.push(`/survey-sale/roof-info?id=${id}`) return } @@ -48,8 +52,7 @@ export default function NavTab() { return } if (pathname === '/survey-sale/basic-info') { - // TODO: 팝업 추가 - alert('Save essential information first') + alert('基本情報を先に保存してください。') return null } } diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx index f4ae0b8..6446be7 100644 --- a/src/components/survey-sale/detail/DataTable.tsx +++ b/src/components/survey-sale/detail/DataTable.tsx @@ -16,12 +16,12 @@ export default function DataTable() { const tab = searchParams.get('tab') const { surveyDetail, isLoadingSurveyDetail } = useServey(Number(id)) - const [isTemporary, setIsTemporary] = useState(false) + const [isTemporary, setIsTemporary] = useState(true) const { setBasicInfoSelected, setRoofInfoSelected } = useSurveySaleTabState() useEffect(() => { - if (!surveyDetail?.representative || !surveyDetail?.store || !surveyDetail?.construction_point) { - setIsTemporary(true) + if (surveyDetail?.representative && surveyDetail?.store && surveyDetail?.construction_point) { + setIsTemporary(false) } if (tab === 'roof-info') { setRoofInfoSelected() @@ -66,8 +66,9 @@ export default function DataTable() { {surveyDetail?.submission_status && surveyDetail?.submission_date ? ( <> + {/* TODO: 제출한 판매점 ID 추가 필요 */}
{new Date(surveyDetail.submission_date).toLocaleString()}
-
제출한 판매점 ID 추가 필요
+
販売店 ID...
) : ( '-' diff --git a/src/components/survey-sale/detail/DetailButton.tsx b/src/components/survey-sale/detail/DetailButton.tsx index 94f34c5..a77bc3b 100644 --- a/src/components/survey-sale/detail/DetailButton.tsx +++ b/src/components/survey-sale/detail/DetailButton.tsx @@ -2,29 +2,29 @@ import { useRouter } from 'next/navigation' import { useServey } from '@/hooks/useSurvey' -export default function DetailButton({ isTemporary, surveyId }: { isTemporary: boolean, surveyId: number }) { +export default function DetailButton({ isTemporary, surveyId }: { isTemporary: boolean; surveyId: number }) { const router = useRouter() const { submitSurvey, deleteSurvey } = useServey(surveyId) const handleSubmit = async () => { if (isTemporary) { - alert('SAVE FIRST') + alert('一時保存されたデータは提出できません。') return } - if (confirm('submit?')) { + if (confirm('提出しますか??')) { if (surveyId) { // TODO: 제출 페이지 추가 - alert('SUBMIT POPUP') + alert('SUBMIT POPUP!!!!!!!!!!!') await submitSurvey() } } } const handleUpdate = () => { - router.push(`/survey-sale/basic-info?id=${surveyId}`) + router.push(`/survey-sale/basic-info?id=${surveyId}&isTemp=${isTemporary}`) } const handleDelete = async () => { - if (confirm('delete?')) { + if (confirm('削除しますか?')) { 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 e062b65..4ef6c68 100644 --- a/src/components/survey-sale/detail/form/BasicForm.tsx +++ b/src/components/survey-sale/detail/form/BasicForm.tsx @@ -7,6 +7,7 @@ import { useState, useEffect } from 'react' import { useSurveySaleTabState } from '@/store/surveySaleTabState' import { usePopupController } from '@/store/popupController' import { useAddressStore } from '@/store/addressStore' +import { useSessionStore } from '@/store/session' const defaultBasicInfoForm: SurveyBasicRequest = { representative: '', @@ -78,16 +79,17 @@ export default function BasicForm() { const handleSave = async (isTemporary: boolean) => { if (id) { updateSurvey(basicInfoData) + alert('保存しました。') router.push(`/survey-sale/${id}?tab=basic-info`) } if (isTemporary) { const saveId = await createSurvey(basicInfoData) - alert('save success temporary id: ' + saveId) + alert('一時保存されました。') router.push(`/survey-sale/${saveId}?tab=basic-info`) } else { if (validateSurvey(basicInfoData)) { const saveId = await createSurvey(basicInfoData) - alert('save success id: ' + saveId) + alert('保存しました。 登録番号: ' + saveId) router.push(`/survey-sale/${saveId}?tab=basic-info`) } } @@ -109,7 +111,6 @@ export default function BasicForm() { id="representative" value={basicInfoData.representative} onChange={(e) => handleChange('representative', e.target.value)} - required />
@@ -120,7 +121,6 @@ export default function BasicForm() { id="store" value={basicInfoData.store ?? ''} onChange={(e) => handleChange('store', e.target.value)} - required />
@@ -131,7 +131,6 @@ export default function BasicForm() { id="construction_point" value={basicInfoData.construction_point ?? ''} onChange={(e) => handleChange('construction_point', e.target.value)} - required />
diff --git a/src/components/survey-sale/detail/form/RoofInfoForm.tsx b/src/components/survey-sale/detail/form/RoofInfoForm.tsx index 7781b30..173c18a 100644 --- a/src/components/survey-sale/detail/form/RoofInfoForm.tsx +++ b/src/components/survey-sale/detail/form/RoofInfoForm.tsx @@ -73,8 +73,8 @@ export default function RoofInfoForm() { const handleNumberInput = (key: keyof SurveyDetailRequest, value: number | string) => { if (key === 'roof_slope' || key === 'open_field_plate_thickness') { const stringValue = value.toString() - if (stringValue.length > 4) { - alert('over db size') + if (stringValue.length > 5) { + alert('保存できるサイズを超えました。') return } if (stringValue.includes('.')) { @@ -118,17 +118,18 @@ export default function RoofInfoForm() { surveyId: Number(id), surveyDetail: updatedBasicInfoData, }) + alert('調査物件を保存しました。') } catch (error) { + alert(error) throw new Error('failed to create survey detail: ' + error) } - alert('created successfully') router.push(`/survey-sale`) } else { - alert(emptyField + ' is required') + alert(emptyField + ' は必須項目です。') focusOnInput(emptyField) } } else { - alert('save essential information first') + alert('基本情報を作成した後、屋根情報を作成することができます。') } } const focusOnInput = (field: string) => { diff --git a/src/components/survey-sale/detail/form/SelectBoxEtc.tsx b/src/components/survey-sale/detail/form/SelectBoxEtc.tsx index 63b01ca..d1f1950 100644 --- a/src/components/survey-sale/detail/form/SelectBoxEtc.tsx +++ b/src/components/survey-sale/detail/form/SelectBoxEtc.tsx @@ -215,16 +215,10 @@ export default function SelectBoxForm({ name={column} id={column} onChange={handleSelectChange} - value={ - detailInfoData[column] - ? detailInfoData[column] - : detailInfoData[`${column}_etc`] - ? 'etc' - : '' - } + value={detailInfoData[column] ? detailInfoData[column] : detailInfoData[`${column}_etc`] ? 'etc' : ''} > {selectBoxOptions[column].map((option) => (