import { Injectable, Logger } from '@nestjs/common';
import { Subject } from 'rxjs';

export interface OrderEventPayload {
  businessId: string;
  type: 'order_created' | 'order_updated';
  orderId: string;
  orderNumber: string;
  status: string;
}

@Injectable()
export class OrderEventsService {
  private readonly logger = new Logger(OrderEventsService.name);
  private readonly orderUpdates$ = new Subject<OrderEventPayload>();

  emitOrderUpdate(businessId: string, event: Omit<OrderEventPayload, 'businessId'>) {
    this.logger.log(`Emitting order event to SSE: type=${event.type}, businessId=${businessId}, orderNumber=${event.orderNumber}`);
    this.orderUpdates$.next({ businessId, ...event });
  }

  getOrderUpdates() {
    return this.orderUpdates$.asObservable();
  }
}
