summaryrefslogtreecommitdiff
path: root/src-migrate/modules/register
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-17 17:06:58 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-17 17:06:58 +0700
commitead46a6d760850530946926b390a8954ca64e1c2 (patch)
tree6d873de6a17310ab82e7dcc5ac76a70993a38b7e /src-migrate/modules/register
parent0908fc0075f91844ffed4002165c638d02eb91be (diff)
<iman> update pengajuan tempo
Diffstat (limited to 'src-migrate/modules/register')
-rw-r--r--src-migrate/modules/register/stores/usePengajuanTempoStore.ts86
1 files changed, 84 insertions, 2 deletions
diff --git a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
index 6f3bc13d..8891e6ea 100644
--- a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
+++ b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
@@ -1,6 +1,6 @@
import { create } from 'zustand';
-import { TempoProps } from '~/types/tempo';
-import { TempoSchema } from '~/validations/tempo';
+import { TempoProps, TempoPropsKontakPerson } from '~/types/tempo';
+import { TempoSchema, TempoSchemaKontakPerson } from '~/validations/tempo';
import { boolean, ZodError } from 'zod';
type State = {
@@ -91,3 +91,85 @@ export const usePengajuanTempoStore = create<State & Action>((set, get) => ({
},
}),
}));
+
+type StateKontakPerson = {
+ form: TempoPropsKontakPerson;
+ errors: {
+ [key in keyof TempoPropsKontakPerson]?: string;
+ };
+ isCheckedTNC: boolean;
+ isOpenTNC: boolean;
+ isValidCaptcha: boolean;
+};
+export const usePengajuanTempoStoreKontakPerson = create<
+ StateKontakPerson & Action
+>((set, get) => ({
+ form: {
+ direkturName: '',
+ direkturMobile: '',
+ direkturEmail: '',
+ industry_id: '',
+ street: '',
+ state: '',
+ city: '',
+ zip: '',
+ bankName: '',
+ accountName: '',
+ accountNumber: '',
+ estimasi: '',
+ tempoDuration: '',
+ bersedia: '',
+ categoryProduk: '',
+ tempoLimit: '',
+ },
+ updateForm: (name, value) =>
+ set((state) => ({ form: { ...state.form, [name]: value } })),
+
+ errors: {},
+ validate: () => {
+ try {
+ TempoSchemaKontakPerson.parse(get().form);
+ set({ errors: {} });
+ } catch (error) {
+ if (error instanceof ZodError) {
+ const errors: StateKontakPerson['errors'] = {};
+ error.errors.forEach(
+ (e) => (errors[e.path[0] as keyof TempoPropsKontakPerson] = e.message)
+ );
+ set({ errors });
+ }
+ }
+ },
+
+ isCheckedTNC: false,
+ toggleCheckTNC: () => set((state) => ({ isCheckedTNC: !state.isCheckedTNC })),
+
+ isOpenTNC: false,
+ openTNC: () => set(() => ({ isOpenTNC: true })),
+ closeTNC: () => set(() => ({ isOpenTNC: false })),
+
+ isValidCaptcha: false,
+ updateValidCaptcha: (value) => set(() => ({ isValidCaptcha: value })),
+
+ resetForm: () =>
+ set({
+ form: {
+ direkturName: '',
+ direkturMobile: '',
+ direkturEmail: '',
+ industry_id: '',
+ street: '',
+ state: '',
+ city: '',
+ zip: '',
+ bankName: '',
+ accountName: '',
+ accountNumber: '',
+ estimasi: '',
+ tempoDuration: '',
+ bersedia: '',
+ categoryProduk: '',
+ tempoLimit: '',
+ },
+ }),
+}));