@ -16,6 +16,7 @@ import java.io.IOException;
import java.io.InputStream ;
import java.io.InputStream ;
import java.sql.* ;
import java.sql.* ;
import java.time.LocalDate ;
import java.time.LocalDate ;
import java.time.ZoneId ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.List ;
import java.util.UUID ;
import java.util.UUID ;
@ -1042,20 +1043,24 @@ public class DatabaseService {
public String crearTokenEncuesta ( int mantenimientoid ) {
public String crearTokenEncuesta ( int mantenimientoid ) {
String token = UUID . randomUUID ( ) . toString ( ) ;
String token = UUID . randomUUID ( ) . toString ( ) ;
Timestamp expira = new Timestamp ( System . currentTimeMillis ( ) + ( 24 * 60 * 60 * 1000 ) ) ;
Timestamp expira = new Timestamp ( System . currentTimeMillis ( ) + ( 24 * 60 * 60 * 1000 ) ) ;
LocalDate fechaEnvio = LocalDate . now ( ZoneId . of ( "America/Mexico_City" ) ) ;
String query = "INSERT INTO ENCUESTATOKENS (TOKEN, MANTENIMIENTOID, FECHAEXPIRACION) VALUES (?, ?, ?)" ;
String query = "INSERT INTO ENCUESTATOKENS (TOKEN, MANTENIMIENTOID, FECHAENVIO, FECHAE XPIRACION) VALUES (?, ?, ?, ?)" ;
try ( Connection conn = getMysqlConnection ( ) ;
try ( Connection conn = getMysqlConnection ( ) ;
PreparedStatement stmt = conn . prepareStatement ( query ) ) {
PreparedStatement stmt = conn . prepareStatement ( query ) ) {
stmt . setString ( 1 , token ) ;
stmt . setString ( 1 , token ) ;
stmt . setInt ( 2 , mantenimientoid ) ;
stmt . setInt ( 2 , mantenimientoid ) ;
stmt . setTimestamp ( 3 , expira ) ;
stmt . setDate ( 3 , Date . valueOf ( fechaEnvio ) ) ;
stmt . setTimestamp ( 4 , expira ) ;
stmt . executeUpdate ( ) ;
stmt . executeUpdate ( ) ;
return token ;
} catch ( SQLException e ) {
} catch ( SQLException e ) {
logger . error ( "Error al crear el token de encuesta: " , e ) ;
logger . error ( "Error al crear el token de encuesta: " , e ) ;
throw new RuntimeException ( "Ya existe una encuesta para este mantenimiento o error en DB" , e ) ;
}
}
return token ;
}
}
public Integer validarTokenYObtenerId ( String token ) {
public Integer validarTokenYObtenerId ( String token ) {
@ -1075,21 +1080,34 @@ public class DatabaseService {
return null ;
return null ;
}
}
public List < ConteoEncuestas > getTotalEncuestas ( ) {
public List < ConteoEncuestas > getTotalEncuestas ( Integer mesId , Integer anio ) {
List < ConteoEncuestas > totalEncuestas = new ArrayList < > ( ) ;
List < ConteoEncuestas > totalEncuestas = new ArrayList < > ( ) ;
String query = "SELECT * FROM VW_CONTEO_ENCUESTAS " ;
String query = "{call sp_reporte_encuestas(?, ?)} " ;
try ( Connection conn = getMysqlConnection ( ) ;
try ( Connection conn = getMysqlConnection ( ) ;
Statement stmt = conn . createStatement ( ) ;
ResultSet rs = stmt . executeQuery ( query ) ) {
CallableStatement cstmt = conn . prepareCall ( query ) ) {
while ( rs . next ( ) ) {
ConteoEncuestas conteo = new ConteoEncuestas (
rs . getInt ( "TOTAL_ENVIADAS" ) ,
rs . getInt ( "TOTAL_RESPONDIDAS" ) ,
rs . getDouble ( "PORCENTAJE_TOTAL" )
) ;
totalEncuestas . add ( conteo ) ;
if ( mesId ! = null ) {
cstmt . setInt ( 1 , mesId ) ;
} else {
cstmt . setNull ( 1 , Types . INTEGER ) ;
}
if ( anio ! = null ) {
cstmt . setInt ( 2 , anio ) ;
} else {
cstmt . setNull ( 2 , Types . INTEGER ) ;
}
try ( ResultSet rs = cstmt . executeQuery ( ) ) {
while ( rs . next ( ) ) {
ConteoEncuestas conteo = new ConteoEncuestas (
rs . getInt ( "TOTAL_ENVIADAS" ) ,
rs . getInt ( "TOTAL_RESPONDIDAS" ) ,
rs . getDouble ( "PORCENTAJE_TOTAL" )
) ;
totalEncuestas . add ( conteo ) ;
}
}
}
} catch ( SQLException e ) {
} catch ( SQLException e ) {
logger . error ( "Error al obtener el total de encuestas: " , e ) ;
logger . error ( "Error al obtener el total de encuestas: " , e ) ;
@ -1097,24 +1115,37 @@ public class DatabaseService {
return totalEncuestas ;
return totalEncuestas ;
}
}
public List < ConteoRespuestas > getTotalRespuestas ( ) {
public List < ConteoRespuestas > getTotalRespuestas ( Integer mesId , Integer anio ) {
List < ConteoRespuestas > totalRespuestas = new ArrayList < > ( ) ;
List < ConteoRespuestas > totalRespuestas = new ArrayList < > ( ) ;
String query = "SELECT * FROM VW_CONTEO_RESPUESTAS " ;
String query = "{call sp_reporte_respuestas(?, ?)} " ;
try ( Connection conn = getMysqlConnection ( ) ;
try ( Connection conn = getMysqlConnection ( ) ;
Statement stmt = conn . createStatement ( ) ;
ResultSet rs = stmt . executeQuery ( query ) ) {
CallableStatement cstmt = conn . prepareCall ( query ) ) {
while ( rs . next ( ) ) {
ConteoRespuestas conteo = new ConteoRespuestas (
rs . getInt ( "PREGUNTAID" ) ,
rs . getString ( "PREGUNTA" ) ,
rs . getInt ( "TOTALREGISTROS" ) ,
rs . getInt ( "TOTALSI" ) ,
rs . getInt ( "TOTALNO" ) ,
rs . getDouble ( "PORCENTAJE" )
) ;
totalRespuestas . add ( conteo ) ;
if ( mesId ! = null ) {
cstmt . setInt ( 1 , mesId ) ;
} else {
cstmt . setNull ( 1 , Types . INTEGER ) ;
}
if ( anio ! = null ) {
cstmt . setInt ( 2 , anio ) ;
} else {
cstmt . setNull ( 2 , Types . INTEGER ) ;
}
try ( ResultSet rs = cstmt . executeQuery ( ) ) {
while ( rs . next ( ) ) {
ConteoRespuestas conteo = new ConteoRespuestas (
rs . getInt ( "PREGUNTAID" ) ,
rs . getString ( "PREGUNTA" ) ,
rs . getInt ( "TOTALREGISTROS" ) ,
rs . getInt ( "TOTALSI" ) ,
rs . getInt ( "TOTALNO" ) ,
rs . getDouble ( "PORCENTAJE" )
) ;
totalRespuestas . add ( conteo ) ;
}
}
}
} catch ( SQLException e ) {
} catch ( SQLException e ) {
logger . error ( "Error al obtener el total de respuestas: " , e ) ;
logger . error ( "Error al obtener el total de respuestas: " , e ) ;