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.stereotype.Service;

import com.jasamedika.medifirst2000.dao.DepartemenDao;
import com.jasamedika.medifirst2000.dao.LevelTingkatDao;
import com.jasamedika.medifirst2000.dto.LevelTingkatDto;
import com.jasamedika.medifirst2000.entities.LevelTingkat;
import com.jasamedika.medifirst2000.service.LevelTingkatService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.util.JsonUtil;

@Service("LevelTingkatService")
public class LevelTingkatServiceImpl extends BaseVoServiceImpl implements LevelTingkatService
{	
	@Autowired
	private LevelTingkatDao levelTingkatDao;

	@Autowired
	private DepartemenDao departemenDao;

	@Override
	public Map<String, Object> save(LevelTingkatDto vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		LevelTingkat lt=new LevelTingkat();
		if(vo.getId()!=null){
			lt.setId(vo.getId());
		}
		lt.setKdProfile(vo.getKdProfile());
		lt.setKdLevelTingkat(generateKdLevelTingkat());
		lt.setLevelTingkat(vo.getNamaLevelTingkat());
		lt.setReportDisplay(vo.getReportDisplay());
		lt.setKdLevelTingkatHead(vo.getKdLevelTingkatHead());
		lt.setDepartemen(departemenDao.findOne(vo.getDepartemenId()));
		lt.setqLevelTingkat(vo.getQlevelTingkat());
		lt.setKodeExternal(vo.getKodeExternal());
		lt.setNamaExternal(vo.getNamaExternal());
		lt.setStatusEnabled(vo.getStatusEnabled());
		LevelTingkat resultDomain = levelTingkatDao.save(lt);
		if (CommonUtil.isNotNullOrEmpty(resultDomain)) {
			try {
				result.put("data", JsonUtil.ToMapObject(lt));
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}

		return result;
	}
	
	private Byte generateKdLevelTingkat() {
		return levelTingkatDao.getMaxLevelTingkat();
	}

	@Override
	public Map<String, Object> get(Integer levelTingkatId) {
		Map<String,Object> mapEmpty=new HashMap<String,Object>();
		Map<String,Object> map=levelTingkatDao.get(levelTingkatId);
		if (CommonUtil.isNotNullOrEmpty(map)) {
			return map;
		}else{
			return mapEmpty;
		}
	}

	@Override
	public List<Map<String, Object>> getAll() {
		List<Map<String,Object>> mapEmpty=new ArrayList<Map<String,Object>>();
		List<Map<String,Object>> map=levelTingkatDao.getAll();
		if (CommonUtil.isNotNullOrEmpty(map)) {
			return map;
		}else{
			return mapEmpty;
		}
	}

	@Override
	public List<Map<String, Object>> getAllDepartemen() {
		return departemenDao.findAllDepartemen();
	}


}