package com.nebula.erp.inventory.repository;

import com.nebula.erp.inventory.model.Batch;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.*;

@Repository
public interface BatchRepository extends JpaRepository<Batch, Long> {

    @Query("SELECT b FROM Batch b WHERE b.product_id = :productId AND b.batch_code = :batchCode AND b.tenant = :tenant")
    Optional<Batch> findByProductIdANDBatchCodeANDTenant(Long productId, String batchCode, String tenant);

    @Query("SELECT b FROM Batch b WHERE b.product_id = :productId AND b.tenant = :tenant ORDER BY b.expiry_date ASC")
    List<Batch> findByProductIdANDTenantOrderByExpiryDateAsc(Long productId, String tenant);

    @Query("SELECT b FROM Batch b WHERE b.product_id = :productId AND b.tenant = :tenant AND b.expiry_date > CURRENT_DATE ORDER BY b.expiry_date ASC")
    List<Batch> findByProductIdANDTenant(Long productId, String tenant);

}