package com.jasamedika.medifirst2000.service.impl;

import java.util.ArrayList;
import java.util.Date;
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.IpsrsPerbaikanDao;
import com.jasamedika.medifirst2000.dao.LaundryDao;
import com.jasamedika.medifirst2000.dao.SaranaPrasaranaReportingDao;
import com.jasamedika.medifirst2000.dao.custom.LaundryDaoCustom;
import com.jasamedika.medifirst2000.service.ReportService;
import com.jasamedika.medifirst2000.service.SaranaPrasaranaReportingService;
import com.jasamedika.medifirst2000.util.DateUtil;

@Service("SaranaPrasaranaReportingService")
public class SaranaPrasaranaReportingServiceImpl  implements SaranaPrasaranaReportingService {
	
	@Autowired
	private LaundryDao laundryDao;

	@Autowired
	private LaundryDaoCustom laundryDaoCustom;
	
	@Autowired
	private IpsrsPerbaikanDao ipsrsPerbaikanDao;
	
	@Autowired 
	private SaranaPrasaranaReportingDao saranaPrasaranaReportingDao;
	
	@Override
	public Map<String, Object> getDaftarPengeringan(String startPeriode, String endPeriode) {
		Map<String,Object> maps=new HashMap<String,Object>();
		

		List<Map<String,Object>> pencucianLinens=new ArrayList<Map<String,Object>>();
		List<Map<String, Object>> listMap = saranaPrasaranaReportingDao.getProsesPengeringanInternal(startPeriode, endPeriode);
		for (Map<String, Object> map : listMap) {
			String noRecStrukPlanning = (String) map.get("noRec"); 
			String keteranganlainnya = (String) map.get("keteranganlainnya");
			Double beratLinen = (Double) map.get("beratLinen");
			String  namaMesin = (String) map.get("namaAlat");
			Integer kapasitasAlat = (Integer) map.get("kapasitasAlat");
			String satuanStandar = (String) map.get("satuanStandar");
			String noRecstrukPelayanan = (String) map.get("noRecstrukPelayanan");
			
			List<Map<String, Object>> listdata = laundryDao.getProsesPengeringanInternalbyNoRec(noRecStrukPlanning);
			List<Map<String, Object>> listdata2 = laundryDao.getPegawaiProsesCuci(noRecStrukPlanning);
			
			Map<String,Object> pencucianLinen=new HashMap<String,Object>();
			pencucianLinen.put("beratLinen",beratLinen);
			pencucianLinen.put("satuanStandar",satuanStandar);
			pencucianLinen.put("keterangan",keteranganlainnya);
			
			pencucianLinen.put("namaMesin",namaMesin);
			pencucianLinen.put("kapasitasAlat",kapasitasAlat);
			
			for(Map<String, Object>item:listdata){
				Integer jumlahCycle = (Integer) item.get("jumlahCycle");
				pencucianLinen.put("jumlahCycle",jumlahCycle);
				
			}
			
			for(Map<String, Object>item:listdata2){
				String namaPetugas = (String) item.get("namapegawai");
				pencucianLinen.put("namaPetugas",namaPetugas);
				
			}
			
			
			
			pencucianLinens.add(pencucianLinen);
		}	
		
		maps.put("daftarPengeringan", pencucianLinens);
		return maps;
	}
	
	
	@Override
	public Map<String, Object> getDaftarPengambilanLinenKotor(String startPeriode, String endPeriode) {
		Map<String,Object> maps=new HashMap<String,Object>();
		List<Map<String,Object>> pengambilanLinenKotor=new ArrayList<Map<String,Object>>();
		List<Map<String, Object>> listMap = saranaPrasaranaReportingDao.reportOrderLaundrySebelumDiTerima(startPeriode,endPeriode);
		for (Map<String, Object> map : listMap) {			
			Map<String,Object> linenKotorMap=new HashMap<String,Object>();
			String noRec 			 = (String) map.get("noRec"); 
			String keterangan 		 = (String) map.get("ket");
			String nostruk           = (String) map.get("nostruk");
			Double qty	   		     = (Double) map.get("qtyproduk");
			Date   tglstruk          = (Date)   map.get("tglstruk");
			Date   tglterima         = (Date)   map.get("tglterimakiriman");
			String namaMenyerahkan   = (String) map.get("namaMenyerahkan");
			String namaPenerima      = (String) map.get("namaPenerima");
			
			linenKotorMap.put("nostruk", nostruk);
			linenKotorMap.put("tglstruk", tglstruk==null?" - ":DateUtil.formatDate(tglstruk));
			linenKotorMap.put("tglterima", tglterima==null?" - ":DateUtil.formatDate(tglterima));
			linenKotorMap.put("namamenyerahkan", namaMenyerahkan==null?"":namaMenyerahkan);
			linenKotorMap.put("namapenerima", namaPenerima==null?"":namaPenerima);
			linenKotorMap.put("qty", qty);
			linenKotorMap.put("keterangan", keterangan);
									
			pengambilanLinenKotor.add(linenKotorMap);
		}	
		
		maps.put("pengambilanLinenKotor", pengambilanLinenKotor);
		return maps;
	}
	
	@Override
	public Map<String, Object> getAllPermintaanPerbaikan(String startPeriode, String endPeriode) {
		Map<String,Object> maps=new HashMap<String,Object>();
		
		List<Map<String, Object>> listPermintaanPerbaikan = saranaPrasaranaReportingDao.getReportAllPermintaanPerbaikan(startPeriode,endPeriode);
		List<Map<String,Object>> permintaanPerbaikan=new ArrayList<Map<String,Object>>();
		
		for (Map<String, Object> map : listPermintaanPerbaikan) {			
			Map<String,Object> permintaanPerbaikanMap=new HashMap<String,Object>();
			String noRec 			 = (String) map.get("noRec");
			String noOrder			 = (String) map.get("noOrder");
			String kdProduk			 = (String) map.get("kdProduk");
			String namaProduk	     = (String) map.get("namaProduk");
			Date  tglPesan			 = (Date) map.get("tglPesan");
			String merkProduk		 = (String) map.get("merkProduk");
			String typeProduk		 = (String) map.get("typeProduk");
			String noSeri			 = (String) map.get("noSeri");
			String keluhan			 = (String) map.get("keluhan");
			String pelapor			 = (String) map.get("pelapor");
			String namaRuangan		 = (String) map.get("namaRuangan");
//			String statusPengerjaan  = (String) map.get("statusPengerjaan");
//			String statusRespon		 = (String) map.get("statusRespon");
			String ketStatusRespon 	 = (String) map.get("ketStatusRespon");
						
			permintaanPerbaikanMap.put("noOrder", noOrder);
			permintaanPerbaikanMap.put("kdProduk", kdProduk);
			permintaanPerbaikanMap.put("namaProduk", namaProduk);
			permintaanPerbaikanMap.put("tglPesan", tglPesan==null?" - ":DateUtil.formatDate(tglPesan));
			permintaanPerbaikanMap.put("merkProduk", merkProduk);
			
			permintaanPerbaikanMap.put("typeProduk", typeProduk);
			permintaanPerbaikanMap.put("noSeri", noSeri);
			permintaanPerbaikanMap.put("keluhan", keluhan);
			permintaanPerbaikanMap.put("pelapor", pelapor);
			permintaanPerbaikanMap.put("namaRuangan", namaRuangan);
//			permintaanPerbaikanMap.put("statusPengerjaan", statusPengerjaan);
//			permintaanPerbaikanMap.put("statusRespon", statusRespon);
			permintaanPerbaikanMap.put("ketStsRespon", ketStatusRespon);
									
			permintaanPerbaikan.add(permintaanPerbaikanMap);
		}	
		
		maps.put("permintaanPerbaikan", permintaanPerbaikan);
		return maps;
	}

}
 
