import { create } from "zustand";
import { addDoseFrequencyApi, updateDoseFrequencyApi, removeDoseFrequencyApi } from "../services/doseFrequencyApi";
import { useMasterDataStore } from "./masterDataStore";
import { AddDoseFrequencyPayload, UpdateDoseFrequencyPayload } from "../types/medicalData";

interface DoseFrequencyState {
    loading: boolean;
    error: string | null;
    addDoseFrequency:    (payload: AddDoseFrequencyPayload)    => Promise<boolean>;
    updateDoseFrequency: (payload: UpdateDoseFrequencyPayload) => Promise<boolean>;
    removeDoseFrequency: (id: string)                          => Promise<boolean>;
}

export const useDoseFrequencyStore = create<DoseFrequencyState>((set) => ({
    loading: false,
    error: null,

    addDoseFrequency: async (payload) => {
        try {
            set({ loading: true, error: null });
            await addDoseFrequencyApi(payload);
            await useMasterDataStore.getState().fetchMasterData();
            set({ loading: false });
            return true;
        } catch (error: any) {
            set({ loading: false, error: error?.response?.data?.msg || error?.message || "Failed to add dose frequency" });
            return false;
        }
    },

    updateDoseFrequency: async (payload) => {
        try {
            set({ loading: true, error: null });
            await updateDoseFrequencyApi(payload);
            await useMasterDataStore.getState().fetchMasterData();
            set({ loading: false });
            return true;
        } catch (error: any) {
            set({ loading: false, error: error?.response?.data?.msg || error?.message || "Failed to update dose frequency" });
            return false;
        }
    },

    removeDoseFrequency: async (id) => {
        try {
            set({ loading: true, error: null });
            await removeDoseFrequencyApi({ id });
            await useMasterDataStore.getState().fetchMasterData();
            set({ loading: false });
            return true;
        } catch (error: any) {
            set({ loading: false, error: error?.response?.data?.msg || error?.message || "Failed to remove dose frequency" });
            return false;
        }
    },
}));