package com.jasamedika.medifirst2000.service.impl;

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

import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.dao.PemantauanKinerjaPihakKetigaDao;
import com.jasamedika.medifirst2000.entities.BaseFilePemantauanKinerjaPihakKetiga;
import com.jasamedika.medifirst2000.entities.PemantauanKinerjaPihakKetiga;
import com.jasamedika.medifirst2000.service.PemantauanKinerjaPihakKetigaService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.BaseFilePemantauanKinerjaPihakKetigaVO;
import com.jasamedika.medifirst2000.vo.PemantauanKinerjaPihakKetigaVO;

@Service("pemantauanKinerjaPihakKetigaService")
public class PemantauanKinerjaPihakKetigaServiceImpl implements PemantauanKinerjaPihakKetigaService{
	
	
	@Autowired
	private PemantauanKinerjaPihakKetigaDao pemantauanKinerjaPihakKetigaDao;
	
	@Autowired
	private BaseConverterImpl<PemantauanKinerjaPihakKetigaVO, PemantauanKinerjaPihakKetiga> pemantauanKinerjaPihakKetigaConverter;
	
	@Override
	public Map<String, Object> savePemantauanKinerjaPihakKetiga(PemantauanKinerjaPihakKetigaVO vo){
		Map<String, Object> result = new HashMap<>();
		PemantauanKinerjaPihakKetiga pemantauanKinerjaPihakKetiga = pemantauanKinerjaPihakKetigaConverter.transferVOToModel(vo, new PemantauanKinerjaPihakKetiga());
		
		if(CommonUtil.isNotNullOrEmpty(vo.getHasilPemantauan())){
			try{
				byte[] decodedBytes = Base64.decodeBase64(vo.getHasilPemantauan());
				pemantauanKinerjaPihakKetiga.setFile(decodedBytes);
			}catch (Exception ex){
				ex.printStackTrace();
			}
		}
		
		if(CommonUtil.isNotNullOrEmpty(pemantauanKinerjaPihakKetiga)){
			PemantauanKinerjaPihakKetiga pemantauanKinerjaPihakKetigaResult = pemantauanKinerjaPihakKetigaDao.save(pemantauanKinerjaPihakKetiga);
			result.put("id", pemantauanKinerjaPihakKetigaResult.getId());
		}
		return result;
	}
	
	@Override
	public Map<String, Object> getPemantauanKinerjaPihakKetiga(){
		Map<String, Object> result = new HashMap<>();
		List<Map<String, Object>> listData = pemantauanKinerjaPihakKetigaDao.getPemantauanKinerjaPihakKetiga();
		if(CommonUtil.isNotNullOrEmpty(listData)){
			result.put("listPemantauanKinerja", listData);
		}
		return result;
	}
	
	@Override
	public Boolean updatePemantauanKinerjaPihakKetiga(PemantauanKinerjaPihakKetigaVO vo){
		PemantauanKinerjaPihakKetiga pemantauanKinerjaPihakKetiga = pemantauanKinerjaPihakKetigaConverter.transferVOToModel(vo, new PemantauanKinerjaPihakKetiga());
		if(CommonUtil.isNotNullOrEmpty(pemantauanKinerjaPihakKetiga)){
			PemantauanKinerjaPihakKetiga pemantauanKinerjaPihakKetigaResult = pemantauanKinerjaPihakKetigaDao.save(pemantauanKinerjaPihakKetiga);
			return true;
		}
		return false;
	}
	
	@Override
	public Boolean deletePemantauanKinerjaPihakKetiga(Integer id){
		PemantauanKinerjaPihakKetiga pemantauanKinerjaPihakKetiga = pemantauanKinerjaPihakKetigaDao.findOne(id);
		if(CommonUtil.isNotNullOrEmpty(pemantauanKinerjaPihakKetiga)){
			pemantauanKinerjaPihakKetigaDao.delete(pemantauanKinerjaPihakKetiga);
			return true;
		}
		return false;
	}
	
	@Override
	public Map<String, Object> downloadHasilPemantauan(Integer id){
		if(CommonUtil.isNotNullOrEmpty(id)){
			return pemantauanKinerjaPihakKetigaDao.downloadHasilPemantauan(id);
		} else {
			return null;
		}
	}
	
}
