import useAuth from '@/core/hooks/useAuth'; import { setAuth } from '@/core/utils/auth'; import addressApi from '@/lib/address/api/addressApi'; import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; import { useEffect, useState, useMemo } from 'react'; import { useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; import switchAccountApi from '../api/switchAccountApi'; import FormBisnis from '~/modules/register/components/FormBisnis.tsx'; import RegistrasiBisnis from '~/modules/register/components/RegistrasiBisnis.tsx'; import { Radio, RadioGroup, Stack, Divider, Button } from '@chakra-ui/react'; import { useRegisterStore } from '~/modules/register/stores/useRegisterStore.ts'; import { registerUser } from '~/services/auth'; import { useMutation } from 'react-query'; import { isValid } from 'zod'; import useDevice from '@/core/hooks/useDevice'; import BottomPopup from '@/core/components/elements/Popup/BottomPopup'; const SwitchAccount = ({ company_type }) => { const { isDesktop, isMobile } = useDevice(); const auth = useAuth(); const [isOpen, setIsOpen] = useState(true); const toggle = () => setIsOpen(!isOpen); const [isPKP, setIsPKP] = useState(true); const [isTerdaftar, setIsTerdaftar] = useState(false); const [isChecked, setIsChecked] = useState(false); const [selectedValueBisnis, setSelectedValueBisnis] = useState('false'); const [selectedValue, setSelectedValue] = useState('PKP'); const [buttonSubmitClick, setButtonSubmitClick] = useState(false); const [changeConfirmation, setChangeConfirmation] = useState(false); const { register, setValue, handleSubmit } = useForm({ defaultValues: { email: '', name: '', phone: '', password: '', }, }); const mutation = useMutation({ mutationFn: (data) => registerUser(data), }); const [notValid, setNotValid] = useState(false); const { form, isCheckedTNC, isValidCaptcha, errors, validate, updateForm, resetForm, } = useRegisterStore(); const isFormValid = useMemo(() => Object.keys(errors).length === 0, [errors]); useEffect(() => { const loadProfile = async () => { const dataProfile = await addressApi({ id: auth.partnerId }); setValue('email', dataProfile?.email); setValue('name', dataProfile?.name); setValue('phone', dataProfile?.phone); }; if (auth) loadProfile(); }, [auth, setValue]); useEffect(() => { if (selectedValue === 'PKP') { updateForm('is_pkp', 'true'); validate(); } else { updateForm('is_pkp', 'false'); validate(); } }, [selectedValue]); useEffect(() => { if (isTerdaftar) { updateForm('is_terdaftar', 'true'); validate(); } else { updateForm('is_terdaftar', 'false'); validate(); } }, [isTerdaftar]); useEffect(() => { const loadProfile = async () => { const dataProfile = await addressApi({ id: auth.parentId ? auth.parentId : auth.parent_id, }); if (dataProfile?.companyType === 'nonpkp') { setSelectedValue('PKP'); } if (auth?.company) { updateForm('email_partner', dataProfile?.email); updateForm('business_name', dataProfile?.name); updateForm('industry_id', `${dataProfile?.industryId}`); updateForm('company_type_id', `${dataProfile?.companyTypeId}`); updateForm('nama_wajib_pajak', dataProfile?.taxName); updateForm('npwp', dataProfile?.npwp); updateForm('sppkp', dataProfile?.sppkp); updateForm('alamat_wajib_pajak', dataProfile?.alamatWajibPajak); updateForm('alamat_bisnis', dataProfile?.alamatBisnis); validate(); } }; if (auth) loadProfile(); }, [auth, setValue]); useEffect(() => { updateForm('name', '-'); updateForm('email', 'example@mail.com'); updateForm('password', 'example@mail.com'); updateForm('phone', '081234567890'); validate(); }, [buttonSubmitClick, changeConfirmation]); const handleChangeBisnis = (value) => { resetForm(); setSelectedValueBisnis(value); if (value === 'true') { validate(); setIsTerdaftar(true); } else { validate(); setIsTerdaftar(false); } }; const handleChange = (value) => { setSelectedValue(value); if (value === 'PKP') { validate(); setIsPKP(true); } else { validate(); setIsPKP(false); setIsPKP(false); } }; const onSubmitHandler = async (values) => { toast.loading('Mengubah status akun...'); updateForm('parent_id', `${auth.parentId}`); setChangeConfirmation(false); // let data = { ...form, id: `${auth.partnerId}` }; const data = form; if (!isFormValid) { setNotValid(true); setButtonSubmitClick(!buttonSubmitClick); return; } else { setButtonSubmitClick(!buttonSubmitClick); setNotValid(false); } // if (!values.password) delete data.password; const isUpdated = await switchAccountApi({ data }); if (isUpdated?.switch === 'Pending') { // setAuth(isUpdated.user); // setValue('password', ''); toast.success('Berhasil mengubah akun', { duration: 1500 }); setTimeout(() => { window.location.reload(); }, 1500); return; } toast.error('Terjadi kesalahan internal'); }; const onSubmitHandlerCancel = async (values) => { window.location.reload(); }; return ( <> setChangeConfirmation(false)} title='Ubah profil Bisnis' >
Anda yakin akan merubah profil bisnis anda dari INDIVIDU menjadi{' '} {selectedValue}?
{/*
Informasi Bisnis
*Perubahan akun tidak dapat diubah kembali
*/}
{!auth?.company && company_type === 'nonpkp' && ( <>

Bisnis Terdaftar di Indoteknik?

Sudah Terdaftar Belum Terdaftar
{!isTerdaftar && (

Tipe Bisnis

PKP {!auth?.company && company_type === 'nonpkp' && ( Non-PKP )}
)} )}
); }; export default SwitchAccount;