"use server";

import { getAuthHeaders } from "@/app/actions/config";
import { biometricService } from "@/services/biometricService";
import { revalidateTag } from "next/cache";
import { withServerAction } from "@/lib/server/server-action-wrapper";
import { CACHE_TAGS, DEFAULT_CACHE_PROFILE } from "./cache-tags";

export async function fetchBiometricDevicesAction(): Promise<any[]> {
  return withServerAction(async () => {
    const headers = await getAuthHeaders();
    return await biometricService.getDevices({ headers });
  });
}

export async function registerBiometricDeviceAction(data: any) {
  return withServerAction(async () => {
    const headers = await getAuthHeaders();
    const result = await biometricService.registerDevice(data, { headers });
    revalidateTag(CACHE_TAGS.biometric, DEFAULT_CACHE_PROFILE);
    revalidateTag(CACHE_TAGS.attendance, DEFAULT_CACHE_PROFILE);
    return result;
  })
}

export async function updateDeviceStatusAction(deviceId: string, isActive: boolean) {
  return withServerAction(async () => {
    const headers = await getAuthHeaders();
    await biometricService.updateDeviceStatus(deviceId, isActive, { headers });
    revalidateTag(CACHE_TAGS.biometric, DEFAULT_CACHE_PROFILE);
    return { success: true };
  })
}

export async function linkEmployeeToBiometricAction(data: { userId: number; biometricDeviceId: number }) {
  return withServerAction(async () => {
    const headers = await getAuthHeaders();
    await biometricService.linkEmployee(data, { headers });
    revalidateTag(CACHE_TAGS.biometric, DEFAULT_CACHE_PROFILE);
    revalidateTag(CACHE_TAGS.employees, DEFAULT_CACHE_PROFILE);
    return { success: true };
  })
}