import api from '../config/api';
import { User, Role, Permission } from '../types';

export const adminService = {
  async users(): Promise<User[]> {
    const response = await api.get('/admin/users');
    return response.data.data || response.data.users || response.data || [];
  },

  async createUser(data: {
    email: string;
    password: string;
    first_name: string;
    last_name?: string;
    employee_code: string;
    phone?: string;
    designation?: string;
    department_id?: number;
    role_id: number;
  }): Promise<User> {
    const response = await api.post('/admin/users', data);
    return response.data;
  },

  async roles(): Promise<Role[]> {
    const response = await api.get('/admin/roles');
    return response.data.data || response.data.roles || response.data || [];
  },

  async createRole(data: { name: string; description?: string; permission_ids?: number[] }): Promise<{ id: number }> {
    const response = await api.post('/admin/roles', data);
    return response.data;
  },

  async updateRole(id: number, data: { name: string; description?: string; permission_ids?: number[] }): Promise<void> {
    await api.put(`/admin/roles/${id}`, data);
  },

  async deleteRole(id: number): Promise<void> {
    await api.delete(`/admin/roles/${id}`);
  },

  async rolePermissions(roleId: number): Promise<number[]> {
    const response = await api.get(`/admin/roles/${roleId}/permissions`);
    return response.data.data || [];
  },

  async permissions(): Promise<Permission[]> {
    const response = await api.get('/admin/permissions');
    return response.data.data || response.data.permissions || response.data || [];
  },
};
