"use server";

import { executeREST } from "app/_lib/zammad";

export const getAgentsAction = async () => {
  try {
    const users = await executeREST({
      path: "/api/v1/users",
    });
    const agents =
      users?.filter((user: any) => user.role_ids.includes(2)) ?? [];
    const formattedAgents = agents
      .map((agent: any) => ({
        label: `${agent.firstname} ${agent.lastname}`,
        value: `gid://zammad/User/${agent.id}`,
      }))
      .sort((a: any, b: any) => a.label.localeCompare(b.label));

    return formattedAgents;
  } catch (e) {
    console.error(e.message);
    return [];
  }
};

export const getCustomersAction = async () => {
  try {
    const users = await executeREST({
      path: "/api/v1/users",
    });
    const customers =
      users?.filter((user: any) => user.role_ids.includes(3)) ?? [];
    const formattedCustomers = customers
      .map((customer: any) => ({
        label: customer.login,
        value: `gid://zammad/User/${customer.id}`,
      }))
      .sort((a: any, b: any) => a.label.localeCompare(b.label));

    return formattedCustomers;
  } catch (e) {
    console.error(e.message);
    return [];
  }
};

export const getUsersAction = async () => {
  try {
    const users = await executeREST({
      path: "/api/v1/users",
    });
    console.log({ users });
    const formattedUsers = users
      .map((customer: any) => ({
        label: customer.login,
        value: `gid://zammad/User/${customer.id}`,
      }))
      .sort((a: any, b: any) => a.label.localeCompare(b.label));

    return formattedUsers;
  } catch (e) {
    console.error(e.message);
    return [];
  }
};
