import odooApi from '@/core/api/odooApi' import HookFormSelect from '@/core/components/elements/Select/HookFormSelect' import cityApi from '@/lib/address/api/cityApi' import { yupResolver } from '@hookform/resolvers/yup' import React, { useEffect, useRef, useState } from 'react' import ReCAPTCHA from 'react-google-recaptcha' import { Controller, useForm } from 'react-hook-form' import { toast } from 'react-hot-toast' import * as Yup from 'yup' import createLeadApi from '../api/createLeadApi' import getFileBase64 from '@/core/utils/getFileBase64' import PageContent from '@/lib/content/components/PageContent' const RequestForQuotation = () => { const { register, handleSubmit, formState: { errors }, control, reset } = useForm({ resolver: yupResolver(validationSchema), defaultValues }) const [cities, setCities] = useState([]) const quotationFileRef = useRef(null) const recaptchaRef = useRef(null) useEffect(() => { const loadCities = async () => { let dataCities = await cityApi() dataCities = dataCities.map((obj) => ({ value: obj.name, label: obj.name })) setCities(dataCities) } loadCities() }, []) const onSubmitHandler = async (values) => { const recaptchaValue = recaptchaRef.current.getValue() if (!recaptchaValue) { toast.error('Recaptcha harus diisi') return } const file = quotationFileRef.current.files[0] let fileBase64 = null if (typeof file !== 'undefined') { if (file.size > 5000000) { toast.error('Maksimal ukuran file adalah 5MB') return } fileBase64 = await getFileBase64(file) } const data = { name: `Request For Quotation - ${values.company}`, email_from: values.email, phone: values.phone, description: [ `Nama Perusahaan: ${values.company}`, `No. Telepon: ${values.phone}`, `Kota: ${values.city}`, `No. Handphone: ${values.mobile}`, `Alamat Email: ${values.email}`, `Keterangan: ${values.description}` ].join('\n') } if (fileBase64) data.file_quotation = fileBase64 const createLead = await createLeadApi({ data }) if (createLead) { toast.success('Berhasil mengirimkan formulir request for quotation') reset() recaptchaRef.current.reset() } } return (