package com.ejie.ab79.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.ab79.model.propuestaSancion.DocumentosInspeccion;

/**
 * SexoDaoImp  
 * 
 *  
 */
@Repository
@Transactional
public class DocumentosInspeccionDaoImpl implements DocumentosInspeccionDao {

	private JdbcTemplate jdbcTemplate;

	private RowMapper<DocumentosInspeccion> rwMapEnviados = new RowMapper<DocumentosInspeccion>() {
		public DocumentosInspeccion mapRow(ResultSet resultSet, int rowNum) throws SQLException {
			DocumentosInspeccion documentoInspeccion = new DocumentosInspeccion();
			documentoInspeccion.setOidDokusi(resultSet.getString("OIDDOKUSI"));

			return documentoInspeccion;
		}
	};

	/**
	 * Method use to set the datasource.
	 *
	 * @param dataSource
	 *            DataSource
	 * @return
	 */
	@Resource
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	@Transactional(readOnly = true)
	public DocumentosInspeccion add(DocumentosInspeccion documentoInspeccion) {

		int idDocumentoInspeccion = this.jdbcTemplate.queryForObject("SELECT AB79.S_AB7907T00.NEXTVAL FROM DUAL",
				Integer.class);
		documentoInspeccion.setIdDocumentoInspeccion(idDocumentoInspeccion);

		String query = "INSERT INTO DOCUMENTOS_INSPECCION (ID_DOCUMENTO_INSPECCION, ID_INSPECCION, OID_DOKUSI, NOMBRE_DOCUMENTO, TIPO_DOCUMENTO, FECHA_REGISTRO, USUARIO_REGISTRO) VALUES (?,?,?,?,?,sysdate,?)";
		this.jdbcTemplate.update(query, documentoInspeccion.getIdDocumentoInspeccion(),
				documentoInspeccion.getIdInspeccion(), documentoInspeccion.getOidDokusi(),
				documentoInspeccion.getNombreDocumento(), documentoInspeccion.getTipoDocumento(),
				documentoInspeccion.getUsuarioRegistro());
		return documentoInspeccion;

	}

	@Override
	public List<DocumentosInspeccion> obtenerEnviados(int idInspeccion) {
		StringBuilder query = new StringBuilder(
				"SELECT t7907.OID_DOKUSI OIDDOKUSI FROM DOCUMENTOS_INSPECCION t7907 WHERE t7907.ID_INSPECCION = ?");

		return (List<DocumentosInspeccion>) this.jdbcTemplate.query(query.toString(), this.rwMapEnviados, idInspeccion);
	}

	@Override
	public void removeByIdInspeccion(Integer idInspeccion) {
		String query = "DELETE FROM DOCUMENTOS_INSPECCION WHERE ID_INSPECCION=?";
		this.jdbcTemplate.update(query, idInspeccion);
	}

}
