package bazy.a_poczatek;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class OdczytajNiektoreRekordy4 {

	public static void main(String[] args) {
		final String url = "jdbc:postgresql://vps497901.ovh.net:5432/hr";
		
		try(Connection c = DriverManager.getConnection(url, "kurs", "vps497901_abc123")) {
			List<String> jobs = znajdzJoby(c);
			
			String szukany_job = (String) JOptionPane.showInputDialog(null,
					"Wybierz job", "Pytanie", JOptionPane.QUESTION_MESSAGE, null, jobs.toArray(), null);
			
			wypiszJob(c, szukany_job);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private static List<String> znajdzJoby(Connection c) throws SQLException {
		List<String> jobs = new ArrayList<>();
		try(PreparedStatement stmt = c.prepareStatement("SELECT DISTINCT job_id FROM employees ORDER BY 1");
			ResultSet rs = stmt.executeQuery()) {
			while(rs.next()) {
				jobs.add(rs.getString(1));
			}
		}
		return jobs;
	}

	private static void wypiszJob(Connection c, String szukany_job) throws SQLException {
		try(PreparedStatement stmt = c.prepareStatement("SELECT * FROM employees WHERE job_id = ?")) {
			// wstawienie wartości do parametru nr 1 (który znak zapytania licząc od lewej), numeracja od 1
			stmt.setString(1, szukany_job);
			System.out.println("Zapytanie do wykonania: " + stmt);
			try(ResultSet rs = stmt.executeQuery()) {
				while(rs.next()) {
					int id = rs.getInt("employee_id");
					String imie = rs.getString("first_name");
					String nazwisko = rs.getString("last_name");
					String job = rs.getString("job_id");
					BigDecimal salary = rs.getBigDecimal("salary");
					
					System.out.printf("Pracownik nr %d: %s %s (%s) zarabia %s\n",
						id, imie, nazwisko, job, salary);
				}
			}
		}
	}
}
