package com.jasamedika.medifirst2000.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.jasamedika.medifirst2000.entities.DokumenTemplate;
import com.jasamedika.medifirst2000.vo.DokumenTemplateVO;
import com.jasamedika.medifirst2000.vo.KirimDraftVO;
import com.jasamedika.medifirst2000.vo.SuratMasukDariExternalVO;
import com.jasamedika.medifirst2000.vo.SuratMasukInternalEksternalVO;
import com.jasamedika.medifirst2000.vo.SuratMasukKeEksternalVO;
import com.jasamedika.medifirst2000.vo.SuratMasukKeInternalVO;
import com.jasamedika.medifirst2000.vo.SuratMasukVO;
import com.jasamedika.medifirst2000.vo.UploadFilesVO;
import com.jasamedika.medifirst2000.vo.VerbalKonsepVO;

public interface SuratMasukService {

	Map<String, Object> saveSuratMasuk(SuratMasukVO vo, String noRec, Integer id, String noRecStrukPelayanan);

	Map<String, Object> uploadFiles(UploadFilesVO vo) throws IOException;

	Map<String, Object> saveUnitPembuatSurat(SuratMasukVO vo);

	String GenerateNoDokumen();

	Map<String, Object> getDaftarDraft(Integer page, Integer limit, String sort, String dir, String dateStart,
			String dateEnd, Integer namaSurat);
	List<DokumenTemplate> getAllDokumenTemplate(Integer page, Integer limit, String sort, String dir, String dateStart,
			String dateEnd, Integer namaSurat);
	Map<String, Object> saveKirimDraft(SuratMasukVO vo, Integer id, String noRec);

	Map<String, Object> getDaftarDraftSuratMasuk(Integer page, Integer limit, String sort, String dir, String dateStart,
			String dateEnd);

	Map<String, Object> saveVerbalKonsep(SuratMasukVO vo, Integer id, String noRec);

	Map<String, Object> getDokumenVerbalKonsep(Integer page, Integer limit, String sort, String dir, String noRec);

	Map<String, Object> getDaftarSebelumSuratMasuk(Integer page, Integer limit, String sort, String dir,
			String dateStart, String dateEnd);

	Map<String, Object> getDaftarDraftVerifikasi(Integer page, Integer limit, String sort, String dir, String dateStart,
			String dateEnd, Integer suratId);

	Map<String, Object> saveUnitPembuatSuratInternal(SuratMasukVO vo);

	Map<String, Object> saveKirimSuratInternal(SuratMasukVO vo, Integer id);
	
	String uploadDocumentTemplateSurat(DokumenTemplateVO dokumenTemplateVO);
	String saveDraftSurat(DokumenTemplateVO dokumenTemplateVO);
	DokumenTemplate findById(Integer id);
	Map<String,Object> findPathFileById(Integer id);
	String getRunningNumber();
	List<Map<String,Object>> getAllDraftSuratByPeriode(String tglAwal, String tglAkhir,Integer idRuangan);
	Map<String,Object> getDraftSuratById(Integer id);
	String saveKirimDraftSurat(KirimDraftVO kirimDraftVO);
	List<Map<String,Object>> getAllDraftSuratByRuanganPeriode(String tglAwal, String tglAkhir,Integer idRuangan);
	List<Map<String,Object>> getAllDraftSuratByRuangan(Integer idRuangan);
	List<Map<String, Object>> findByDokumenTujuanByIdDokumen(Integer id);
	void deleteDokumenMasuk(String norec);
	Map<String,Object> getDraftSuratByIdAndRuangan(Integer id,Integer idRuangan);
	String saveVerbalKonsep(VerbalKonsepVO verbalKonsepVO);
	Map<String,Object> getDraftSuratVerbalKonsepByIdDokumen(Integer id);
	String saveSuratMasukDariExternal(SuratMasukDariExternalVO suratMasukDariExternalVO);
	List<Map<String,Object>> getListDokumenMasukInternalExternal(String tglAwal, String tglAkhir,Integer idRuangan);
	Map<String,Object> getDokumenMasukInternalExternalBynoRec(String norec);
	Map<String,Object> getDokumenMasukInternalExternalByIdDokumen(Integer idDokumen);
	//Distibusi surat
	String saveKirimDistribusiSurat(KirimDraftVO kirimDraftVO);
	String saveTerimaSurat(KirimDraftVO kirimDraftVO);
	//Surat Masuk Internal dan Eksternal
	String saveSuratMasukKeInternalEksternal(SuratMasukInternalEksternalVO suratMasukInternalEksternalVO);
	List<Map<String,Object>> getAllSuratMasukPenomoranByPeriodeAndRuangan(String tglAwal, String tglAkhir,Integer idRuangan);
	//List distribusi surat
	List<Map<String,Object>> getListDaftarDistribusiSurat(String tglAwal, String tglAkhir,Integer idRuangan);
	
	List<Map<String,Object>> getAllSuratMasukPenomoranByPeriodeAndRuanganTujuan(String tglAwal, String tglAkhir,Integer idRuangan);
	Map<String,Object> getDokumenMasukKeluarBuatPenomoranByNoRec(String norec);
	
	//RuanganTujuan distribusi surat
	List<Map<String, Object>> getListDaftarDistribusiSuratTujuan(String tglAwal, String tglAkhir, Integer idRuangan);
	
	String saveSuratMasukKeExternal(SuratMasukKeEksternalVO suratMasukKeEksternal);
	String saveSuratMasukKeInternal(SuratMasukKeInternalVO suratMasukKeInternal);
	String getNoSuratKeInternal(Integer idUnitPemrakarsa, Integer bulan, Integer tahun);
	String getNoSuratKeEksternal(Integer idUnitPemrakarsa, Integer idKlasifikasiArsip, Integer idSubKlasifikasiArsip, Integer tahun);
	
	//List Surat Masuk ke Eksternal
	List<Map<String, Object>> getListSuratMasukKeEksternal(String tglAwal, String tglAkhir, Integer idRuangan);
	List<Map<String, Object>> getListSuratMasukJangkaWaktu(String tglAwal, String tglAkhir, Integer idRuangan);
}
