package de.oaa.xxx.aufgaben;

import java.util.Collections;
import java.util.List;
import java.util.UUID;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;

public class AufgabenGruppeDAO extends AbstractDAO<AufgabenGruppeEntity> {

	private Logger LOGGER = LoggerFactory.getLogger(getClass());
	
	public AufgabenGruppeDAO(EntityManager manager) {
		super(AufgabenGruppeEntity.class, manager);
	}
	
	public List<AufgabenGruppeEntity> list(UUID userId, String search) {
		try {			
			TypedQuery<AufgabenGruppeEntity> query = getEntityManager().createQuery(
					"select age from AufgabenGruppeEntity age where (age.privateGruppe = false" + (userId == null ? ")" : " or age.userId = :userId)") + (search == null ? "" : " and age.name like :search"), AufgabenGruppeEntity.class);
			if (userId != null) {
				query.setParameter("userId", userId);
			}
			if (search != null) {
				query.setParameter("search", "%" + search + "%");			
			}
			query.setMaxResults(50);
			return query.getResultList();
		} catch (Exception e) {
			LOGGER.error(e.getMessage(), e);
			return Collections.emptyList();
		}
	}
	
	public List<AufgabenGruppeEntity> listOwn(UUID userId) {
		try {
			TypedQuery<AufgabenGruppeEntity> query = getEntityManager().createQuery("select age from AufgabenGruppeEntity age where age.userId = :userId", AufgabenGruppeEntity.class);
			query.setParameter("userId", userId);
			return query.getResultList();
		} catch (Exception e) {
			LOGGER.error(e.getMessage(), e);
			return Collections.emptyList();
		}
	}
}
