import type {
  ActivityLogStats,
  UserActivityLog,
  VehicleHistoryLog,
  StatusChangeLog,
  SiteChangeLog,
} from "@/domain/entities/activity-log";
import type { ActivityLogRepository } from "@/domain/repositories/activity-log.repository";
import type { BackendPaginatedData, PaginationQueryParams } from "@/shared/types";
import { api } from "@/infrastructure/api/api-client";

const BASE = "/activity-logs";

export class ActivityLogRepositoryImpl implements ActivityLogRepository {
  getStats() {
    return api.get<ActivityLogStats>(`${BASE}/stats`);
  }

  getUserActivity(params: PaginationQueryParams) {
    return api.get<BackendPaginatedData<UserActivityLog>>(`${BASE}/user-activity`, { params });
  }

  getVehicleHistory(params: PaginationQueryParams) {
    return api.get<BackendPaginatedData<VehicleHistoryLog>>(`${BASE}/vehicle-history`, { params });
  }

  getStatusChanges(params: PaginationQueryParams) {
    return api.get<BackendPaginatedData<StatusChangeLog>>(`${BASE}/status-changes`, { params });
  }

  getSiteChanges(params: PaginationQueryParams) {
    return api.get<BackendPaginatedData<SiteChangeLog>>(`${BASE}/site-changes`, { params });
  }
}
