/*
   * (non-Javadoc)
   *
   * @see
   * pe.com.viajes.negocio.dao.ServicioNoviosDao#registrarNovios(pe.com
   * .logistica.bean.negocio.ProgramaNovios)
   */
  @Override
  public Integer registrarNovios(ProgramaNovios programaNovios) throws SQLException {
    Integer codigoNovios = 0;
    Connection conn = null;
    CallableStatement cs = null;
    String sql = "{ ? = call negocio.fn_ingresarprogramanovios(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }";
    try {
      conn = UtilConexion.obtenerConexion();
      cs = conn.prepareCall(sql);
      int i = 1;
      cs.registerOutParameter(i++, Types.INTEGER);
      cs.setInt(i++, programaNovios.getNovia().getCodigoEntero());
      cs.setInt(i++, programaNovios.getNovio().getCodigoEntero());
      cs.setInt(i++, programaNovios.getDestino().getCodigoEntero());
      cs.setDate(i++, UtilJdbc.convertirUtilDateSQLDate(programaNovios.getFechaBoda()));
      cs.setDate(i++, UtilJdbc.convertirUtilDateSQLDate(programaNovios.getFechaViaje()));
      cs.setInt(i++, programaNovios.getMoneda().getCodigoEntero());
      cs.setBigDecimal(i++, programaNovios.getCuotaInicial());
      cs.setInt(i++, programaNovios.getNroDias());
      cs.setInt(i++, programaNovios.getNroNoches());
      cs.setDate(i++, UtilJdbc.convertirUtilDateSQLDate(programaNovios.getFechaShower()));
      if (StringUtils.isNotBlank(programaNovios.getObservaciones())) {
        cs.setString(i++, programaNovios.getObservaciones());
      } else {
        cs.setNull(i++, Types.VARCHAR);
      }
      cs.setBigDecimal(i++, programaNovios.getMontoTotalServiciosPrograma());
      cs.setInt(i++, programaNovios.getIdServicio());
      cs.setString(i++, programaNovios.getUsuarioCreacion());
      cs.setString(i++, programaNovios.getIpCreacion());
      cs.execute();

      codigoNovios = cs.getInt(1);
    } catch (SQLException e) {
      codigoNovios = 0;
      throw new SQLException(e);
    } finally {
      try {
        if (cs != null) {
          cs.close();
        }
        if (conn != null) {
          conn.close();
        }
      } catch (SQLException e) {
        try {
          if (conn != null) {
            conn.close();
          }
          throw new SQLException(e);
        } catch (SQLException e1) {
          throw new SQLException(e);
        }
      }
    }

    return codigoNovios;
  }
  @Override
  public boolean registrarInvitado(Cliente invitado, Integer idnovios, Connection conn)
      throws SQLException, Exception {
    boolean resultado = false;
    CallableStatement cs = null;
    String sql = "{ ? = call negocio.fn_ingresainvitado(?,?,?,?,?,?,?,?,?) }";
    try {
      cs = conn.prepareCall(sql);
      int i = 1;
      cs.registerOutParameter(i++, Types.BOOLEAN);
      cs.setString(i++, invitado.getNombres());
      cs.setString(i++, invitado.getApellidoPaterno());
      cs.setString(i++, invitado.getApellidoMaterno());
      if (invitado.getFechaNacimiento() != null) {
        cs.setDate(i++, UtilJdbc.convertirUtilDateSQLDate(invitado.getFechaNacimiento()));
      } else {
        cs.setNull(i++, Types.DATE);
      }
      cs.setString(i++, invitado.getTelefonoInvitadoNovios());
      cs.setString(i++, invitado.getCorreoElectronico());
      cs.setInt(i++, idnovios);
      cs.setString(i++, invitado.getUsuarioCreacion());
      cs.setString(i++, invitado.getIpCreacion());
      cs.execute();

      resultado = true;
    } catch (SQLException e) {
      resultado = false;
      throw new SQLException(e);
    } finally {
      try {
        if (cs != null) {
          cs.close();
        }
      } catch (SQLException e) {
        throw new SQLException(e);
      }
    }

    return resultado;
  }