package dev.lions.unionflow.server.repository;

import dev.lions.unionflow.server.entity.TemplateNotification;
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

/**
 * Repository pour l'entité TemplateNotification
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2025-01-29
 */
@ApplicationScoped
public class TemplateNotificationRepository implements PanacheRepositoryBase<TemplateNotification, UUID> {

  /**
   * Trouve un template par son UUID
   *
   * @param id UUID du template
   * @return Template ou Optional.empty()
   */
  public Optional<TemplateNotification> findTemplateNotificationById(UUID id) {
    return find("id = ?1 AND actif = true", id).firstResultOptional();
  }

  /**
   * Trouve un template par son code
   *
   * @param code Code du template
   * @return Template ou Optional.empty()
   */
  public Optional<TemplateNotification> findByCode(String code) {
    return find("code = ?1 AND actif = true", code).firstResultOptional();
  }

  /**
   * Trouve tous les templates actifs
   *
   * @return Liste des templates actifs
   */
  public List<TemplateNotification> findAllActifs() {
    return find("actif = true ORDER BY code ASC").list();
  }

  /**
   * Trouve les templates par langue
   *
   * @param langue Code langue (ex: fr, en)
   * @return Liste des templates
   */
  public List<TemplateNotification> findByLangue(String langue) {
    return find("langue = ?1 AND actif = true ORDER BY code ASC", langue).list();
  }
}



