package com.jasamedika.medifirst2000.service.impl;

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.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.MapObjekModulToKelompokUserDao;
import com.jasamedika.medifirst2000.entities.KelompokUser;
import com.jasamedika.medifirst2000.entities.MapObjekModulToKelompokUser;
import com.jasamedika.medifirst2000.entities.ObjekModulAplikasi;
import com.jasamedika.medifirst2000.service.MapObjekModulToKelompokUserService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.KelompokUserVO;
import com.jasamedika.medifirst2000.vo.MapObjekModulToKelompokUserVO;
import com.jasamedika.medifirst2000.vo.ObjekModulAplikasiVO;

@Service("mapObjekModulToKelompokUserService")
public class MapObjekModulToKelompokUserServiceImpl implements MapObjekModulToKelompokUserService{
	
	@Autowired
	private MapObjekModulToKelompokUserDao mapObjekModulToKelompokUserDao;
	
	@Autowired
	private BaseConverterImpl<MapObjekModulToKelompokUserVO,MapObjekModulToKelompokUser> mapObjekModulToKelompokUserConverter;
	
	@Autowired
	private BaseConverterImpl<KelompokUserVO,KelompokUser> kelompokUserConverter;
	
	@Autowired
	private BaseConverterImpl<ObjekModulAplikasiVO,ObjekModulAplikasi> objekModulAplikasiConverter;
	
	// Alter Syamsu
	public MapObjekModulToKelompokUser findByObjekModulAplikasi(Integer objekModulAplikasiId, Integer kelompokUserId){
		return mapObjekModulToKelompokUserDao.findByObjekModulAplikasi(objekModulAplikasiId, kelompokUserId);
	}
	
	@Override
	public Map<String,Object> addMapObjekModulToKelompokUser(MapObjekModulToKelompokUserVO vo) {
		
		MapObjekModulToKelompokUser mapObjekModulToKelompokUser = new MapObjekModulToKelompokUser();
				
		if(CommonUtil.isNotNullOrEmpty(vo)){
			mapObjekModulToKelompokUser=mapObjekModulToKelompokUserConverter.transferVOToModel(vo, new MapObjekModulToKelompokUser());
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getKelompokUser())){
			mapObjekModulToKelompokUser.setKelompokUser(kelompokUserConverter.transferVOToModel(vo.getKelompokUser(), new KelompokUser()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getObjekModulAplikasi())){
			mapObjekModulToKelompokUser.setObjekModulAplikasi(objekModulAplikasiConverter.transferVOToModel(vo.getObjekModulAplikasi(), new ObjekModulAplikasi()));
		}
		
		mapObjekModulToKelompokUser=mapObjekModulToKelompokUserDao.save(mapObjekModulToKelompokUser);
		
		Map<String,Object> result=new HashMap<String,Object>();
		return result;
		
	}
	
	@Override
	public Map<String,Object> updateMapObjekModulToKelompokUser(MapObjekModulToKelompokUserVO vo) {
		
		MapObjekModulToKelompokUser mapObjekModulToKelompokUser = new MapObjekModulToKelompokUser();
				
		if(CommonUtil.isNotNullOrEmpty(vo)){
			mapObjekModulToKelompokUser=mapObjekModulToKelompokUserConverter.transferVOToModel(vo, new MapObjekModulToKelompokUser());
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getKelompokUser())){
			mapObjekModulToKelompokUser.setKelompokUser(kelompokUserConverter.transferVOToModel(vo.getKelompokUser(), new KelompokUser()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getObjekModulAplikasi())){
			mapObjekModulToKelompokUser.setObjekModulAplikasi(objekModulAplikasiConverter.transferVOToModel(vo.getObjekModulAplikasi(), new ObjekModulAplikasi()));
		}
		
		mapObjekModulToKelompokUser=mapObjekModulToKelompokUserDao.save(mapObjekModulToKelompokUser);
		
		Map<String,Object> result=new HashMap<String,Object>();
		return result;
		
	}
	
//	@Override
//	public List<ObjekModulAplikasi> findByKelompokUser(Integer kelompokUser) {		
//		return mapObjekModulToKelompokUserDao.findByKelompokUser(kelompokUser);
//	}
	
	@Override
	public Map<String,Object> findByKelompokUser(Integer kelompokUser) {
		Map<String,Object> result=new HashMap<String,Object>();
		List<MapObjekModulToKelompokUser> resultModel=mapObjekModulToKelompokUserDao.findByKelompokUser(kelompokUser);
		if(CommonUtil.isNotNullOrEmpty(resultModel)){
			result.put("mapObjekModulToKelompokUser", resultModel);
			result.put("dataFound", true);
		}else{
			result.put("dataFound", false);
		}
		return result;
	}
}
