import axios from '../utils/api';
import { User, UserFormData } from '../types/auth';

export const userService = {
  getUsers: async (): Promise<User[]> => {
    try {
      const response = await axios.get('/users');
      return response.data;
    } catch (error) {
      console.error('Ошибка получения списка пользователей:', error);
      throw new Error('Сбой при получении списка пользователей');
    }
  },

  createUser: async (userData: UserFormData): Promise<User> => {
    try {
      const response = await axios.post('/users', userData);
      return response.data;
    } catch (error) {
      console.error('Ошибка создания пользователя:', error);
      throw new Error('Сбой при создании пользователя');
    }
  },

  updateUser: async (userId: string, userData: Partial<UserFormData>): Promise<User> => {
    try {
      const response = await axios.put(`/users/${userId}`, userData);
      return response.data;
    } catch (error) {
      console.error('Ошибка редактирования пользователя:', error);
      throw new Error('Сбой при редактировании пользователя');
    }
  },

  updateUserPermissions: async (userId: string, permissions: User['permissions']): Promise<User> => {
    try {
      const response = await axios.put(`/users/${userId}/permissions`, { permissions });
      return response.data;
    } catch (error) {
      console.error('Ошибка редактирования прав пользователя:', error);
      throw new Error('Сбой при редактировании прав пользователя');
    }
  },

  deleteUser: async (userId: string): Promise<void> => {
    try {
      await axios.delete(`/users/${userId}`);
    } catch (error) {
      console.error('Ошибка удаления пользователя:', error);
      throw new Error('Сбой при удалении пользователя');
    }
  }
};