import Image from 'next/image' import { usePopupController } from '@/store/popupController' import { useParams } from 'next/navigation' import { useSurvey } from '@/hooks/useSurvey' import { useEffect, useState } from 'react' import { useSessionStore } from '@/store/session' import { useCommCode } from '@/hooks/useCommCode' import { CommCode } from '@/types/CommCode' // import { sendEmail } from '@/libs/mailer' import { useSpinnerStore } from '@/store/spinnerStore' interface SubmitFormData { saleBase: string | null store: string sender: string receiver: string[] | string reference: string | null title: string contents: string } interface FormField { id: keyof SubmitFormData name: string required: boolean } export default function SurveySaleSubmitPopup() { const popupController = usePopupController() const { session } = useSessionStore() const params = useParams() const routeId = params.id const { setIsShow } = useSpinnerStore() const [commCodeList, setCommCodeList] = useState([]) const { getCommCode } = useCommCode() useEffect(() => { if (session?.isLoggedIn && session?.role === 'Admin') { getCommCode('SALES_OFFICE_CD').then((codes) => { setCommCodeList(codes) }) } }, [session]) const FORM_FIELDS: FormField[] = [ { id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' }, { id: 'store', name: '提出販売店', required: true }, { id: 'sender', name: '発送者', required: true }, { id: 'receiver', name: '受信者', required: true }, { id: 'reference', name: '参考', required: false }, { id: 'title', name: 'タイトル', required: true }, { id: 'contents', name: '内容', required: true }, ] const [submitData, setSubmitData] = useState({ saleBase: null, store: '', sender: session?.email ?? '', receiver: [], reference: null, title: '[HANASYS現地調査] 調査物件が提出.', contents: '', }) const { submitSurvey, isSubmittingSurvey } = useSurvey(Number(routeId)) const handleInputChange = (field: keyof SubmitFormData, value: string) => { setSubmitData((prev) => ({ ...prev, [field]: value })) } const validateData = (data: SubmitFormData): boolean => { const requiredFields = FORM_FIELDS.filter((field) => field.required) for (const field of requiredFields) { if (data[field.id]?.length === 0) { alert(`${field.name}は必須入力項目です。`) const element = document.getElementById(field.id) if (element) { element.focus() } return false } } return true } const handleSubmit = () => { if (validateData(submitData)) { window.neoConfirm('送信しますか? 送信後は変更・修正することはできません。', () => { setIsShow(true) submitSurvey({ targetId: submitData.store }) // sendEmail({ // to: submitData.receiver, // subject: submitData.title, // content: submitData.contents, // }) // .then(() => { if (!isSubmittingSurvey) { popupController.setSurveySaleSubmitPopup(false) } // }) // .catch((error) => { // console.error('Error sending email:', error) // alert('メール送信に失敗しました。') // }) }) } } const handleClose = () => { popupController.setSurveySaleSubmitPopup(false) } const renderFormField = (field: FormField) => { const isReadOnly = false if (field.id === 'saleBase' && session?.role !== 'Admin') { return null } return (
{field.name} {field.required && *}
{field.id === 'contents' ? (