package com.jasamedika.medifirst2000.service.impl;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.converter.KelahiranYangLaluConverter;
import com.jasamedika.medifirst2000.converter.RiwayatKelahiranYangLaluConverter;
import com.jasamedika.medifirst2000.dao.AntrianPasienDiPeriksaDao;
import com.jasamedika.medifirst2000.dao.RiwayatKelahiranYangLaluDao;
import com.jasamedika.medifirst2000.entities.AntrianPasienDiPeriksa;
import com.jasamedika.medifirst2000.entities.KelahiranYangLalu;
import com.jasamedika.medifirst2000.entities.RiwayatKelahiranYangLalu;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.RiwayatKelahiranYangLaluService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.JsonUtil;
import com.jasamedika.medifirst2000.vo.KelahiranYangLaluVO;
import com.jasamedika.medifirst2000.vo.RiwayatKelahiranYangLaluVO;

/**
 * Implement class for PAPStatusFungsionalService
 * 
 * @author Askur
 */
@Service("RiwayatKelahiranYangLaluService")
public class RiwayatKelahiranLaluServiceImpl implements RiwayatKelahiranYangLaluService<RiwayatKelahiranYangLaluVO> {
	@Autowired
	private RiwayatKelahiranYangLaluDao riwayatKelahiranYangLaluDao;
	@Autowired
	private AntrianPasienDiPeriksaDao antrianPasienDiPeriksaDao;
	@Autowired
	private RiwayatKelahiranYangLaluConverter riwayatKelahiranYangLaluConverter;
	@Autowired
	private KelahiranYangLaluConverter kelahiranYangLaluConverter;
	
	@Override
	public Map<String,Object> addRiwayatKelahiranYangLalu(RiwayatKelahiranYangLaluVO vo) {
		Map<String,Object> result=new HashMap<String,Object>();
		RiwayatKelahiranYangLalu model=riwayatKelahiranYangLaluConverter.transferVOToModel(vo, new RiwayatKelahiranYangLalu());
		AntrianPasienDiPeriksa antrian=antrianPasienDiPeriksaDao.findByNoRec(vo.getAntrianPasienDiPeriksa().getNoRec());
		model.setAntrianPasienDiPeriksa(antrian);
		List<KelahiranYangLalu> list=new ArrayList<KelahiranYangLalu>();
		for(KelahiranYangLaluVO detailVo:vo.getKelahiranYangLaluSet()){
			KelahiranYangLalu detail=kelahiranYangLaluConverter.transferVOToModel(detailVo, new KelahiranYangLalu());
			detail.setRiwayatKelahiranYangLalu(model);
			list.add(detail);
		}
		model.getKelahiranYangLaluSet().clear();
		model.getKelahiranYangLaluSet().addAll(list);
		RiwayatKelahiranYangLalu resultModel=riwayatKelahiranYangLaluDao.save(model);
		if(CommonUtil.isNotNullOrEmpty(resultModel)){	
			try {
				result.put("riwayatKelahiranYangLalu", JsonUtil.ToMap(resultModel));
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		return result;
	}

	@Override
	public RiwayatKelahiranYangLaluVO add(RiwayatKelahiranYangLaluVO vo)
			throws JpaSystemException, ServiceVOException {
		return null;
	}

	@Override
	public RiwayatKelahiranYangLaluVO update(RiwayatKelahiranYangLaluVO vo)
			throws JpaSystemException, ServiceVOException {
		return null;
	}

	@Override
	public Boolean delete(String key) throws JpaSystemException {
		return null;
	}

	@Override
	public RiwayatKelahiranYangLaluVO findById(String key) throws JpaSystemException {
		return null;
	}

	@Override
	public List<RiwayatKelahiranYangLaluVO> findAll() throws JpaSystemException {
		return null;
	}

	@Override
	public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
			String sort, String dir) {
		return null;
	}



}
