+
    i+                         ^ RI t ^ RIHt ] P                  ! ] P                  R7       ] P
                  ! ]4      tR tR t	R t
R	R ltR tR# )
    N)get_connection)levelc                   R. R. R. R^ RRRRR	V /p \        4       pVP                  4       pR
pVP                  W@34       VP                  4       pV'       g(   RVR&   RV  2VR&   \        P                  RV  24       V# V F  pV^ ,          '       d   V^ ,          P                  4       MRpV^,          '       d&   V^,          P                  4       P                  4       MRpV'       g   Kk  RV9   g   Kt  VR9  d   RpWqV,          9  g   K  W,          P                  V4       K  	  \        VR,          4      \        VR,          4      ,           \        VR,          4      ,           VR&   VR,          ^ 8  d:   RVR&   RVR,           R2VR&   \        P                  RV  RVR,           R24       M%RVR&   RV  2VR&   \        P                  RV  24       VP                  4        VP                  4        V#   \         dC   p	RTR&   R\        T	4       2TR&   \        P                  R\        T	4       24        Rp	?	T# Rp	?	ii ; i)u#  
Obtiene los destinatarios de correo electrónico desde las tablas de configuración.

Args:
    mail_list_id (int): ID de la lista de correos en Util_MailListHead
    
Returns:
    dict: Diccionario con listas de destinatarios por tipo (TO, CC, BCC)
        {
            'TO': ['correo1@example.com', 'correo2@example.com'],
            'CC': ['cc1@example.com'],
            'BCC': ['bcc1@example.com'],
            'total_destinatarios': 4,
            'success': True,
            'mensaje': 'Destinatarios obtenidos correctamente'
        }
TOCCBCCtotal_destinatariossuccessFmensaje mail_list_ida  
            SELECT 
                d.Mail,
                d.RecipientType,
                d.MailListLine,
                h.Subject,
                h.ModuleID
            FROM Util_MailListDetail d
            INNER JOIN Util_MailListHead h ON d.MailListID = h.MailListID
            WHERE d.MailListID = ? 
                AND d.ActiveLine = 1 
                AND h.Active = 1
                AND d.Mail IS NOT NULL 
                AND d.Mail != ''
            ORDER BY d.MailListLine
        Tz9No se encontraron destinatarios activos para MailListID: z1No se encontraron destinatarios para MailListID: N@zSe obtuvieron z destinatarios correctamenteMailListID z: z destinatarios obtenidosu4   No se encontraron correos válidos para MailListID: z Error al obtener destinatarios: z%Error en obtener_destinatarios_mail: r   r   r   )r   cursorexecutefetchallloggerwarningstripupperappendleninfoclose	Exceptionstrerror)
r   destinatarios
connectionr   query
resultadosrowmailrecipient_typees
   &         hC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\Consultas_SQL\Utilities\MailManagementSQL.pyobtener_destinatarios_mailr(      sb   ( 	bbrq52MFG#%
""$" 	uo.__&
'+M)$)bcobp'qM)$NNN|n]^   C%(VV3q6<<>D7:1vvSV\\^1134N tt!)<<%)N ^<<!188>   d#$d#$%e$%& 	+, ./!3'+M)$)7F[8\7]]y'zM)$KK+l^2mDY6Z5[[stu'+M)$)]^j]k'lM)$NNQR^Q_`a   G#(i %Ec!fX#Ni <SVHEFFGs7   A,G9 ?;G9 ;,G9 ,G9 5G9 C*G9 9I7IIc                `   RRRRRRRRRRRR	/p \        4       pVP                  4       pR
pVP                  W@34       VP                  4       pV'       d[   RVR&   \	        V^,          4      VR&   V^,          VR&   V^,          VR&   RVR&   VR,          '       d   RV  R2VR&   MRV  R2VR&   MRVR&   RV  R2VR&   VP                  4        VP                  4        V#   \         dC   pRTR&   R\        T4       2TR&   \        P                  R\        T4       24        Rp?T# Rp?ii ; i)u  
Valida si existe el MailListID en la tabla Util_MailListHead.

Args:
    mail_list_id (int): ID de la lista de correos
    
Returns:
    dict: Resultado de la validación
          {
              'existe': True/False,
              'activo': True/False,
              'subject': 'Asunto del correo',
              'module_id': 'ID del módulo',
              'success': True/False,
              'mensaje': 'Mensaje descriptivo'
          }
existeFactivosubjectN	module_idr
   r   r   z
            SELECT 
                MailListID,
                ModuleID,
                Subject,
                Active,
                CreatedAt,
                CreatedBy
            FROM Util_MailListHead
            WHERE MailListID = ?
        Tr   u    existe y está activou    existe pero está inactivoz no existe en la base de datoszError al validar MailListID: z#Error en validar_mail_list_existe: )
r   r   r   fetchoneboolr   r   r   r   r   )r   	resultador    r   r!   r#   r&   s   &      r'   validar_mail_list_exister1   x   sq   ( 	%%4T52I)E#%
""$
 	uo.oo"&Ih"&s1v,Ih#&q6Ii %(VIk"#'Ii "")4\NBX'Y	)$)4\NB]'^	)$ $(Ii %0>\#]Ii    E$	)!>s1vhG	):3q6(CDDEs   CC   D-+7D((D-c                   R^ R^ R^ RR^ R^ R^ /R^ R	^ R
RRR/p \        4       pVP                  4       pRpVP                  W@34       VP                  4       p\	        V4      VR&   V EF  pV^ ,          pV^,          '       d&   V^,          P                  4       P                  4       MRp\        V^,          4      p	V	'       d   VR;;,          ^,          uu&   MVR;;,          ^,          uu&   V	'       dA   VR9   d   VR,          V;;,          ^,          uu&   MVR,          R;;,          ^,          uu&   V'       d&   RV9   d   RV9   d   VR;;,          ^,          uu&   K  VR	;;,          ^,          uu&   EK  	  RVR
&   RV  2VR&   VP                  4        VP                  4        V#   \         dC   p
RTR
&   R\        T
4       2TR&   \        P                  R\        T
4       24        Rp
?
T# Rp
?
ii ; i)u  
Obtiene estadísticas detalladas de una lista de correos.

Args:
    mail_list_id (int): ID de la lista de correos
    
Returns:
    dict: Estadísticas de la lista
          {
              'total_registros': 5,
              'activos': 3,
              'inactivos': 2,
              'por_tipo': {'TO': 2, 'CC': 1, 'BCC': 0},
              'correos_validos': 3,
              'correos_invalidos': 0,
              'success': True,
              'mensaje': 'Estadísticas obtenidas correctamente'
          }
total_registrosactivos	inactivospor_tipor   r   r   correos_validoscorreos_invalidosr
   Fr   r   z
            SELECT 
                Mail,
                RecipientType,
                ActiveLine
            FROM Util_MailListDetail
            WHERE MailListID = ?
        r   .Tu(   Estadísticas obtenidas para MailListID u    Error al obtener estadísticas: z)Error en obtener_estadisticas_mail_list: Nr   )r   r   r   r   r   r   r   r/   r   r   r   r   r   )r   estadisticasr    r   r!   r"   r#   r$   r%   r+   r&   s   &          r'   obtener_estadisticas_mail_listr;      s   , 	11QT1dAua01Q52	L3K#%
""$ 	uo.__&
*-j/&'Cq6D7:1vvSV\\^1134N#a&\F Y'1,'[)Q.) !%88 ,^<A< ,T2a72 tt./14/01Q61- 0 #'Y$L\N"[Y   K"'Y$DSVH"MY@QIJJKs&   CF. 8AF.  A,F. .G;97G66G;c                6    \        4       pVP                  4       pRpVP                  VV VVVVVVVVV	V
34       VP                  4        VP	                  4        VP	                  4        RRRR/#   \
         d   pRRRR\        T4       2/u Rp?# Rp?ii ; i)	uF   
Guarda un registro de envío de correo en la tabla Util_MailSentLog.
a	  
            INSERT INTO Util_MailSentLog
                (MailListID, Subject, RecipientsTO, RecipientsCC, RecipientsBCC,
                TemplateUsed, TemplateData, FilesSent, SentBy, Status, ErrorMsg)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        r
   Tr   u   Log de envío registradoFzError al guardar log: N)r   r   r   commitr   r   r   )r   r,   recipients_torecipients_ccrecipients_bcctemplate_usedtemplate_data
files_sentsent_bystatus	error_msgr    r   r!   r&   s   &&&&&&&&&&&    r'   guardar_log_enviorG     s     P#%
""$ 	u
 	 	4,FGG P5)/Ec!fX-NOOPs   A.A1 1B<BBBc                     \        4       pVP                  4       pR pVP                  W034       VP                  4       pVP	                  4        VP	                  4        V'       d
   V^ ,          # R#   \
         d   p Rp?R# Rp?ii ; i)z:SELECT Subject FROM Util_MailListHead WHERE MailListID = ?N)r   r   r   r.   r   r   )r   r    r   r!   r#   r&   s   &     r'   obtener_subject_de_mail_listrI   H  su    
#%
""$Luo.oos1v&$& s   A.A3 1A3 3B	B	)ENVIADON)loggingConsultas_SQL.conexionr   basicConfigINFO	getLogger__name__r   r(   r1   r;   rG   rI        r'   <module>rS      sR     1   ',, '			8	$ePGTUn-P^rR   