package com.jasamedika.medifirst2000.dao;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.jasamedika.medifirst2000.entities.ModulAplikasi;
import com.jasamedika.medifirst2000.entities.ObjekModulAplikasi;

@Repository("ObjekModulAplikasiDao")
public interface ObjekModulAplikasiDao extends JpaRepository<ObjekModulAplikasi, String> {
	
//	@Query("select m from MapObjekModulToKelompokUser m where m.kelompokUser.id=:kelompokUser ")
//	List<MapObjekModulToKelompokUser> findByKelompokUser(@Param("kelompokUser")  Integer kelompokUser);
//	
//	
//	// TANDAIN DULU
//	@Query("Select m from ObjekModulAplikasi m where (m.objekModulAplikasiHeadFk = :id OR m.objekModulAplikasiHeadFk is null)  and m.objekModulAplikasiHeadFk is null ")
//	public List<ObjekModulAplikasi> findAllObjekModulAplikasi(@Param("id") int id);
//	
//	public ObjekModulAplikasi findByAlamatUrlForm(@Param("AlamatUrlForm") String AlamatUrlForm);
	
	//@Query("Select objek from ObjekModulAplikasi objek join objek.modulAplikasi m where m.id = :kdModulAplikasi and objek.kdObjekModulAplikasiHead is null")
	
//	@Query("Select o from ObjekModulAplikasi ")
	public List<ObjekModulAplikasi> findByKdObjekModulAplikasiHeadIsNullOrderByNoUrutAsc(); 
	
	@Query("Select o from ModulAplikasi m join m.objekModulAplikasi o "
			+ "where m.id = :kdModulAplikasi and o.kdObjekModulAplikasiHead is not null "
			+ " and m.statusEnabled=true and o.statusEnabled=true order by o.kdObjekModulAplikasiHead, o.noUrut asc")
//	@Query("Select p from ObjekModulAplikasi p where "
//			+ "p.statusEnabled=true and p.statusEnabled=true and p.kdObjekModulAplikasiHead is null and "
//			+ "p.id in (Select o.kdObjekModulAplikasiHead from ModulAplikasi m join m.objekModulAplikasi o "
//			+ "where m.id = :kdModulAplikasi "
//			+ "and m.statusEnabled=true and o.statusEnabled=true) ")
	public List<ObjekModulAplikasi> findAllObjekModulAplikasi(@Param("kdModulAplikasi") Integer kdModulAplikasi);
	
	
	public List<ObjekModulAplikasi> findByAlamatUrlFormStartingWith(String alamatUrlForm);

	@Query("Select o.modulAplikasi from ObjekModulAplikasi o where o.id = :id and o.statusEnabled=true")
	List<ModulAplikasi> findModulAplikasiById(@Param("id") Integer id);

	

}
