package com.jasamedika.medifirst2000.service.impl;

import java.util.Date;
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.AnamnesisConverter;
import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.PasienConverter;
import com.jasamedika.medifirst2000.converter.RiwayatPenyakitPengobatanConverter;
import com.jasamedika.medifirst2000.dao.AnamnesisDao;
import com.jasamedika.medifirst2000.dao.AnamnesisDao;
import com.jasamedika.medifirst2000.entities.Anamnesis;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.Anamnesis;
import com.jasamedika.medifirst2000.entities.PapAnamesis;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.RiwayatPenyakitPengobatan;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.service.AnamnesisService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.AnamnesisVO;
import com.jasamedika.medifirst2000.vo.AntrianPasienDiPeriksaVO;
import com.jasamedika.medifirst2000.vo.AnamnesisVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.RiwayatPenyakitPengobatanVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;


/**
 * Implement class for PreskripsiDietService
 * 
 * @author Adik
 * @param <T>
 */


@Service("anamnesisService")
public class AnamnesisServiceImpl extends BaseVoServiceImpl implements AnamnesisService {
	
	@Autowired
	private BaseConverterImpl<RuanganVO, Ruangan> ruanganConverter; 
	
	@Autowired
	private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter; 
	
	@Autowired
	private BaseConverterImpl<AnamnesisVO, Anamnesis> anamnesisConverter;
	
	@Autowired
	private BaseConverterImpl<AntrianPasienDiPeriksaVO, AntrianPasienDiPeriksa> antrianPasienDiperiksaConverter; 
	
	@Autowired
	private AnamnesisDao anamnesisDao;	

	@Override
	public Map<String, Object> saveAnamnesis(AnamnesisVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		if(CommonUtil.isNotNullOrEmpty(vo))
		{
			Anamnesis anamnesis = anamnesisConverter.transferVOToModel(vo, new Anamnesis());
			if(CommonUtil.isNotNullOrEmpty(vo.getRuangan()))
			{
				Ruangan ruangan = ruanganConverter.transferVOToModel(vo.getRuangan(), new Ruangan());
				anamnesis.setRuangan(ruangan);
			}
			if(CommonUtil.isNotNullOrEmpty(vo.getPetugas()))
			{
				anamnesis.setPetugas(pegawaiConverter.transferVOToModel(vo.getPetugas(), new Pegawai()));
			}
			if(CommonUtil.isNotNullOrEmpty(vo.getPasienDaftar()))
			{
				anamnesis.setPasien(antrianPasienDiperiksaConverter.transferVOToModel(vo.getPasienDaftar(), new AntrianPasienDiPeriksa()));
			}
			
			if(CommonUtil.isNotNullOrEmpty(anamnesis))
			{
				Anamnesis model = anamnesisDao.save(anamnesis);
				result.put(model.getTanggalInput()+"", model.getNoRec());
			}				
		}	
		
		return result;
	}

	@Override
	public List<Map<String, Object>> getAnamnesis(String noCm) {
		List<Map<String, Object>> result = anamnesisDao.findAnamnesis(noCm);
		return result;
	}	
	
	@Override
	public Map<String,Object> findByNoCmAndTglInput(String noCm, Date tglInput) {
		Map<String,Object> result=new HashMap<String,Object>();
		Anamnesis resultModel=anamnesisDao.findAnamnesisByNoCmAndTglInput(noCm, tglInput);
		if(CommonUtil.isNotNullOrEmpty(resultModel)){
			result.put("anamnesis", resultModel);
			result.put("dataFound", true);
		} else {
			result.put("dataFound", false);
		}
		return result;
	}

}
