38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
/* eslint-disable @typescript-eslint/naming-convention */
|
|
/* eslint-disable canonical/id-match */
|
|
import { type OrderStore } from './types';
|
|
import { createStore } from 'zustand';
|
|
|
|
export function createOrderStore() {
|
|
return createStore<OrderStore>((set, get) => ({
|
|
_setStepSequence: (steps) => set({ _stepSequence: steps }),
|
|
_stepSequence: [],
|
|
clientId: null,
|
|
date: new Date(),
|
|
|
|
masterId: null,
|
|
nextStep: () => {
|
|
const { _stepSequence, step } = get();
|
|
const index = _stepSequence.indexOf(step);
|
|
const next = _stepSequence[index + 1];
|
|
if (next) set({ step: next });
|
|
},
|
|
|
|
prevStep: () => {
|
|
const { _stepSequence, step } = get();
|
|
const index = _stepSequence.indexOf(step);
|
|
const previous = _stepSequence[index - 1];
|
|
if (previous) set({ step: previous });
|
|
},
|
|
serviceId: null,
|
|
setClientId: (id) => set({ clientId: id }),
|
|
setDate: (date) => set({ date }),
|
|
setMasterId: (id) => set({ masterId: id }),
|
|
setServiceId: (id) => set({ serviceId: id }),
|
|
setStep: (step) => set({ step }),
|
|
setTime: (time) => set({ time }),
|
|
step: 'loading',
|
|
time: null,
|
|
}));
|
|
}
|