package com.jasamedika.medifirst2000.converter;

import java.util.List;

import org.springframework.stereotype.Component;

import com.jasamedika.medifirst2000.converter.base.BaseVoConverter;
import com.jasamedika.medifirst2000.entities.AntrianPasienRegistrasi;
import com.jasamedika.medifirst2000.vo.ReservasiPasienVO;

/**
 * Converter class between Pasien and PasienVO
 * 
 * @author Askur
 */
@Component
public class ReservasiPasienConverter implements BaseVoConverter<ReservasiPasienVO, AntrianPasienRegistrasi> {

	@Override
	public AntrianPasienRegistrasi transferVOToModel(ReservasiPasienVO vo, AntrianPasienRegistrasi model) {
		return null;
	}

	@Override
	public List<ReservasiPasienVO> transferListOfModelToListOfVO(List<AntrianPasienRegistrasi> models,
			List<ReservasiPasienVO> vos) {
		return null;
	}

	@Override
	public ReservasiPasienVO transferModelToVO(AntrianPasienRegistrasi model, ReservasiPasienVO vo) {
		return null;
	}/*
	
	@Override
	public List<ReservasiPasienVO> transferListOfModelToListOfVO(List<AntrianPasienRegistrasi> models,
			List<ReservasiPasienVO> vos) {
		return null;
	}

	@Override
	public ReservasiPasienVO transferModelToVO(AntrianPasienRegistrasi model, ReservasiPasienVO vo) {
		AntrianPasienRegistrasiVO antrianPasienRegistrasi = null;
		if (null == vo){
			vo = new ReservasiPasienVO();
			antrianPasienRegistrasi=new AntrianPasienRegistrasiVO();
		}
		PasienVO pasien=new PasienVO();
		AlamatVO alamat=new AlamatVO();
		PegawaiVO dokter=new PegawaiVO();
		RuanganVO ruangan=new RuanganVO();
		CaraBayarVO caraBayar=new CaraBayarVO();
		ExtendedSpringBeanUtil.copySpecificProperties(model, vo, 
				new String[] {"id", "noAntrian","tglAntrian",}, 
				new String[] {"id", "noAntrian","tglAntrian",});
		ExtendedSpringBeanUtil.copySpecificProperties(model.getPasien(), pasien, 
				new String[] {"id", "noCm","namaPasien","tempatLahir","namaAyah","namaIbu","namaSuamiIstri","tglLahir",
						"tglDaftar","isTemporary","qPasien",}, 
				new String[] {"id", "noCm","namaPasien","tempatLahir","namaAyah","namaIbu","namaSuamiIstri","tglLahir",
						"tglDaftar","isTemporary","qPasien",});
		ExtendedSpringBeanUtil.copySpecificProperties((model.getPasien().getAlamats().iterator()).next(), alamat, 
				new String[] {"id","alamatLengkap","isPrimaryAddress","isShippingAddress","isBillingAddress","kdAlamat",}, 
				new String[] {"id","alamatLengkap","isPrimaryAddress","isShippingAddress","isBillingAddress","kdAlamat",});
//		ExtendedSpringBeanUtil.copySpecificProperties(model.getPegawai(), dokter, 
//				new String[] {"id",}, 
//				new String[] {"id",});
		ExtendedSpringBeanUtil.copySpecificProperties(model.getRuangan(), ruangan, 
				new String[] {"id",}, 
				new String[] {"id",});
//		ExtendedSpringBeanUtil.copySpecificProperties(model.getCaraBayar(), caraBayar, 
//				new String[] {"id",}, 
//				new String[] {"id",});
		alamat.setPasien(pasien);
		vo.setAntrianPasienRegistrasi(antrianPasienRegistrasi);
		vo.setRuangan(ruangan);
		vo.setCaraBayar(caraBayar);
		vo.setPasien(pasien);
		PendidikanVO pendidikan=new PendidikanVO();
		PekerjaanVO pekerjaan=new PekerjaanVO();
		StatusPerkawinanVO statusPerkawinan=new StatusPerkawinanVO();
		NegaraVO negara=new NegaraVO();
		KelompokUmurVO kelompokUmur=new KelompokUmurVO();
		TitlePasienVO titlePasien=new TitlePasienVO();
		JenisKelaminVO jenisKelamin=new JenisKelaminVO();
		AgamaVO agama=new AgamaVO();
		pendidikan = modelMapper.map(model.getPasien().getPendidikan(), PendidikanVO.class);
		pekerjaan = modelMapper.map(model.getPasien().getPekerjaan(), PekerjaanVO.class);
		statusPerkawinan = modelMapper.map(model.getPasien().getStatusPerkawinan(), StatusPerkawinanVO.class);
		negara = modelMapper.map(model.getPasien().getNegara(), NegaraVO.class);
		kelompokUmur = modelMapper.map(model.getPasien().getKelompokUmur(), KelompokUmurVO.class);
		ExtendedSpringBeanUtil.copySpecificProperties(model.getPasien().getTitle(), titlePasien,
				new String[] {"id",}, 
				new String[] {"id",});
		jenisKelamin = modelMapper.map(model.getPasien().getJenisKelamin(), JenisKelaminVO.class);
		agama = modelMapper.map(model.getPasien().getAgama(), AgamaVO.class);
		PropinsiVO propinsi=new PropinsiVO();
		JenisAlamatVO jenisAlamat=new JenisAlamatVO();
		propinsi = modelMapper.map((model.getPasien().getAlamats().iterator()).next().getPropinsi(), PropinsiVO.class);
		jenisAlamat = modelMapper.map((model.getPasien().getAlamats().iterator()).next().getJenisAlamat(), JenisAlamatVO.class);
		negara = modelMapper.map((model.getPasien().getAlamats().iterator()).next().getNegara(), NegaraVO.class);
		alamat.setPropinsi(propinsi);
		alamat.setJenisAlamat(jenisAlamat);
		alamat.setNegara(negara);
		pasien.getAlamats().add(alamat);
		pasien.setPendidikan(pendidikan);
		pasien.setPekerjaan(pekerjaan);
		pasien.setStatusPerkawinan(statusPerkawinan);
		pasien.setNegara(negara);
		pasien.setKelompokUmur(kelompokUmur);
		pasien.setTitle(titlePasien);
		pasien.setJenisKelamin(jenisKelamin);
		pasien.setAgama(agama);
//		pasien.getAntrianPasienRegistrasis().add(antrianPasienRegistrasi);
		
		return vo;
	}

	@Override
	public AntrianPasienRegistrasi transferVOToModel(ReservasiPasienVO vo, AntrianPasienRegistrasi model) {
		if (null == model)
			model = new AntrianPasienRegistrasi();
		Pasien pasien=new Pasien();
		Alamat alamat=new Alamat();
		Pegawai dokter=new Pegawai();
		Ruangan ruangan=new Ruangan();
		CaraBayar caraBayar=new CaraBayar();
		JenisKartu jenisKartu=new JenisKartu();
		JenisKartuDetail jenisKartuDetail=new JenisKartuDetail();
		AntrianPasienRegistrasiDetail antrianPasienRegistrasiDetail=new AntrianPasienRegistrasiDetail();
		ExtendedSpringBeanUtil.copySpecificProperties(model, vo.getAntrianPasienRegistrasi(), 
				new String[] {"noRec", "noAntrian","tglAntrian",}, 
				new String[] {"noRec", "noAntrian","tglAntrian",});
//		ExtendedSpringBeanUtil.copySpecificProperties(antrianPasienRegistrasiDetail, vo.getAntrianPasienRegistrasiDetail(), 
//				new String[] {"noRec", "merchant","merchantInvoiceNo","amount",}, 
//				new String[] {"noRec", "merchant","merchantInvoiceNo","amount",});
		jenisKartu = modelMapper.map(vo.getJenisKartu(), JenisKartu.class);
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getJenisKartuDetail(),jenisKartuDetail, 
				new String[] {"id","billingAddressAlamat","nameOnCard",}, 
				new String[] {"id","billingAddressAlamat","nameOnCard",});
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getPasien(), pasien, 
				new String[] {"id", "noCm","namaPasien","tempatLahir","namaAyah","namaIbu","namaSuamiIstri","tglLahir",
						"tglDaftar","isTemporary","qPasien",}, 
				new String[] {"id", "noCm","namaPasien","tempatLahir","namaAyah","namaIbu","namaSuamiIstri","tglLahir",
						"tglDaftar","isTemporary","qPasien",});
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getAlamat(), alamat, 
				new String[] {"id","alamatLengkap","isPrimaryAddress","isShippingAddress","isBillingAddress","kdAlamat",}, 
				new String[] {"id","alamatLengkap","isPrimaryAddress","isShippingAddress","isBillingAddress","kdAlamat",});
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getDokter(), dokter, 
				new String[] {"id",}, 
				new String[] {"id",});
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getRuangan(), ruangan, 
				new String[] {"id",}, 
				new String[] {"id",});
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getCaraBayar(), caraBayar, 
				new String[] {"id",}, 
				new String[] {"id",});
		alamat.setPasien(pasien);
		Pendidikan pendidikan=new Pendidikan();
		Pekerjaan pekerjaan=new Pekerjaan();
		StatusPerkawinan statusPerkawinan=new StatusPerkawinan();
		Negara negara=new Negara();
		KelompokUmur kelompokUmur=new KelompokUmur();
		TitlePasien titlePasien=new TitlePasien();
		JenisKelamin jenisKelamin=new JenisKelamin();
		Agama agama=new Agama();
		pendidikan = modelMapper.map(vo.getPendidikan(), Pendidikan.class);
		pekerjaan = modelMapper.map(vo.getPekerjaan(), Pekerjaan.class);
		statusPerkawinan = modelMapper.map(vo.getStatusPerkawinan(), StatusPerkawinan.class);
		negara = modelMapper.map(vo.getNegara(), Negara.class);
		kelompokUmur = modelMapper.map(vo.getKelompokUmur(), KelompokUmur.class);
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getTitlePasien(), titlePasien,
				new String[] {"id",}, 
				new String[] {"id",});
		jenisKelamin = modelMapper.map(vo.getJenisKelamin(), JenisKelamin.class);
		agama = modelMapper.map(vo.getAgama(), Agama.class);
		Propinsi propinsi=new Propinsi();
		JenisAlamat jenisAlamat=new JenisAlamat();
		propinsi = modelMapper.map(vo.getPropinsi(), Propinsi.class);
		jenisAlamat = modelMapper.map(vo.getJenisAlamat(), JenisAlamat.class);
		ExtendedSpringBeanUtil.copySpecificProperties(vo.getNegara(), negara,
				new String[] {"id",}, 
				new String[] {"id",});
		jenisKartuDetail.setNegara(negara);
		alamat.setPropinsi(propinsi);
		alamat.setJenisAlamat(jenisAlamat);
		alamat.setNegara(negara);
		pasien.getAlamats().add(alamat);
		pasien.setPendidikan(pendidikan);
		pasien.setPekerjaan(pekerjaan);
		pasien.setStatusPerkawinan(statusPerkawinan);
		pasien.setNegara(negara);
		pasien.setKelompokUmur(kelompokUmur);
		pasien.setTitle(titlePasien);
		pasien.setJenisKelamin(jenisKelamin);
		pasien.setAgama(agama);
//		pasien.getAntrianPasienRegistrasis().add(model);
		model.setKdAntrian(1);
		model.setTglAntrian(new Date());
		model.setRuangan(ruangan);
//		model.setPegawai(dokter);
//		model.setCaraBayar(caraBayar);
		model.setPasien(pasien);
		antrianPasienRegistrasiDetail.setAntrianPasienRegistrasi(model);
		antrianPasienRegistrasiDetail.setCaraBayar(caraBayar);
		antrianPasienRegistrasiDetail.setJenisKartu(jenisKartu);
//		antrianPasienRegistrasiDetail.setJenisKartuDetail(jenisKartuDetail);
	//	model.setAntrianPasienRegistrasiDetail(antrianPasienRegistrasiDetail);
		return model;
	}

	
*/}
