package com.jasamedika.medifirst2000.dao;

import java.util.List;
import java.util.Map;

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

import com.jasamedika.medifirst2000.entities.EvaluasiJabatan;
import com.jasamedika.medifirst2000.entities.MasterEvaluasiJabatan;

/**
 * Repository class for EvaluasiJabatan
 * 
 * @author Generator
 */
@Repository("MasterEvaluasiJabatanDao")
public interface MasterEvaluasiJabatanDao extends PagingAndSortingRepository<MasterEvaluasiJabatan, String> {

		 
	
	@Query("select new map(model.id as id , model.namaJabatan as namaJabatan) from Jabatan model left join model.jenisJabatan jenisJabatan where jenisJabatan.id=3")
	List<Map<String, Object>> findJabatan();

	List<EvaluasiJabatan> findByTahun(Integer tahun);
	
	@Query("select model from MasterEvaluasiJabatan model left join model.jabatan jabatan where jabatan.id=:idJabatan and model.bulan=:bulan and model.tahun=:tahun")
	List<Map<String, Object>> findEvaluasiByJabatan(@Param("idJabatan")Integer idJabatan, @Param("tahun")Integer tahun, @Param("bulan")String bulan);
	
	@Query("select model from MasterEvaluasiJabatan model left join model.jabatan jabatan where jabatan.id=:idJabatan  and model.tahun=:tahun  ")
	List<Map<String, Object>> findEvaluasiByJabatanAndTahun(@Param("idJabatan")Integer idJabatan, @Param("tahun")Integer tahun );
	
	@Query("select model from MasterEvaluasiJabatan model left join model.jabatan jabatan where jabatan.id=:idJabatan and model.bulan=:bulan and model.tahun=:tahun")
	MasterEvaluasiJabatan findEvaluasiByJabatanTahunBulan(@Param("idJabatan")Integer idJabatan, @Param("tahun")Integer tahun, @Param("bulan")String bulan);
	
	@Query("select model from MasterEvaluasiJabatan model  where  model.bulan=:bulan and model.tahun=:tahun ")
	List<MasterEvaluasiJabatan> findEvaluasiTahunBulanList(@Param("tahun")Integer tahun, @Param("bulan")String bulan);
	
	@Query("select new map(max(CASE "
			+ "   WHEN model.bulan='Januari' THEN 1 "
			+" WHEN model.bulan='Februari' THEN 2 "
			+" WHEN model.bulan='Maret' THEN 3 "
			+" WHEN model.bulan='April' THEN 4 "
			+" WHEN model.bulan='Mei' THEN 5 "
			+" WHEN model.bulan='Juni' THEN 6 "
			+" WHEN model.bulan='Juli' THEN 7 "
			+" WHEN model.bulan='Agustus' THEN 8 "
			+" WHEN model.bulan='September' THEN 9 "
			+" WHEN model.bulan='Oktober' THEN 10 "
			+" WHEN model.bulan='November' THEN 11 "
			+" WHEN model.bulan='Desember' THEN 12 "
			+" ELSE 0 "
			+" END) as bulan,max(model.tahun) as tahun,model.jabatanId as jabatanId) "
			+" from MasterEvaluasiJabatan model where model.jabatanId in  "
			+" (select distinct (m.jabatanId) from MasterEvaluasiJabatan m) "
			+" group by model.jabatanId ")
	List<Map<String, Object>> findMasterEvaluasiJabatanList();
	
	
}
