package com.jasamedika.medifirst2000.service.impl;

import java.util.ArrayList;
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.MapAlatToProdukToBhpDao;
import com.jasamedika.medifirst2000.dao.SatuanStandarDao;
import com.jasamedika.medifirst2000.dto.MapAlatToProdukToBhpDto;
import com.jasamedika.medifirst2000.entities.Alat;
import com.jasamedika.medifirst2000.entities.MapAlatToProdukToBhp;
import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.entities.SatuanStandar;
import com.jasamedika.medifirst2000.service.MappingBahanToMesinService;

@Service("MappingBahanToMesinService")
public class MappingBahanToMesinServiceImpl extends BaseVoServiceImpl implements MappingBahanToMesinService{
	@Autowired
	private MapAlatToProdukToBhpDao mapAlatToProdukToBhpDao;
		
	@Override
	public List<Map<String, Object>> findMesinCuci() {
		return mapAlatToProdukToBhpDao.findAlatMesinCuci();
	}

	@Override
	public List<Map<String, Object>> findProsesCuci() {
		return mapAlatToProdukToBhpDao.findProdukProsesCuci();
	}

	@Override
	public List<Map<String, Object>> findBahanCuci() {
		return mapAlatToProdukToBhpDao.findProdukBahan();
	}

	@Override
	public List<Map<String, Object>> saveMappingBahanToMesin(List<MapAlatToProdukToBhpDto> dtos) {
		List<Map<String, Object>> listMap=new ArrayList<Map<String, Object>>();
		List<MapAlatToProdukToBhp> list=new ArrayList<MapAlatToProdukToBhp>();
		for(MapAlatToProdukToBhpDto dto:dtos){
			MapAlatToProdukToBhp domain=new MapAlatToProdukToBhp();
			Alat alat=new Alat();
			alat.setId(dto.getAlatId());
			domain.setAlat(alat);
			Produk produkCuci=new Produk();
			produkCuci.setId(dto.getProsesCuciId());
			domain.setProduk(produkCuci);
			Produk produkBahan=new Produk();
			produkBahan.setId(dto.getBahanId());
			domain.setProdukB(produkBahan);
			domain.setQtyProdukB(dto.getJumlah());
			SatuanStandar satuanStandarB=new SatuanStandar();
			satuanStandarB.setId(dto.getSatuanId());
			domain.setSatuanStandarB(satuanStandarB);
			//domain.setStatusEnabled(dto.getStatusEnabled());
			List<Map<String,Object>> listMap2=mapAlatToProdukToBhpDao.findMesinProdukcuciBahan(alat.getId(),produkCuci.getId(),produkBahan.getId());
			if(listMap2!=null && !listMap2.isEmpty()){
				for(Map<String,Object> mapL:listMap2){
					Integer id=(Integer) mapL.get("id");
					domain.setId(id);
				}
			}
			list.add(domain);
		}
		Iterable<MapAlatToProdukToBhp> listDomain=mapAlatToProdukToBhpDao.save(list);
		for(MapAlatToProdukToBhp domain:listDomain){
			Map<String, Object> map=new HashMap<String,Object>();
			map.put("id", domain.getId());
			listMap.add(map);
		}
		return listMap;
	}

	@Override
	public List<Map<String, Object>> getAll() {
		return mapAlatToProdukToBhpDao.getAll();
	}

	@Override
	public Map<String, Object> getById(Integer mapAlatToProdukBhpId) {
		return mapAlatToProdukToBhpDao.getById(mapAlatToProdukBhpId);
	}

	@Override
	public Map<String, Object> findKapasitasMesinCuci(Integer alatId) {
		return mapAlatToProdukToBhpDao.findKapasitasMesinCuci(alatId);
	}

	@Override
	public List<Map<String, Object>> findSatuanBahan() {
		return mapAlatToProdukToBhpDao.findSatuanBahan();
	}

	@Override
	public List<Map<String, Object>> findProsesCuciCuci() {
		return mapAlatToProdukToBhpDao.findProdukProsesCuciCuci();
	}

	@Override
	public List<Map<String, Object>> findProsesCuciBilas() {
		return mapAlatToProdukToBhpDao.findProdukProsesCuciBilas();
	}

	@Override
	public List<Map<String, Object>> findProsesCuciKering() {
		return mapAlatToProdukToBhpDao.findProdukProsesCuciKering();
	}

}
