package com.jasamedika.medifirst2000.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.orm.jpa.JpaSystemException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.jasamedika.medifirst2000.converter.ModulAplikasiSConverter;
import com.jasamedika.medifirst2000.dao.ModulAplikasiSDao;
import com.jasamedika.medifirst2000.entities.ModulAplikasiS;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.ModulAplikasiSService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.ModulAplikasiSVO;

//@Service("modulAplikasiSService")
public class ModulAplikasiSServiceImpl /*extends BaseVoServiceImpl*/ implements ModulAplikasiSService<ModulAplikasiSVO> {

//	@Autowired
//	private ModulAplikasiSDao modulAplikasiSDao;
//
//	@Autowired
//	private ModulAplikasiSConverter modulAplikasiSConverter;
//	
//	
//	@Override
//	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
//	public List<ModulAplikasiSVO> findAllSubModulOrderByModulNoUrutAsc(String kdModulAplikasi) {
//		return modulAplikasiSConverter.transferListOfModelToListOfVO(modulAplikasiSDao.findAllSubModulOrderByModulNoUrutAsc(kdModulAplikasi), null);
//	}
//	
//	
//	@Override
//	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
//	public List<ModulAplikasiSVO> findAllSubSytemOrderByModulNoUrutAsc() {
//		return modulAplikasiSConverter.transferListOfModelToListOfVO(modulAplikasiSDao.findAllSubSytemOrderByModulNoUrutAsc(), null);
//	}
//
//	@Override
//	@Transactional(readOnly = false)
//	public ModulAplikasiSVO add(ModulAplikasiSVO vo) throws JpaSystemException, ServiceVOException {
//		ModulAplikasiS modulAplikasiS = modulAplikasiSConverter.transferVOToModel(vo, new ModulAplikasiS());
//		ModulAplikasiS resultModel = modulAplikasiSDao.save(modulAplikasiS);
//		ModulAplikasiSVO resultVo = new ModulAplikasiSVO();
//		resultVo = modulAplikasiSConverter.transferModelToVO(resultModel, resultVo);
//		return resultVo;
//	}
//
//	@Override
//	@Transactional(readOnly = false)
//	public ModulAplikasiSVO update(ModulAplikasiSVO vo) throws JpaSystemException, ServiceVOException {
//
//		ModulAplikasiS modulAplikasiS = modulAplikasiSDao.findOne(vo.getId());
//		modulAplikasiS = modulAplikasiSConverter.transferVOToModel(vo, modulAplikasiS);
//
//		modulAplikasiSDao.save(modulAplikasiS);
//		return vo;
//	}
//
//	@Override
//	@Transactional(readOnly = false)
//	public Boolean delete(Integer key) throws JpaSystemException {
//		if (CommonUtil.isNotNullOrEmpty(key)) {
//
//			ModulAplikasiS modulAplikasiS = modulAplikasiSDao.findOne(key);
//			modulAplikasiSDao.delete(modulAplikasiS);
//			ModulAplikasiSVO modulAplikasiSVO = modulAplikasiSConverter.transferModelToVO(modulAplikasiS, new ModulAplikasiSVO());
//			modulAplikasiSVO.setStatusEnabled(false);
//			return true;
//		} else {
//			return false;
//		}
//
//	}
//
//	@Override
//	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
//	public ModulAplikasiSVO findById(Integer key) throws JpaSystemException {
//		return modulAplikasiSConverter.transferModelToVO(modulAplikasiSDao.findOne(key), null);
//	}
//
//	@Override
//	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
//	public List<ModulAplikasiSVO> findAll() throws JpaSystemException {
//		return modulAplikasiSConverter.transferListOfModelToListOfVO(modulAplikasiSDao.findAll(), null);
//	}
//
//	@Override
//	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
//	public Map<String, Object> findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit,
//			String sort, String dir) {
//		
//		List<ModulAplikasiSVO> modulAplikasiVOList = new ArrayList<ModulAplikasiSVO>();
//		Pageable pageable = new PageRequest(page, limit, getSortBy(sort, dir));
//		Page<ModulAplikasiS> resultPage = modulAplikasiSDao.findAll(pageable);
//		List<ModulAplikasiS> modulAplikasiList = resultPage.getContent();
//
//		modulAplikasiSConverter.transferListOfModelToListOfVO(modulAplikasiList, modulAplikasiVOList);
//
//		return constructMapReturn(modulAplikasiVOList, resultPage.getTotalElements(), resultPage.getTotalPages());
//	}



//	@Override
//	public List<ModulAplikasiS> findAllModulAplikasiS() {
//		List<ModulAplikasiS> models = (List<ModulAplikasiS>) modulAplikasiSDao.findAll();
//		return models;
//	}



}
