package com.jasamedika.medifirst2000.service;

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

import com.jasamedika.medifirst2000.entities.PegawaiHistoriRekapIndex;
import com.jasamedika.medifirst2000.vo.JatahCutiDanIzinVO;
import com.jasamedika.medifirst2000.vo.KelompokShiftKerjaCustomVO;
import com.jasamedika.medifirst2000.vo.ListTanggalCutiVO;
import com.jasamedika.medifirst2000.vo.PlanningPegawaiStatusVO;

public interface PermohonanStatusPegawaiService {

	public Map<String, Object> getUserLogin(Integer idPegawai);

	public Map<String, Object> noUsulan();

	public Map<String, Object> getLoadData(Integer ruanganId);

	public Map<String, Object> getDataPermohonanStatus(Integer id);

	public Map<String, Object> getDataMapPermohonanStatus(Integer id);

	public Map<String, Object> getDataCuti(Integer pegawaiId, String year, Integer statusPegawaiId);

	public Map<String, Object> savePlanningPegawaiStatus(PlanningPegawaiStatusVO vo);

	public Map<String, Object> perbaruiDataCuti(Integer idPegawai, Integer idStatusPegawai);

	public Map<String, Object> savePlanningPegawaiStatusRev(PlanningPegawaiStatusVO vo);

	public boolean validateTanggalPermohonan(Integer statusPegawaiPlanId, Set<ListTanggalCutiVO> listTanggalCutiVO,
			Integer idPegawai);

	public boolean validateTanggalPermohonanRev(Integer statusPegawaiPlanId, Set<ListTanggalCutiVO> listTanggalCutiVO,
			Integer idPegawai);

	public boolean validateTanggalPermohonan(Integer statusPegawaiPlanId, List<Date> listTgl, Integer idPegawai);

	public boolean validateTanggalPermohonanRev(List<Date> listTgl, Integer idPegawai);

	public Map<String, Object> getListPermohonanStatus(Integer ruanganId);

	public Map<String, Object> getListPermohonanStatusPegawai(Boolean sdm);

	public Map<String, Object> getListPermohonanStatusPegawaiPaging(Integer page, Integer limit, String sort,
			String dir, Integer idPegawai, String nama, String jenisPermohonan, Integer statusPermohonan,
			Boolean isSdm);

	public Map<String, Object> getListPermohonanStatusPegawaiPaging(Integer page, Integer limit, String sort,
			String dir, Integer idPegawai, String nama, String jenisPermohonan, Integer statusPermohonan,
			String tglPermohonan, Boolean isSdm, Boolean isCutiLuarNegeri, Boolean isCutiLuarKota);

	public Map<String, Object> penangguhanPerubahanStatusKehadiran(PlanningPegawaiStatusVO vo);

	public Map<String, Object> getApprovalStatus(Integer idPegawai);

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

	public Map<String, Object> getApprovalStatusPaging(Integer page, Integer limit, String sort, String dir,
			Integer idPegawai, String nama, String jenisPermohonan, Integer statusPermohonan);

	public Map<String, Object> getApprovalStatusPaging(Integer page, Integer limit, String sort, String dir,
			Integer idPegawai, String nama, String jenisPermohonan, Integer statusPermohonan, String tglPermohonan,
			Boolean isCutiLuarNegeri, Boolean isCutiLuarKota);

	public Map<String, Object> getApprovalStatusByNorecPlanning(Integer idPegawai, String noRec);

	public Map<String, Object> getApprovalStatusByStatusPegawaiPlan(Integer idPegawai, Integer statusPegawaiPlanId);

	public Map<String, Object> approvalPermohonanStatus(PlanningPegawaiStatusVO vo);

	public Map<String, Object> checkKelompokShiftKerja(PlanningPegawaiStatusVO vo, Integer statusPegawaiId,
			String noRecPlanning);

	public Map<String, Object> savePegawaiHistoriRekapIndex(PlanningPegawaiStatusVO vo,
			PegawaiHistoriRekapIndex pegawaiHistoriRekapIndex, Integer kelomokIndexId, String noRecPlanning);

	public Map<String, Object> unVerifPermohonanStatus(PlanningPegawaiStatusVO vo);

	public String getRunningNumber(String kegunaan);

	public Map<String, Object> setJatahCuti(KelompokShiftKerjaCustomVO vo);

	public Map<String, Object> setJatahCutiPegawai(JatahCutiDanIzinVO vo);

	public Map<String, Object> setJatahCutiRecursive(KelompokShiftKerjaCustomVO vo);

	public Map<String, Object> setJatahCutiPegawaiRecursive(JatahCutiDanIzinVO vo);

	public List<Map<String, Object>> getAllDataCuti();

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

	public Map<String, Object> updatePlanningPegawaiStatus(PlanningPegawaiStatusVO vo);

	public Map<String, Object> deletePlanningPegawaiStatus(String noRec);

	public JatahCutiDanIzinVO setJatahCutiDanIzinVo(Integer idPegawai, Integer idStatusPegawai);

	public Integer difCutiTerpakai(Integer cutiTerpakai, Integer dataCuti);

	public Integer countSisaCuti(Integer dataCuti, Integer cutiTerpakai, Integer cutiBersama, Boolean isTangguhkan);

	public Integer countJumlahPengajuanDiprosesByPegawai(Integer idPegawai, Integer idPlan);

	public Integer countJumlahPengajuanDiprosesByPegawai(Integer idPegawai, Integer idPlan, String noPlanning);

	public Integer countJumlahPengajuanTahunDepanDiprosesByPegawai(Integer idPegawai, Integer idPlan);

	public Integer countJumlahPengajuanTahunDepanDiprosesByPegawai(Integer idPegawai, Integer idPlan,
			String noPlanning);

	public Map<String, Object> checkPermohonanStatusPegawai(String norec);

}
