import type {
  HealthRepository,
  HealthPeriodParams,
} from "@/domain/repositories/health.repository";
import type {
  HealthExecutive,
  HealthClientsResponse,
  HealthClientProfile,
  HealthConfig,
  UpdateHealthConfigPayload,
} from "@/domain/entities/health";
import type { PaginationQueryParams } from "@/shared/types";
import { api } from "@/infrastructure/api/api-client";

const BASE = "/health";

export class HealthRepositoryImpl implements HealthRepository {
  getExecutive(params?: HealthPeriodParams) {
    return api.get<HealthExecutive>(`${BASE}/executive`, { params });
  }

  getClients(params: PaginationQueryParams) {
    return api.get<HealthClientsResponse>(`${BASE}/clients`, { params });
  }

  getClientProfile(companyUserId: number, params?: HealthPeriodParams) {
    return api.get<HealthClientProfile>(`${BASE}/clients/${companyUserId}`, { params });
  }

  getConfig() {
    return api.get<HealthConfig>(`${BASE}/config`);
  }

  updateConfig(payload: UpdateHealthConfigPayload) {
    return api.put<HealthConfig>(`${BASE}/config`, payload);
  }

  resetConfig() {
    return api.post<HealthConfig>(`${BASE}/config/reset`);
  }
}
