package trismegistoplanilla.mysqldao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.json.JSONObject;
import trismegistoplanilla.beans.NivelEstadoBean;
import trismegistoplanilla.dao.NivelEstadoDAO;
import trismegistoplanilla.utilities.ResponseHelper;
import trismegistoplanilla.utilities.Variables;

public class NivelEstadoMysqlDAO implements NivelEstadoDAO {

	@Override
	public JSONObject obtenerNivelEstado(NivelEstadoBean nivelEstado) {
		System.out.println("NivelEstadoMysqlDAO: obtenerNivelEstado");
		JSONObject jsonObtenerNivelEstado = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		Connection connection = null;

		int codigoNivelEstado = 0;
		ResponseHelper response = new ResponseHelper();

		try {
			connection = MysqlDAOFactory.obtenerConexion(Variables.MYSQL_NUEVO_BD_NAME);
			String sql
				= "select "
				+ "nivel_estado.codigo_nivel_estado as codigoNivelEstado "
				+ "from nivel_estado "
				+ "where nivel_estado.codigo_nivel_estudio = ? "
				+ "and nivel_estado.codigo_estado_estudio = ? "
				+ "and nivel_estado.estado_registro = 1";
			ps = connection.prepareStatement(sql);
			ps.setInt(1, nivelEstado.getCodigoNivelEstudio());
			ps.setInt(2, nivelEstado.getCodigoEstadoEstudio());
			rs = ps.executeQuery();
			rs.next();
			codigoNivelEstado = rs.getInt("codigoNivelEstado");
			if (codigoNivelEstado > 0) {
				JSONObject getResultedKey = new JSONObject();
				getResultedKey.put("getResultedKey", codigoNivelEstado);
				response.setStatus(true);
				response.setData(getResultedKey);
				response.setMessage("Se obtuvo el código correctamente");
			} else {
				response.setStatus(false);
				response.setMessage("No se pudo obtener el código");
			}

		} catch (SQLException e) {
			e.printStackTrace();
			response.setStatus(false);
			response.setMessage("Error: " + e.getMessage() + " \n Error Code: [" + e.getErrorCode() + "]");
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
				if (ps != null) {
					ps.close();
				}
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		jsonObtenerNivelEstado = new JSONObject(response);
		return jsonObtenerNivelEstado;
	}

}