package com.project.whatsappchatbot.repository;

import com.project.whatsappchatbot.model.Invoice;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;

public interface InvoiceRepository extends JpaRepository<Invoice, Long> {
    Optional<Invoice> findByOrderId(Long orderId);

    // New method for exact match on invoiceId
    Page<Invoice> findById(Long invoiceId, Pageable pageable);

    // Existing method for searching by order IDs
    Page<Invoice> findByOrderIdIn(List<Long> orderIds, Pageable pageable);

    // Add methods for partial match search queries
    @Query("SELECT i FROM Invoice i WHERE CAST(i.id AS string) LIKE %:searchQuery% OR CAST(i.order.id AS string) LIKE %:searchQuery%")
    Page<Invoice> findByIdContaining(@Param("searchQuery") String searchQuery, Pageable pageable);
}
