package com.evseminar.repository;

import com.evseminar.model.Registration;
import com.evseminar.model.enums.RegistrationStatus;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.time.LocalDateTime;
import java.util.List;

public interface RegistrationRepository extends JpaRepository<Registration, Long> {

    @Query("SELECT COALESCE(SUM(r.numSeats), 0) FROM Registration r " +
           "WHERE r.seminar.seminarId = :seminarId AND r.status = 'SUCCESS'")
    int countBookedSeats(@Param("seminarId") Long seminarId);

    List<Registration> findBySeminarSeminarIdAndStatusOrderByRegisteredAtAsc(
            Long seminarId, RegistrationStatus status);

    List<Registration> findByCustomerCustomerIdAndRegisteredAtAfterOrderByRegisteredAtDesc(
            Long customerId, LocalDateTime since);

    boolean existsByCustomerCustomerIdAndSeminarSeminarIdAndStatusNot(
            Long customerId, Long seminarId, RegistrationStatus status);
}
