from cnxpdo import get_connection
import math

def obtener_descartados(request_data=None):
    conexion = None
    cursor = None
    
    # Valores por defecto si no se envían parámetros
    page = 1
    page_size = 5
    
    # Si se reciben parámetros, usarlos
    if request_data:
        page = request_data.page or 1
        page_size = request_data.pageSize or 5
    
    try:
        conexion = get_connection()
        if conexion is None:
            return {"success": False, "message": "Error de conexión a la base de datos"}

        cursor = conexion.cursor(dictionary=True)

        # Primero obtener el total de registros
        count_query = "SELECT COUNT(*) as total FROM descartados_contactabilidad"
        cursor.execute(count_query)
        total_result = cursor.fetchone()
        total_records = total_result['total'] if total_result else 0
        
        # Calcular el offset para la paginación
        offset = (page - 1) * page_size
        
        # Consulta con paginación
        query = """
            SELECT *
            FROM descartados_contactabilidad 
            LIMIT %s OFFSET %s
        """
        
        cursor.execute(query, (page_size, offset))
        result = cursor.fetchall()
        
        # Calcular total de páginas
        total_pages = math.ceil(total_records / page_size) if total_records > 0 else 1
        
        return {
            "success": True,
            "message": f"Se encontraron {total_records} descartados",
            "data": result if result else [],
            "totalRecords": total_records,
            "totalPages": total_pages,
            "currentPage": page
        }
    
    except Exception as e:
        return {
            "success": False,
            "message": f"Error: {str(e)}"
        }
    
    finally:
        if cursor:
            cursor.close()
        if conexion:
            conexion.close()