
package com.jasamedika.medifirst2000.service;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.vo.InputLemburSdmCustomVO;
import com.jasamedika.medifirst2000.vo.KelompokShiftKerjaCustomVO;
import com.jasamedika.medifirst2000.vo.MonitoringAbsenCustomVO;
import com.jasamedika.medifirst2000.vo.MonitoringAbsenVO;
import com.jasamedika.medifirst2000.vo.StrukHistoriVO;
import com.jasamedika.medifirst2000.vo.UangLemburVO;

public interface MonitoringAbsenService {

	List<Map<String, Object>> findKehadiran(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> saveMonitoring(MonitoringAbsenCustomVO vo);

	Map<String, Object> saveMonitoringVerifikasiSDM(MonitoringAbsenCustomVO vo);

	int iterateDate(String date);

	Map<String, Object> findKehadiranAllPegawai(String startDate, String endDate);

	Map<String, Object> findKehadiranPerPegawai(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> jumlahKehadiranRev(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> jumlahKehadiran(Integer idUnitKerja, Integer idSubunitKerja, Integer idPegawai, Long startDate,
			Long endDate);

	Map<String, Object> jumlahKehadiran(Integer unitKerjaId, Integer subUnitKerjaId, Integer idPegawai,
			String startDate, String endDate);

	Map<String, Object> rekapitulasiKehadiranByPegawai(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> rekapitulasiKehadiranByPegawai(Map<String, Object> dataPegawai, String startDate,
			String endDate);

	Map<String, Object> rekapitulasiKehadiranByUnitKerja(Integer idUnitKerja, String startDate, String endDate);

	Map<String, Object> rekapitulasiKehadiranByUnitKerjaRev(Integer idUnitKerja, String startDate, String endDate);

	Map<String, Object> rekapitulasiKehadiranAllPegawai(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> rekapitulasiIndexKehadiranAllPegawai(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> rekapitulasiIndeksKehadiranByunitKerja(Integer idUnitKerja, String startDate, String endDate);

	Map<String, Object> rekapitulasiIndeksKehadiranByPegawai(Integer idPegawai, String startDate, String endDate);

	List<Map<String, Object>> findFactorRateIndekkehadiran(String periode);

	List<Map<String, Object>> findListPenandaTangan();

	Map<String, Object> saveRekapKomponen(StrukHistoriVO vo);

	Map<String, Object> saveTotalIndexRekapitulasiKehadiran(StrukHistoriVO vo);

	Long reduceTime(Date jamAbsensi, Date jamJadwal);

	Map<String, Object> saveFactorRate(KelompokShiftKerjaCustomVO vo);

	Map<String, Object> jumlahKehadiranLemburKerjaSdm(Integer idPegawai, String startDate, String endDate);

	Map<String, Object> jumlahKehadiranLemburKerjaSdm(Integer idPegawai, String periode);

	Map<String, Object> saveLemburVerifikasiSdm(InputLemburSdmCustomVO vo);

	List<Pegawai> findPegawaiAktifAndVerifiedByUnitKerja(String period);

	String getRunningNumberStrukHistori();

	List<Map<String, Object>> findJumlahLembur(String period);

	Map<String, Object> saveUangLembur(Set<UangLemburVO> vo);

	Integer getkomponenIndexCutiNonShift();

	Integer getkomponenIndexCutiShift();

	Integer getIdNonShift();

	Integer getIdNonShiftPlus();

	Integer getIdShift2();

	Integer getIdShift3();

	Integer getIdIzin();

	Integer getTerlambat();

	Integer getLemburVerifiedbySDM(Integer idPegawai, String tgl);

	Map<String, Object> saveAbsenManual(MonitoringAbsenCustomVO vos);

	List<Map<String, Object>> getByLoc_Code(Integer idPegawai);

	List<Map<String, Object>> findDataPegawaiRev(Integer idUnitKerja, Integer idSubUnitKerja, Integer idPegawaiLogin);

	List<Map<String, Object>> getRekapStatusWFH(String bulan);

	List<Map<String, Object>> getDataHabsen(String tglAwal, String tglAkhir, Integer idPegawai);
	
	void updateLogbookKinerja(MonitoringAbsenVO vo) throws ParseException;

}
