import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { TenantAwareRepository } from '../../../common/repositories/tenant-aware.repository';
import { BookingCashCollectionBatchEntity } from '../../../entities/booking-cash-collection-batch.entity';

@Injectable()
export class BookingCashCollectionBatchRepository extends TenantAwareRepository<BookingCashCollectionBatchEntity> {
  constructor(
    @InjectRepository(BookingCashCollectionBatchEntity)
    repo: Repository<BookingCashCollectionBatchEntity>,
    cls: ClsService,
  ) {
    super(repo, cls);
  }

  async findPendingByCollection(
    collectionId: string,
  ): Promise<BookingCashCollectionBatchEntity[]> {
    return this.find({
      where: {
        booking_cash_collection_id: collectionId,
        status: 'PENDING',
      } as never,
      order: { created_at: 'ASC' },
    });
  }
}
