// ── Stats ──

export interface ActivityLogStats {
  user_activity: {
    total: number;
    last_30_days: number;
    today: number;
  };
  vehicle_history: {
    total: number;
    last_30_days: number;
  };
  status_changes: {
    total: number;
    last_30_days: number;
  };
  site_changes: {
    total: number;
    last_30_days: number;
  };
  top_active_companies: Array<{
    company_id: number;
    company_name: string;
    activity_count: number;
  }>;
  top_modules: Record<string, number>;
}

// ── User Activity ──

export interface UserActivityLog {
  id: number;
  action: string;
  module: string;
  url: string;
  method: string;
  ip_address: string;
  user_agent: string;
  user: {
    id: number;
    name: string;
    email: string;
  } | null;
  company: {
    id: number;
    name: string;
  } | null;
  created_at: string;
}

// ── Vehicle History ──

export interface VehicleHistoryLog {
  id: number;
  action_made: string;
  description_fr: string;
  description_en: string;
  historable_type: string;
  historable_id: number;
  vehicle: {
    id: number;
    display_name: string;
    numberplate: string;
  } | null;
  user: {
    id: number;
    name: string;
    email: string;
  } | null;
  company: {
    id: number;
    name: string;
  } | null;
  created_at: string;
}

// ── Status Changes ──

export interface CustomStatus {
  id: number;
  label: string;
  color: string;
}

export interface StatusChangeLog {
  id: number;
  date: string;
  old_custom_status: CustomStatus | null;
  new_custom_status: CustomStatus | null;
  vehicle: {
    id: number;
    display_name: string;
    numberplate: string;
  } | null;
  user: {
    id: number;
    name: string;
  } | null;
  company: {
    id: number;
    name: string;
  } | null;
}

// ── Site Changes ──

export interface SiteChangeLog {
  id: number;
  date: string;
  old_site: {
    id: number;
    name: string;
  } | null;
  new_site: {
    id: number;
    name: string;
  } | null;
  vehicle: {
    id: number;
    display_name: string;
    numberplate: string;
  } | null;
  user: {
    id: number;
    name: string;
  } | null;
  company: {
    id: number;
    name: string;
  } | null;
}
