package com.jasamedika.medifirst2000.service;

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

import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;

import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.vo.RuanganVO;

public interface RuanganService<T> extends BaseVoService<Ruangan, RuanganVO, Integer> {

	List<RuanganVO> findRuanganByDepartemen();

	List<RuanganVO> findRuanganRanap();

	List<RuanganVO> findRuanganJalan();

	List<RuanganVO> findRuanganOperator();

	List<RuanganVO> findRuanganByDepartemenSettingDataFixed(String prefixInstalasi);

	Map<String, Object> findByName(Integer page, Integer limit, String sort, String dir, String nama, String kdRuangan);

	Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Specification<Ruangan> spec,
			Pageable pageable);

	Map<String, Object> ruanganPaging(Integer page, Integer limit, String sort, String dir,
			Specification<Ruangan> spec);

	List<RuanganVO> findRuanganByDepartemenByName(String nama);

	Collection<RuanganVO> findRuanganLaboratorium();

	public List<Ruangan> findRuanganByParent(Integer idRuangan);

	public Integer countRuanganBilik(Integer idRuangan);

	List<RuanganVO> findRuanganByDepartemenDetail();

	List<RuanganVO> findRuanganRehamMedik();

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

	Map<String, Object> findAllRuanganForTagihan(Integer instalasiId);

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

	List<Map<String, Object>> findKamarByRuangan(Integer idRuangan);

	/*
	 * Author Iwan Kasan
	 */
	Map<String, Object> getRuanganByIdDep();

	Map<String, Object> getJmlTempatTidur();

	Map<String, Object> getJmlTempatTidurByIdRuangan(Integer idRuangan);

	List<RuanganVO> findRuanganPenunjang();

	List<Map<String, Object>> findListRuanganDepartemen(Integer departemenId);

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

	Map<String, Object> getRuanganById(Integer idRuangan);

}
