package com.jasamedika.medifirst2000.service.impl;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.InstruksiDao;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Instruksi;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.service.InstruksiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.AntrianPasienDiPeriksaVO;
import com.jasamedika.medifirst2000.vo.InstruksiCustomVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.InstruksiVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;

@Service("InstruksiService")
public class InstruksiServiceImpl extends BaseVoServiceImpl implements InstruksiService {
	
	@Autowired
	private BaseConverterImpl<RuanganVO, Ruangan> ruanganConverter; 
	
	@Autowired
	private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter; 
	
	@Autowired
	private BaseConverterImpl<InstruksiVO, Instruksi> instruksiConverter;
	
	@Autowired
	private BaseConverterImpl<AntrianPasienDiPeriksaVO, AntrianPasienDiPeriksa> antrianPasienDiperiksaConverter; 
	
	@Autowired
	private InstruksiDao instruksiDao;
	
	@Override
	public Map<String, Object> saveInstruksi(InstruksiCustomVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		//Set<Instruksi> listInstruksi = new HashSet<Instruksi>();
		if(CommonUtil.isNotNullOrEmpty(vo))
		{
			for(InstruksiVO voTemp : vo.getInstruksi())
			{
				Instruksi instruksi = instruksiConverter.transferVOToModel(voTemp, new Instruksi());
				if(CommonUtil.isNotNullOrEmpty(voTemp.getRuangan()))
				{
					Ruangan ruangan = ruanganConverter.transferVOToModel(voTemp.getRuangan(), new Ruangan());
					instruksi.setRuangan(ruangan);
				}
				if(CommonUtil.isNotNullOrEmpty(voTemp.getPetugas()))
				{
					instruksi.setPetugas(pegawaiConverter.transferVOToModel(voTemp.getPetugas(), new Pegawai()));
				}
				if(CommonUtil.isNotNullOrEmpty(voTemp.getPasienDaftar()))
				{
					instruksi.setPasien(antrianPasienDiperiksaConverter.transferVOToModel(voTemp.getPasienDaftar(), new AntrianPasienDiPeriksa()));
				}
				
				if(CommonUtil.isNotNullOrEmpty(instruksi))
				{
					Instruksi model = instruksiDao.save(instruksi);
					result.put(model.getTanggalInput()+"", model.getNoRec());
				}				
			}
		}
		
		return result;
	}

	@Override
	public List<Map<String, Object>> getInstruksi(String noCm) {
		List<Map<String, Object>> result =  instruksiDao.findInstruksi(noCm);				
		return result;
	}

}
