summaryrefslogtreecommitdiff
path: root/src-migrate/modules/register/stores
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-18 17:08:55 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-18 17:08:55 +0700
commit548e2b48b1c2f6521037765f96083a8d79f611d6 (patch)
treeb2b1d8d924ec973d683e8fb0157b302bc7b037de /src-migrate/modules/register/stores
parent87ffd2fa7edc240693ddd81401ef23c5cd1bbb3e (diff)
<iman> add pengiriman section
Diffstat (limited to 'src-migrate/modules/register/stores')
-rw-r--r--src-migrate/modules/register/stores/usePengajuanTempoStore.ts71
1 files changed, 69 insertions, 2 deletions
diff --git a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
index 7f1bcbb0..0d397c78 100644
--- a/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
+++ b/src-migrate/modules/register/stores/usePengajuanTempoStore.ts
@@ -1,6 +1,14 @@
import { create } from 'zustand';
-import { TempoProps, TempoPropsKontakPerson } from '~/types/tempo';
-import { TempoSchema, TempoSchemaKontakPerson } from '~/validations/tempo';
+import {
+ TempoProps,
+ TempoPropsKontakPerson,
+ TempoPropsPengiriman,
+} from '~/types/tempo';
+import {
+ TempoSchema,
+ TempoSchemaKontakPerson,
+ TempoSchemaPengiriman,
+} from '~/validations/tempo';
import { boolean, ZodError } from 'zod';
type State = {
@@ -156,3 +164,62 @@ export const usePengajuanTempoStoreKontakPerson = create<
},
}),
}));
+
+type StatePengiriman = {
+ formPengiriman: TempoPropsPengiriman;
+ errorsPengiriman: {
+ [key in keyof TempoPropsPengiriman]?: string;
+ };
+};
+type ActionPengiriman = {
+ updateFormPengiriman: (name: string, value: string) => void;
+
+ validatePengiriman: () => void;
+ resetFormPengiriman: () => void;
+};
+export const usePengajuanTempoStorePengiriman = create<
+ StatePengiriman & ActionPengiriman
+>((set, get) => ({
+ formPengiriman: {
+ PICName: '',
+ streetPengiriman: '',
+ statePengiriman: '',
+ cityPengiriman: '',
+ zip: '',
+ invoicePic: '',
+ },
+ updateFormPengiriman: (name, value) =>
+ set((state) => ({
+ formPengiriman: { ...state.formPengiriman, [name]: value },
+ })),
+
+ errorsPengiriman: {},
+ validatePengiriman: () => {
+ try {
+ TempoSchemaPengiriman.parse(get().formPengiriman);
+ set({ errorsPengiriman: {} });
+ } catch (error) {
+ if (error instanceof ZodError) {
+ const errorsPengiriman: StatePengiriman['errorsPengiriman'] = {};
+ error.errors.forEach(
+ (e) =>
+ (errorsPengiriman[e.path[0] as keyof TempoPropsPengiriman] =
+ e.message)
+ );
+ set({ errorsPengiriman });
+ }
+ }
+ },
+
+ resetFormPengiriman: () =>
+ set({
+ formPengiriman: {
+ PICName: '',
+ streetPengiriman: '',
+ statePengiriman: '',
+ cityPengiriman: '',
+ zip: '',
+ invoicePic: '',
+ },
+ }),
+}));