package com.jasamedika.medifirst2000.service;

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

import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.RegistrasiPegawaiMobileVO;
import com.jasamedika.medifirst2000.vo.RekamDataPegawaiVO;

public interface PegawaiService extends BaseVoService<Pegawai, PegawaiVO, Integer> {

	List<PegawaiVO> getAllDokter();
	
	List<Map<String, Object>> getDokterBpjs();

	List<PegawaiVO> getAllDokterByRuanganAndTanggal(String kodeRuangan, Date tanggal);

	PegawaiVO add(PegawaiVO vo);

	PegawaiVO update(PegawaiVO vo);

	PegawaiVO findById(Integer key);

	PegawaiVO getPegawaiById(Integer id);

	List<PegawaiVO> getAllDokter(String name);

	List<PegawaiVO> findAll();

	List<PegawaiVO> findByNik(String nik);

	Map<String, Object> addPegawai(PegawaiVO vo);

	Map<String, Object> findAllPegawai();

	Map<String, Object> getAllPegawai(Integer page, Integer take, String sort, String dir, Integer id,
			String namaLengkap);

	List<Map<String, Object>> getAllByJenisPegawai(String getSettingDataFixed, String key);

	List<Map<String, Object>> getAllBySatuanKerja(Integer satuanKerjaId);

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

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

	Map<String, Object> findPegawaiById(Integer id);

	Map<String, Object> findPegawaiByRuangan(Integer ruangan, Integer tahun, Integer bulan);

	Map<String, Object> findPegawaiByRuangan(Integer ruangan, Integer tahun, Integer bulan, Integer pegawai);

	Map<String, Object> findPegawaiByRuanganAndPegawaiId(Integer ruangan, Integer tahun, Integer bulan, Integer id);

	Map<String, Object> dataAllPegawai();

	Map<String, Object> getPegawaiByPelaksana(Integer id);

	Map<String, Object> findAllPegawaiNoPaging();

	Map<String, Object> findAllPegawaiPNS();

	Map<String, Object> findAllPegawaiMitra();

	Map<String, Object> findAllPegawaiPesertaDidik();

	Map<String, Object> findAllPegawaiLainLain();

	Map<String, Object> findAllPegawaiDokterTamu();

	Map<String, Object> findPegawaiMeninggalPindahPensiunNoPaging();

	Map<String, Object> findPegawaiMeninggalPindahPensiunNonSdm();

	Map<String, Object> findAllPegawaiNoPagingSearch(String namaPegawai, String idJabatan, Integer idSubUnitKerja);

	Map<String, Object> findPegawaiByIdCustom(Integer idPegawai);

	Map<String, Object> findPegawaiByRuangan(Integer ruangan);

	RekamDataPegawaiVO findRekamDataPegawaiById(Integer id);

	Map<String, Object> findPegawaiByRuanganRev(Integer ruangan, Integer tahun, Integer bulan);

	Map<String, Object> findPegawaiByRuanganRev2(Integer ruangan, Integer tahun, Integer bulan);

	Map<String, Object> findPegawaiByRuanganRev2(Integer ruangan, Integer tahun, Integer bulan, Integer idPegawai);

	List<PegawaiVO> findAllPegawaiAktifByRuangan(Integer idRuangan);

	Map<String, Object> getPegawaiByIdMobile(Integer idPegawai);

	String SaveRegistrasiPegawaiMobile(RegistrasiPegawaiMobileVO vo);

	Map<String, Object> getTglpensiun(String tglLahir, Integer idPegawai);

	Map<String, Object> nonAktifPegawai(Integer idPegawai);

	List<Map<String, Object>> getPegawaiYgAkanPensiun(String startPeriode, String endPeriode);

	List<Map<String, Object>> getpegawaiByUnitkerja(Integer idSubUnitkerja);

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

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

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

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

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

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

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

	Map<String, Object> getPegawaiWithNamaUserById(Integer id);

	Map<String, Object> findPegawaiOutSourcingNoPaging();

	Map<String, Object> findKepalaPegawai(String namaJabatan);

	Integer getRuanganByIdPegawaiCustom(Integer id);

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

	Map<String, Object> findListJurusanByPendidikan(Integer pendidikanId);

	List<Integer> findPegawaiSDMforCred();

	Map<String, Object> searchPegawaiCustom(String nama, Integer idUnitKerja, Integer idKedudukan,
			Integer idStatusPegawai, List<Integer> listIdStatusPegawai, String tglMasuk);

	Map<String, Object> searchPegawaiCustom(String nama, Integer idUnitKerja, Integer idKedudukan,
			List<Integer> listStatusPegawaiId, String periode);

	Map<String, Object> searchMitraCustom(String nama, Integer idUnitKerja, Integer idKedudukan, String periode);

	Map<String, Object> searchDokterTamuCustom(String nama, Integer idUnitKerja, Integer idKedudukan, String periode);

	Map<String, Object> searchPesertaDidikCustom(String nama, Integer idUnitKerja, Integer idKedudukan, String periode);

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

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

	Map<String, Object> findPegawaiDetailById(Integer idPegawai);

	Map<String, Object> findPesertaDidikDetailById(Integer idPegawai);

	Map<String, Object> findListPegawaiPendapatanDepartemen(Integer idDepartemen, String month);

	List<Integer> findListIdPegawaiPendapatanDepartemen(Integer idDepartemen, String month);

	Map<String, Object> findListPegawaiPendapatanRuangan(Integer idDepartemen, Integer idRuangan, String month);

	List<Integer> findListIdPegawaiPendapatanRuangan(Integer idDepartemen, Integer idRuangan, String month);

	Map<String, Object> findListPegawaiPendapatanUnitKerja(Integer idUnitKerja, String month);

	List<Integer> findListIdPegawaiPendapatanUnitKerja(Integer idUnitKerja, String month);

	void resetLoginUser(Integer idPegawai);

	Map<String, Object> resetLoginPegawaiKeluar(Integer idPegawai);

	String hitungMasaKerja(Date tglMasuk);

	Map<String, Object> getEvaluasiJabatanByPegawai(Integer idPegawai);

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

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

	String findAvatar(Integer idPegawai);

}
