package com.jasamedika.medifirst2000.dao; import java.util.Date; 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.UraianTugasFlexible; @Repository("UraianTugasFlexibleDao") public interface UraianTugasFlexibleDao extends PagingAndSortingRepository{ @Query(" select new map (uraianTugas.rincianKegiatan as rincianKegiatan,uraianTugas.noRec as noRec, uraianTugas.tgl as tgl,uraianTugas.approvalStatus as approvalStatus, "+ "uraianTugas.satuan as satuan, uraianTugas.volume as volume, uraianTugas.waktu as waktu, "+ "atasan.namaLengkap as namaAtasan, atasan.id as idAtasan, pegawai.namaLengkap as namaPegawai, "+ "pegawai.id as idPegawai) "+ "from UraianTugasFlexible uraianTugas "+ "left join uraianTugas.atasan atasan "+ "left join uraianTugas.pegawai pegawai "+ "where uraianTugas.statusEnabled is true and pegawai.id = :id "+ "and to_char(uraianTugas.tgl, 'yyyy-MM-dd') = :date") public List> findByIdPegawaiAndByDate(@Param("id") Integer id,@Param("date") String date); @Query(" select new map (uraianTugas.rincianKegiatan as rincianKegiatan,uraianTugas.noRec as noRec, uraianTugas.tgl as tgl,uraianTugas.approvalStatus as approvalStatus, "+ "uraianTugas.satuan as satuan, uraianTugas.volume as volume, uraianTugas.waktu as waktu, "+ "atasan.namaLengkap as namaAtasan, atasan.id as idAtasan, pegawai.namaLengkap as namaPegawai, "+ "pegawai.id as idPegawai) "+ "from UraianTugasFlexible uraianTugas "+ "left join uraianTugas.atasan atasan "+ "left join uraianTugas.pegawai pegawai "+ "where uraianTugas.statusEnabled is true and uraianTugas.approvalStatus is true and pegawai.id = :id "+ "and to_char(uraianTugas.tgl, 'yyyy-MM') = :period "+ " order by uraianTugas.tgl") public List> findMonthlyAndverified(@Param("id") Integer id,@Param("period") String period); @Query(" select new map (uraianTugas.rincianKegiatan as rincianKegiatan,uraianTugas.noRec as noRec, uraianTugas.tgl as tgl,uraianTugas.approvalStatus as approvalStatus, "+ "uraianTugas.satuan as satuan, uraianTugas.volume as volume, uraianTugas.waktu as waktu, "+ "atasan.namaLengkap as namaAtasan, atasan.id as idAtasan, pegawai.namaLengkap as namaPegawai, "+ "pegawai.id as idPegawai) "+ "from UraianTugasFlexible uraianTugas "+ "left join uraianTugas.atasan atasan "+ "left join uraianTugas.pegawai pegawai "+ "where uraianTugas.statusEnabled is true and pegawai.id in (:id) "+ "and uraianTugas.tgl > :date"+ " order by pegawai.id, uraianTugas.tgl") public List> findByListIdPegawaiAndDate(@Param("id") List id,@Param("date") Date date); @Query(" select coalesce(sum( uraianTugas.waktu),0) "+ "from UraianTugasFlexible uraianTugas "+ "left join uraianTugas.atasan atasan "+ "left join uraianTugas.pegawai pegawai "+ "where uraianTugas.statusEnabled is true and uraianTugas.approvalStatus is true and pegawai.id = :id "+ "and to_char(uraianTugas.tgl, 'yyyy-MM') = :period ") public Integer findSumMonthlyAndverified(@Param("id") Integer id,@Param("period") String period); }