package com.jasamedika.medifirst2000.service.impl;

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.DepartemenConverter;
import com.jasamedika.medifirst2000.converter.JabatanConverter;
import com.jasamedika.medifirst2000.converter.KelompokEvaluasiConverter;
import com.jasamedika.medifirst2000.converter.KomponenEvaluasiConverter;
import com.jasamedika.medifirst2000.converter.SatuanHasilConverter;
import com.jasamedika.medifirst2000.dao.KomponenEvaluasiDao;
import com.jasamedika.medifirst2000.entities.Departemen;
import com.jasamedika.medifirst2000.entities.KelompokEvaluasi;
import com.jasamedika.medifirst2000.entities.KomponenEvaluasi;
import com.jasamedika.medifirst2000.entities.SatuanHasil;
import com.jasamedika.medifirst2000.service.KomponenEvaluasiService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.KomponenEvaluasiVO;


@Service("KomponenEvaluasiService") 
public class KomponenEvaluasiServiceImpl extends BaseVoServiceImpl implements KomponenEvaluasiService {

	@Autowired
	private KomponenEvaluasiDao komponenEvaluasiDao;

	@Autowired
	public KomponenEvaluasiConverter komponenEvaluasiConverter;
	
	@Autowired
	public DepartemenConverter departemenConverter;
	
	@Autowired
	public JabatanConverter jabatanConverter;
	
	@Autowired
	public KelompokEvaluasiConverter kelompokEvaluasiConverter;

	@Autowired
	public SatuanHasilConverter satuanHasilConverter;
	
	 
	@Override
	public KomponenEvaluasi findByIdKomponenEvaluasi(Integer id) {
		 
		return komponenEvaluasiDao.findByIdKomponenEvaluasi(id);
	}

	@Override
	public KomponenEvaluasiVO add(KomponenEvaluasiVO vo) {
		KomponenEvaluasi komponenEvaluasi= komponenEvaluasiConverter.transferVOToModel(vo, new KomponenEvaluasi()) ;
		if (CommonUtil.isNotNullOrEmpty(vo.getId())){
			
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getDepartemen())){
			komponenEvaluasi.setDepartemen(departemenConverter.transferVOToModel(vo.getDepartemen(), new Departemen()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getKelompokEvaluasi())){
			komponenEvaluasi.setKelompokEvaluasi(kelompokEvaluasiConverter.transferVOToModel(vo.getKelompokEvaluasi(), new KelompokEvaluasi()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getSatuanHasil())){
			komponenEvaluasi.setSatuanHasil(satuanHasilConverter.transferVOToModel(vo.getSatuanHasil(), new SatuanHasil()));
		}
		if(CommonUtil.isNullOrEmpty(vo.getNoUrut())){
			Integer count =komponenEvaluasiDao.countKomponenEvaluasi();
			count++;
			komponenEvaluasi.setNoUrut(count);
			komponenEvaluasi.setqKomponenEvaluasi(count);
		}
		komponenEvaluasiDao.save(komponenEvaluasi);
		
		
		return komponenEvaluasiConverter.transferModelToVO(komponenEvaluasi, new KomponenEvaluasiVO());
	}

	@Override
	public KomponenEvaluasiVO update(KomponenEvaluasiVO vo) {
		
		KomponenEvaluasi komponenEvaluasi= komponenEvaluasiConverter.transferVOToModel(vo, new KomponenEvaluasi()) ;
		
		if(CommonUtil.isNotNullOrEmpty(vo.getDepartemen())){
			komponenEvaluasi.setDepartemen(departemenConverter.transferVOToModel(vo.getDepartemen(), new Departemen()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getKelompokEvaluasi())){
			komponenEvaluasi.setKelompokEvaluasi(kelompokEvaluasiConverter.transferVOToModel(vo.getKelompokEvaluasi(), new KelompokEvaluasi()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getSatuanHasil())){
			komponenEvaluasi.setSatuanHasil(satuanHasilConverter.transferVOToModel(vo.getSatuanHasil(), new SatuanHasil()));
		}
		 
		komponenEvaluasiDao.save(komponenEvaluasi);
		
		
		return komponenEvaluasiConverter.transferModelToVO(komponenEvaluasi, new KomponenEvaluasiVO());
	}

	@Override
	public boolean delete(Integer id) {
		return false;
	}

	@Override
	public KomponenEvaluasi findById(Integer id) {
		 return komponenEvaluasiDao.findByIdKomponenEvaluasi(id);
	}

	@Override
	public List<Map<String,Object>> findAll() {
		 	return  komponenEvaluasiDao.findAllKomponenEvaluasi();
	}

	

}
