import axiosInstance from '@/utills/axiosInstance';
import { removeEmptyKeys } from '@/utills/helper';

export async function getRoles(params?: any): Promise<any> {
  const queryString = removeEmptyKeys(params);
  return await axiosInstance.get('/api/v1/roles', { params: queryString });
}

export async function getAllRoles(params?: any): Promise<any> {
  const queryString = removeEmptyKeys(params);
  return await axiosInstance.get('/api/v1/roles', { params: queryString });
}

export async function getAllFeatures(): Promise<any> {
  return await axiosInstance.get('/api/v1/masters/features');
}

export async function getAllPermissions(roleId: number): Promise<any> {
  return await axiosInstance.get(`/api/v1/permissions/${roleId}`);
}

export async function addRole(data: any): Promise<any> {
  return await axiosInstance.post('/api/v1/roles/create', data);
}

export async function addPermissions(data: any): Promise<any> {
  return await axiosInstance.post('/api/v1/permissions', data);
}

export async function updateRole(data: any): Promise<any> {
  return await axiosInstance.patch(`/api/v1/roles/${data.id}`, {
    label: data.label,
    name: data.name,
    subordinate_role_id: data.subordinate_role_id,
    manager_role_id: data.manager_role_id,
    city_id: data.city_id,
    is_manager: data.is_manager,
    can_own_leads: data.can_own_leads,
    scoping_type_id: data.scoping_type_id,
  });
}

export async function deleteRole(id: number): Promise<any> {
  return await axiosInstance.delete(`/api/v1/roles/${id}`);
}

export async function fetchRoleById(id: number): Promise<any> {
  return await axiosInstance.get(`/api/v1/roles/${id}`);
}
