/**
 * Exceptions Service
 *
 * Serviço para gerenciamento de exceções na agenda dos médicos
 */

import { apiClient } from "../api/client";
import {
  DoctorException,
  ListExceptionsFilters,
  CreateExceptionInput,
} from "./types";

class ExceptionsService {
  private readonly basePath = "/doctor-exceptions";

  /**
   * Lista as exceções na agenda dos médicos
   */
  async list(filters?: ListExceptionsFilters): Promise<DoctorException[]> {
    const response = await apiClient.get<DoctorException[]>(this.basePath, {
      params: filters,
    });
    return response.data;
  }

  /**
   * Cria uma nova exceção na agenda
   */
  async create(data: CreateExceptionInput): Promise<DoctorException> {
    const response = await apiClient.post<DoctorException>(this.basePath, data);
    return response.data;
  }

  /**
   * Remove uma exceção da agenda
   */
  async delete(id: string): Promise<void> {
    await apiClient.delete(`${this.basePath}/${id}`);
  }
}

export const exceptionsService = new ExceptionsService();
