package hr.com.port.ips.eracun.dao;

import hr.com.port.connectionPool.__Pool;
import hr.com.port.functions.Functions;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;

public class DokumentiVrsteDao {
	static Logger logger = Logger.getLogger(DokumentiVrsteDao.class);
	
    public static Integer findIdByUbl(String ublCode, Connection... opt) {
        if (ublCode == null || ublCode.isEmpty()) return null;
        String sql = "SELECT id FROM dokumenti_vrste WHERE ubl_code = ? LIMIT 1";
        Connection c = null; boolean ext = opt!=null && opt.length>0 && opt[0]!=null;
        try {
            c = ext ? opt[0] : new __Pool(null).getConnection();
            try (PreparedStatement ps = c.prepareStatement(sql)) {
                ps.setString(1, ublCode);
                try (ResultSet rs = ps.executeQuery()) {
                    return rs.next() ? rs.getInt(1) : null;
                }
            }
        } catch (SQLException e) {
            logger.error(new Functions().logging(e));
            return null;
        } finally {
            if (!ext && c!=null) try { c.close(); } catch (Exception ignore) {}
        }
    }

    public static String findNazivById(int id, Connection... opt) {
        String sql = "SELECT naziv FROM dokumenti_vrste WHERE id = ? LIMIT 1";
        Connection c = null; boolean ext = opt!=null && opt.length>0 && opt[0]!=null;
        try {
            c = ext ? opt[0] : new __Pool(null).getConnection();
            try (PreparedStatement ps = c.prepareStatement(sql)) {
                ps.setInt(1, id);
                try (ResultSet rs = ps.executeQuery()) {
                    return rs.next() ? rs.getString(1) : null;
                }
            }
        } catch (SQLException e) {
            logger.error(new Functions().logging(e));
            return null;
        } finally {
            if (!ext && c!=null) try { c.close(); } catch (Exception ignore) {}
        }
    }
	
	public static String findUblById(int id, Connection... opt) {
		String sql = "SELECT ubl_code FROM dokumenti_vrste WHERE id = ? LIMIT 1";
		Connection c = null; 
		boolean ext = opt != null && opt.length > 0 && opt[0] != null;
		try {
			c = ext ? opt[0] : new __Pool(null).getConnection();
			try (PreparedStatement ps = c.prepareStatement(sql)) {
				ps.setInt(1, id);
				try (ResultSet rs = ps.executeQuery()) {
					return rs.next() ? rs.getString(1) : null;
				}
			}
		} catch (SQLException e) {
			logger.error(new Functions().logging(e));
			return null;
		} finally {
			if (!ext && c != null) try { c.close(); } catch (Exception ignore) {}
		}
	}
}