export type MaintenanceStatus = "OPEN" | "IN_PROGRESS" | "DONE" | "CANCELED";

export interface MaintenanceEquipmentSummary {
  id: string;
  code: string;
  assetTag: string;
  brand: string;
  model: string;
  status?: string;
  dailyRate?: number;
}

export interface ServiceOrderPayableSummary {
  id: string;
  amount: number;
  dueDate: string;
  status: string;
  supplierId?: string | null;
  supplier?: {
    id: string;
    name: string;
  } | null;
}

export interface ServiceOrder {
  id: string;
  companyId: string;
  equipmentId: string;
  code: string;
  title: string;
  description?: string | null;
  status: MaintenanceStatus;
  cost: number;
  openedAt: string;
  closedAt?: string | null;
  supplierId?: string | null;
  createdAt?: string;
  updatedAt?: string;
  equipment?: MaintenanceEquipmentSummary;
  payables?: ServiceOrderPayableSummary[];
}

export interface ServiceOrderStats {
  total: number;
  open: number;
  inProgress: number;
  done: number;
  canceled: number;
  totalCost: number;
}

export interface CreateServiceOrderDTO {
  equipmentId: string;
  title: string;
  description?: string;
  status?: MaintenanceStatus;
  cost?: number;
  openedAt?: string;
  closedAt?: string;
  supplierId?: string;
  generatePayable?: boolean;
  dueDate?: string;
}

export interface UpdateServiceOrderDTO {
  equipmentId?: string;
  title?: string;
  description?: string;
  status?: MaintenanceStatus;
  cost?: number;
  openedAt?: string;
  closedAt?: string;
  supplierId?: string;
  generatePayable?: boolean;
  dueDate?: string;
}

export interface MaintenanceFilters {
  search?: string;
  status?: string;
  equipmentId?: string;
}
