/**
 * Serviço de Atribuições de Pacientes (Frontend)
 */

import { apiClient } from "../api/client";
import type {
  PatientAssignment,
  CreateAssignmentInput,
  AssignmentFilters,
} from "./types";

class AssignmentService {
  /**
   * Lista todas as atribuições de pacientes
   */
  async list(filters?: AssignmentFilters): Promise<PatientAssignment[]> {
    try {
      // Monta query params para filtros
      const params = new URLSearchParams();

      if (filters?.patient_id) {
        params.append("patient_id", filters.patient_id);
      }
      if (filters?.user_id) {
        params.append("user_id", filters.user_id);
      }
      if (filters?.role) {
        params.append("role", filters.role);
      }

      const queryString = params.toString();
      const url = queryString ? `/assignments?${queryString}` : "/assignments";

      const response = await apiClient.get<PatientAssignment[]>(url);
      return response.data;
    } catch (error) {
      console.error("Erro ao listar atribuições:", error);
      throw error;
    }
  }

  /**
   * Cria nova atribuição de paciente
   */
  async create(data: CreateAssignmentInput): Promise<PatientAssignment> {
    try {
      const response = await apiClient.post<PatientAssignment>(
        "/assignments",
        data
      );
      return response.data;
    } catch (error) {
      console.error("Erro ao criar atribuição:", error);
      throw error;
    }
  }
}

export const assignmentService = new AssignmentService();
