package com.jasamedika.medifirst2000.service;

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

import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.vo.IndekKinerjaVO;
import com.jasamedika.medifirst2000.vo.IndeksKinerjaIndividuCustomVO;
import com.jasamedika.medifirst2000.vo.IndeksKinerjaIndividuVO;
import com.jasamedika.medifirst2000.vo.MapKalenderToHariLiburVO;
import com.jasamedika.medifirst2000.vo.NilaiIndexKinerjaIndividuVO;
import com.jasamedika.medifirst2000.vo.TabelAcuanIndeksIKIVO;

public interface IndekKinerjaService {

	Map<String, Object> saveIndekKinerja(List<IndekKinerjaVO> vo);

	Pegawai getPegawaiByUserLogin();

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

	List<Map<String, Object>> findByUserId(String startDate, String endDate);

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

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

	List<Map<String, Object>> findTindakanByIdUserAndPeriod(String date);

	List<Map<String, Object>> findCountTindakanByIdUserAndPeriod(String startDate, String endDate);

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

	Double getPoin(Double jasaDokter, Double tarif, Double total);

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

	Map<String, Object> detailPoin(String tgl, Integer idPegawai);

	Map<String, Object> getIndekKinerjaKuantitasData(String periode, Integer idPegawai, Boolean isNew);

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

	List<Map<String, Object>> getIndekKinerjaKuantitasPerUnitKerja(String periode, Integer idUnitKerja);

	List<Map<String, Object>> findUraianTugasByTanggal(String date);

	Map<String, Object> SaveTotalIndexKinerja(NilaiIndexKinerjaIndividuVO vo);

	Map<String, Object> saveIndekKinerjaIndividu(IndeksKinerjaIndividuVO vo);

	Map<String, Object> saveAllIndekKinerja(IndeksKinerjaIndividuCustomVO vo);

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

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

	Map<String, Object> rekapIKI(Integer ruanganId, String periode);

	public List<Integer> splitIdProdukAdministrasi();

	Map<String, Object> rekapPoin(String periode, int idPegawai);

	Map<String, Object> saveTabelAcuanIndeksIKI(List<TabelAcuanIndeksIKIVO> vos);

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

	Double getIndeksIKI(Double nilai);

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

	/**
	 * @param idAlternatif
	 *            = 1-Reguler, 2-Eksekutif
	 */
	List<Map<String, Object>> getAllTindakanByDokterReview(String periode, Integer idPegawai, Integer idAlternatif);

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

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

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

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

	List<Map<String, Object>> getAllTindakanByDokterReportReview(String periode, Integer idPegawai, Integer idAlternatif);

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

	void generateAllTindakanDokter();

	List<Map<String, Object>> findPatientDetailForEveryTindakan(Integer idProduk, Integer idKelas, Integer idPegawai,
			String tgl, Boolean ffs);

	List<Map<String, Object>> findPatientDetailForEveryTindakanReview(Integer idProduk, Integer idKelas,
			Integer idPegawai, String tgl, Boolean ffs, Double diskon, Integer statusDiskon);

	List<Map<String, Object>> findPatientDetailForEveryTindakanReview(Integer idPegawai, String tgl, Boolean ffs);

	Map<String, Object> saveMapKalenderToHariLibur(MapKalenderToHariLiburVO vo);

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

	Double getNilai(Double jumlah, Double target);

	Double getHasil(Double nilai, Double bobot);

	List<Map<String, Object>> reportrekapitulasi(Integer idPegawai, String periode, Boolean isFFS);

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

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

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

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

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

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

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

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

	List<Map<String, Object>> findPatientDetailForEveryTindakanAll(Integer idProduk, Double harga, Integer idPegawai,
			String tgl);

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

	List<Integer> splitIdProdukAdministrasiAndLaborat();

	List<Integer> getDetailProdukAdministrasi(Integer idPegawai);

	List<Integer> getDetailProdukAdministrasi(Pegawai pgw);

}
