import odooApi from '@/core/api/odooApi'; import HookFormSelect from '@/core/components/elements/Select/HookFormSelect'; import useAuth from '@/core/hooks/useAuth'; import addressApi from '@/lib/address/api/addressApi'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; import { useEffect, useState } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; import BottomPopup from '@/core/components/elements/Popup/BottomPopup'; import { yupResolver } from '@hookform/resolvers/yup'; import * as Yup from 'yup'; const CompanyProfile = () => { const [changeConfirmation, setChangeConfirmation] = useState(false); const auth = useAuth(); const [isOpen, setIsOpen] = useState(false); const toggle = () => setIsOpen(!isOpen); const { register, formState: { errors }, setValue, control, handleSubmit, } = useForm({ resolver: yupResolver(validationSchema), defaultValues, }); const [industries, setIndustries] = useState([]); useEffect(() => { const loadIndustries = async () => { const dataIndustries = await odooApi('GET', '/api/v1/partner/industry'); setIndustries( dataIndustries?.map((o) => ({ value: o.id, label: o.name })) ); }; loadIndustries(); }, []); const [companyTypes, setCompanyTypes] = useState([]); useEffect(() => { const loadCompanyTypes = async () => { const dataCompanyTypes = await odooApi( 'GET', '/api/v1/partner/company_type' ); setCompanyTypes( dataCompanyTypes?.map((o) => ({ value: o.id, label: o.name })) ); }; loadCompanyTypes(); }, []); useEffect(() => { const loadProfile = async () => { const dataProfile = await addressApi({ id: auth.parentId }); setValue('name', dataProfile.name); setValue('industry', dataProfile.industryId); setValue('companyType', dataProfile.companyTypeId); setValue('taxName', dataProfile.taxName); setValue('npwp', dataProfile.npwp); setValue('alamat_wajib_pajak', dataProfile.alamatWajibPajak); setValue('alamat_bisnis', dataProfile.alamatBisnis); }; if (auth) loadProfile(); }, [auth, setValue]); const onSubmitHandler = async (values) => { if (changeConfirmation) { const data = { ...values, id_user: auth.partnerId, company_type_id: values.companyType, industry_id: values.industry, tax_name: values.taxName, alamat_lengkap_text: values.alamat_wajib_pajak, street: values.alamat_bisnis, }; const isUpdated = await odooApi( 'PUT', `/api/v1/partner/${auth.parentId}`, data ); if (isUpdated?.id) { toast.success('Berhasil mengubah profil', { duration: 1500 }); return; } toast.error('Terjadi kesalahan internal'); } }; const handleConfirmSubmit = () => { setChangeConfirmation(false); handleSubmit(onSubmitHandler)(); }; return ( <> setChangeConfirmation(true)} title='Ubah profil Bisnis' >
Apakah anda yakin mengubah data bisnis?
{isOpen && (
{ e.preventDefault(); setChangeConfirmation(true); }} >
( )} />
{errors.industry?.message}
Badan Usaha
( )} />
{errors.companyType?.message}
{errors.name?.message}
{errors.taxName?.message}
{errors.alamat_wajib_pajak?.message}
{errors.alamat_bisnis?.message}
{errors.npwp?.message}
)} ); }; export default CompanyProfile; const validationSchema = Yup.object().shape({ alamat_bisnis: Yup.string().required('Harus di-isi'), alamat_wajib_pajak: Yup.string().required('Harus di-isi'), taxName: Yup.string().required('Harus di-isi'), npwp: Yup.string().required('Harus di-isi'), name: Yup.string().required('Harus di-isi'), industry: Yup.string().required('Harus di-pilih'), companyType: Yup.string().required('Harus di-pilih'), }); const defaultValues = { industry: '', companyType: '', name: '', taxName: '', npwp: '', alamat_wajib_pajak: '', alamat_bisnis: '', };