import { create } from "zustand";
import {
    getMediosPagoActivos,
    toggleMedioPago
} from "../api/pagos.service";

export const useMetodosPagoStore = create((set) => ({
  dataMetodosPago: null,

  // Obtener medios de pago activos de la empresa
  mostrarMetodosPago: async () => {
    try {
      const response = await getMediosPagoActivos();
      // Transformar al formato esperado por el POS
      const metodos = response.map((m) => ({
        id: m.medio_pago_id,
        descripcion: m.medio_pago?.descripcion || m.descripcion,
        codigo: m.medio_pago?.codigo || m.codigo,
        icono: m.icono || null,
        activo: m.activo,
      }));
      set({ dataMetodosPago: metodos });
      return metodos;
    } catch (error) {
      console.error("Error al obtener medios de pago:", error);
      set({ dataMetodosPago: [] });
      return [];
    }
  },

  metodosPagoItemSelect: [],
  selectMetodosPago: (p) => {
    set({ metodosPagoItemSelect: p });
  },

  // Activar/desactivar medio de pago
  insertarMetodosPago: async (p) => {
    try {
      await toggleMedioPago({
        medio_pago_id: p.medio_pago_id,
        activo: true,
      });
    } catch (error) {
      console.error("Error al activar medio de pago:", error);
      throw error;
    }
  },

  eliminarMetodosPago: async (p) => {
    try {
      await toggleMedioPago({
        medio_pago_id: p.id || p.medio_pago_id,
        activo: false,
      });
    } catch (error) {
      console.error("Error al desactivar medio de pago:", error);
      throw error;
    }
  },

  editarMetodosPago: async (p) => {
    try {
      await toggleMedioPago({
        medio_pago_id: p.id || p.medio_pago_id,
        activo: p.activo,
        icono: p.icono,
      });
    } catch (error) {
      console.error("Error al editar medio de pago:", error);
      throw error;
    }
  },
}));
