"""
Procesador de estados para integración con el sistema principal
"""

import logging
import os
from models.estado_monitor import EstadoMonitor

class EstadoProcessor:
    """Procesador para manejar la actualización de estados de medidores"""
    
    def __init__(self):
        self.monitor = EstadoMonitor()
    
    def ejecutar_monitor_estados(self):
        """
        Ejecuta el monitor de estados y retorna el resultado
        Esta función puede ser llamada desde el proceso principal
        """
        try:
            logging.info("Ejecutando monitor de estados de medidores...")
            resultado = self.monitor.actualizar_estados_medidores()
            
            if resultado['success']:
                logging.info(f"Monitor de estados completado: "
                           f"{resultado['medidores_procesados']} medidores procesados, "
                           f"{resultado['medidores_normales']} normales, "
                           f"{resultado['medidores_sin_reporte']} sin reporte")
            else:
                logging.error(f"Error en monitor de estados: {resultado.get('error', 'Error desconocido')}")
            
            return resultado
            
        except Exception as e:
            logging.error(f"Error ejecutando monitor de estados: {e}")
            return {
                'success': False,
                'error': str(e)
            }
    
    def obtener_configuracion(self):
        """Retorna la configuración actual del monitor"""
        return {
            'tiempo_sin_reporte_horas': self.monitor.tiempo_sin_reporte_horas,
            'estado_normal': self.monitor.ESTADO_NORMAL,
            'estado_falta_reporte': self.monitor.ESTADO_FALTA_REPORTE
        }
    
    def obtener_resumen(self):
        """Retorna un resumen del estado actual de todos los medidores"""
        return self.monitor.obtener_resumen_estados() 