package com.jasamedika.medifirst2000.service.impl;

import java.util.HashMap;
import java.util.Map;import org.hibernate.annotations.GenerationTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.dao.DetailPengadaanDao;
import com.jasamedika.medifirst2000.dao.PegawaiDao;
import com.jasamedika.medifirst2000.dao.RekananDao;
import com.jasamedika.medifirst2000.dao.StrukRekapPemenangDao;
import com.jasamedika.medifirst2000.dao.custom.KartuPengendaliDaoCustom;
import com.jasamedika.medifirst2000.service.ReportPengadaanService;
import com.jasamedika.medifirst2000.util.CommonUtil;

@Service("reportPengadaanService")
public class ReportPengadaanServiceImpl extends BaseAngaranServiceImpl  implements ReportPengadaanService{
	
	@Autowired
	private KartuPengendaliDaoCustom kartuPengendaliDaoCustom;
	
	@Autowired
	private DetailPengadaanDao detailPengadaanDao;
	
	@Autowired
	private PegawaiDao pegawaiDao;
	
	@Autowired
	private RekananDao rekananDao;
	
	@Autowired
	private StrukRekapPemenangDao strukRekapPemenangDao;

	@Override
	public Map<String, Object> reportHps(String noRec) {
		Map<String,Object> result=new HashMap<String,Object>();
		result.put("kartuPengendaliHeader",kartuPengendaliDaoCustom.getHpsHeaderByNoRecReport(noRec));
		result.put("kartuPengendaliDetail",kartuPengendaliDaoCustom.getHpsDetailByParentReport(noRec));
		return result;
	}

	@Override
	public Map<String, Object> reportKartuPengendali(String noRec) {
		Map<String,Object> result=new HashMap<String,Object>();
		
		
		Map<String,Object>header=kartuPengendaliDaoCustom.getKartuPengendaliHeaderByNoRecReport(noRec);
		if(CommonUtil.isNotNullOrEmpty(header)){
			String namaPengendali=(String) header.get("namaPengendali");
			
			if(namaPengendali.equalsIgnoreCase("Bagian Sumber Daya Manusia")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturSumberDayaManusia"))));
				result.put("jenisDirektur", "Direktur SDM");
				
				result.put("jenisPengendali", "Koordinator Perencanaan SDM");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianSumberDayaManusia"))));
				
			}else if(namaPengendali.equalsIgnoreCase("Bagian Umum")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturUmumDanOperasional"))));
				result.put("jenisDirektur", "Direktur Umum");
				
				result.put("jenisPengendali", "Koordinator Perencanaan Umum");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianUmum"))));
				
			}else if(namaPengendali.equalsIgnoreCase("Inst . Prasarana dan sarana Rumah Sakit")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturUmumDanOperasional"))));
				result.put("jenisDirektur", "Direktur Umum");
				
				result.put("jenisPengendali", "Koordinator Perencanaan Prasarana dan sarana Rumah Sakit");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianPrasaranaDanSaranaRumahSakit"))));
				
			}else if(namaPengendali.equalsIgnoreCase("Instalasi Teknologi Informasi")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturUmumDanOperasional"))));
				result.put("jenisDirektur", "Direktur Umum");
				
				result.put("jenisPengendali", "Koordinator Perencanaan Teknologi Informasi");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianInstalasiTeknologiInformasi"))));
				
			}else if(namaPengendali.equalsIgnoreCase("Instalasi Gizi")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturUmumDanOperasional"))));
				result.put("jenisDirektur", "Direktur Umum");
				
				result.put("jenisPengendali", "Koordinator Perencanaan Gizi");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianInstalasiGizi"))));
			}else if(namaPengendali.equalsIgnoreCase("Bagian Medik")){
				result.put("direkturTerkait", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturMedikDanPerawatan"))));
				result.put("jenisDirektur", "Direktur Medik");
				
				result.put("jenisPengendali", "Koordinator Perencanaan Medik");
				result.put("pengendali", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianMedik"))));
			}
		}
		result.put("kartuPengendaliDetail",kartuPengendaliDaoCustom.getKartuPengendaliDetailByParentReport(noRec));
		result.put("kartuPengendaliHeader",kartuPengendaliDaoCustom.getKartuPengendaliHeaderByNoRecReport(noRec));
		result.put("direkturKeuangan", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("KdDirekturKeuangan"))));
		result.put("ppk", pegawaiDao.dataPegawaiByNoRec(new Integer(GetSettingDataFixed("kdBagianPpk"))));
		return result;
	}

	
	@Override
	public Map<String, Object> reportSps(Integer supplierId,String noRecKartuPengendaliId) {
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("supplier",rekananDao.findById(supplierId));
		result.put("detailProduk", strukRekapPemenangDao.findPrdukBySupplier(supplierId, noRecKartuPengendaliId));
		result.put("total", strukRekapPemenangDao.totalProdukBySupplier(supplierId, noRecKartuPengendaliId));
		return result;
	}

	@Override
	public Map<String, Object> reportSpph(String noRec) {

		Map<String,Object> result=new HashMap<String,Object>();
		result.put("kartuPengendaliHeader",kartuPengendaliDaoCustom.getKartuPengendaliHeaderByNoRec(noRec));
		result.put("kartuPengendaliDetail",kartuPengendaliDaoCustom.getKartuPengendaliDetailByParent(noRec));
		result.put("pengadaan",detailPengadaanDao.findByKartuPengendaliHeader(noRec));
		return result;
	
	}


}
