package com.jasamedika.medifirst2000.service.impl;

import java.util.HashMap;
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.KendaliDokumenRekamMedisDao;
import com.jasamedika.medifirst2000.entities.KendaliDokumenRekamMedis;
import com.jasamedika.medifirst2000.entities.Pasien;
import com.jasamedika.medifirst2000.entities.StatusKendaliDokumen;
import com.jasamedika.medifirst2000.service.KendaliDokumenRekamMedisService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.KendaliDokumenRekamMedisVO;
import com.jasamedika.medifirst2000.vo.PasienVO;
import com.jasamedika.medifirst2000.vo.StatusKendaliDokumenVO;
@Service("KendaliDokumenRekamMedisService")
public class KendaliDokumenRekamMedisServiceImpl implements KendaliDokumenRekamMedisService{
	
	@Autowired
	private KendaliDokumenRekamMedisDao kendaliDokumenRekamMedisDao;
	
	@Autowired
	private BaseConverterImpl<PasienVO, Pasien> pasienConverter;
	
	@Autowired
	private BaseConverterImpl<StatusKendaliDokumenVO, StatusKendaliDokumen> statusKendaliDokumenConverter;
	
	@Autowired
	private BaseConverterImpl<KendaliDokumenRekamMedisVO, KendaliDokumenRekamMedis> kendaliDokumenRekamMedisConverter;

	@Override
	public Map<String, Object> saveKendaliDokumenRekamMedis(KendaliDokumenRekamMedisVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		if(CommonUtil.isNotNullOrEmpty(vo))
		{
			KendaliDokumenRekamMedis kendaliDokumenRekamMedis = kendaliDokumenRekamMedisConverter.transferVOToModel(vo, new KendaliDokumenRekamMedis());
			if(CommonUtil.isNotNullOrEmpty(vo.getStatusKendaliDokumen()))
			{
				kendaliDokumenRekamMedis.setStatusKendaliDokumen(statusKendaliDokumenConverter.transferVOToModel(vo.getStatusKendaliDokumen(),new StatusKendaliDokumen()));
			}
			
			if(CommonUtil.isNotNullOrEmpty(vo.getPasien()))
			{
				kendaliDokumenRekamMedis.setPasien(pasienConverter.transferVOToModel(vo.getPasien(), new Pasien()));
			}
			else
			{
				result.put("status", "Pasien tidak boleh kosong");
			}
			
			if(CommonUtil.isNullOrEmpty(vo.getTglUpdate()))
			{
				result.put("status", "Tanggal Update tidak boleh kosong");
			}
			
			if(!result.containsKey("status") && CommonUtil.isNotNullOrEmpty(kendaliDokumenRekamMedis))
			{
				KendaliDokumenRekamMedis model = kendaliDokumenRekamMedisDao.save(kendaliDokumenRekamMedis);
				result.put("norec", model.getNoRec());
			}
			
		}
		return result;
	}

}
