package com.nortal.jroad.client.jvis;
import java.math.BigInteger;
import java.util.Calendar;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.nortal.jroad.client.exception.XRoadServiceConsumptionException;
import com.nortal.jroad.client.jvis.database.Jvisv6XRoadDatabase;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.IsikuVedurijuhilubaParingDocument.IsikuVedurijuhilubaParing;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.IsikuVedurijuhilubaVastusDocument.IsikuVedurijuhilubaVastus;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaEksamParingDocument.VedurijuhiloaEksamParing;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaEksamVastusDocument.VedurijuhiloaEksamVastus;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaKatteandmineParingDocument.VedurijuhiloaKatteandmineParing;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaKatteandmineVastusDocument.VedurijuhiloaKatteandmineVastus;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaTaotlusParingDocument.VedurijuhiloaTaotlusParing;
import com.nortal.jroad.client.jvis.types.eu.x_road.jvisv6.producer.VedurijuhiloaTaotlusVastusDocument.VedurijuhiloaTaotlusVastus;
@Service("jvisv6XTeeService")
public class Jvisv6XRoadServiceImpl implements Jvisv6XRoadService {
@Resource
private Jvisv6XRoadDatabase jvisv6XRoadDatabase;
public IsikuVedurijuhilubaVastus getIsikuVedurijuhiluba(String isikukood) throws XRoadServiceConsumptionException {
IsikuVedurijuhilubaParing paring = IsikuVedurijuhilubaParing.Factory.newInstance();
paring.setIsikukood(isikukood);
return jvisv6XRoadDatabase.isikuVedurijuhilubaV1(paring);
}
public String sendIsikuVedurijuhilubaTaotlus(VedurijuhiloaTaotlusParing paring) throws XRoadServiceConsumptionException {
VedurijuhiloaTaotlusVastus vastus = jvisv6XRoadDatabase.vedurijuhiloaTaotlusV1(paring);
return vastus.getVastuskood();
}
public String sendVedurijuhiloaEksam(String isikukood, long sooritatud, Date kuupaev) throws XRoadServiceConsumptionException {
VedurijuhiloaEksamParing paring = getVedurijuhiloaEksamParing(isikukood, sooritatud, kuupaev);
VedurijuhiloaEksamVastus vastus = jvisv6XRoadDatabase.vedurijuhiloaEksamV1(paring);
return vastus.getVastuskood();
}
private VedurijuhiloaEksamParing getVedurijuhiloaEksamParing(String isikukood, long sooritatud, Date kuupaev) {
VedurijuhiloaEksamParing paring = VedurijuhiloaEksamParing.Factory.newInstance();
paring.setIsikukood(isikukood);
paring.setSooritatud(BigInteger.valueOf(sooritatud));
paring.setKuupaev(getCalendarFromDate(kuupaev));
return paring;
}
private Calendar getCalendarFromDate(Date kuupaev) {
Calendar calDate = Calendar.getInstance();
calDate.setTime(kuupaev);
return calDate;
}
public String sendVedurijuhiloaKatteandmine(String isikukood, String loaNumber, Date kattesaamiseKuupaev) throws XRoadServiceConsumptionException {
VedurijuhiloaKatteandmineParing paring = VedurijuhiloaKatteandmineParing.Factory.newInstance();
paring.setIsikukood(isikukood);
paring.setLoaNumber(loaNumber);
paring.setKatteandmiseKuupaev(getCalendarFromDate(kattesaamiseKuupaev));
VedurijuhiloaKatteandmineVastus vastus = jvisv6XRoadDatabase.vedurijuhiloaKatteandmineV1(paring);
return vastus.getVastuskood();
}
}