
    h                         d dl Z d dlZd dlZej                  j	                  d       d dlmZ d dlmZ defdZ	d Z
d Zd	 Zd
 ZdefdZd Zd ZddZddededefdZd Zd ZdefdZy)    Nz/var/www/html/config)get_connection)datetimedatac                 	   d }d }	 t        dt        | j                  dd                  }t        dt        dt        | j                  dd                        }|dz
  |z  }t	               }|t        d      |j                  d      }d	}|j                  |       |j                         d
   }|dk(  r5d}ddg ddd|ddd	}	|	|r|j                          |r|j                          S S ||z   dz
  |z  }|}
||kD  r
|}|dz
  |z  }|dk  rd}d}d}|j                  |||f       |j                         }|D ]a  }dD ]D  }|j                  |      st        ||   d      s%|dk(  rdnd}||   j                  |      ||<   F |j                  d      rb|d   }|j                  d      }|j                  dd      }|j                         |d<   ||d   k7  rt        j                   d| d|d    d       t        |j                  d      xs d      |d<   g d}|D ]/  }|j                  |      }||dk(  rd ||<   !	 t        |      ||<   1 |j'                         D ]6  \  }}||v r|d||<   t)        |t*              s$|j                         ||<   8 d t-        |      }||k  }|dkD  }||k(  ru|dk(  rp|dkD  rkt        j.                  d| d|        t        d|dz
        }|dz
  |z  }|j                  |||f       |j                         }t-        |      }||k  }|dkD  }|dk(  rd | }n|dz   }||z   }d!| d"| d#| d$| d"| 
}d||||||||||
||d%d&
}	|	|r|j                          |r|j                          S S # t"        t$        f$ r	 d ||<   Y w xY w# t"        $ rf}t        j0                  d't+        |              dd(g ddddddt+        |      d)
cY d }~|r|j                          |r|j                          S S d }~wt
        $ r@}dd*t+        |       d+cY d }~|r|j                          |r|j                          S S d }~ww xY w# |r|j                          |r|j                          w w xY w),N   paged   pageSize   %   Error de conexión a la base de datosT
dictionaryz6SELECT COUNT(*) AS total FROM union_contactos_personastotalr   zNo se encontraron registrosF)	successmessager   totalRecords
totalPagescurrentPager
   hasNextPagehasPrevPagea  
            SELECT 
                uc.id, 
                fecha_registro, 
                uc.nombre_embajador, 
                uc.nombres, 
                uc.apellidos, 
                uc.tipo_documento, 
                uc.documento,
                uc.correos, 
                uc.telefono, 
                uc.pais, 
                uc.departamento, 
                uc.ciudad, 
                uc.localidad, 
                uc.barrio,
                uc.direccion, 
                uc.fecha_cumpleanos, 
                uc.genero, 
                uc.tipo_sangre, 
                uc.recomendado,
                uc.nombre_recomendador, 
                uc.nombre_embajador, 
                uc.grupo_wp, 
                uc.grupo_wp1, 
                uc.como_ayudar, 
                uc.pasion,
                uc.intereses, 
                uc.autorizacion, 
                uc.estado_etapa, 
                uc.id_origen_datos, 
                uc.origen_datos, 
                uc.fecha_registro_contacto,
                DATEDIFF(CURDATE(), lpc_ultimo.ultima_fecha_hora) AS id_notificacion_contacto,
                uca.assignment_id,
                uca.assigned_user_id,
                uca.caller_user_id,
                uca.coordinator_user_id,
                uca.administrator_user_id
            FROM union_contactos_personas uc
            INNER JOIN (
                SELECT 
                    id_contacto,
                    MAX(fecha_hora) as ultima_fecha_hora
                FROM logs_primer_contacto 
                GROUP BY id_contacto
            ) lpc_ultimo ON uc.id = lpc_ultimo.id_contacto
            LEFT JOIN user_contact_assignments uca ON uc.id = uca.contacted_person_id
            ORDER BY uc.id DESC
            LIMIT %s OFFSET %s
        )fecha_registrofecha_registro_contactofecha_cumpleanosstrftimer   %Y-%m-%d %H:%M:%Sz%Y-%m-%dorigen_datos_ u   🧹 Origen limpiado: 'u   ' → ''estado_etapa)assignment_idassigned_user_idcaller_user_idcoordinator_user_idadministrator_user_id u)   ⚠️ Inconsistencia detectada: página z" sin registros pero total_records=u   No hay registros en la página u   Página z de z - Registros -)offsetrequestedPage
actualPagerecordsInPage)
r   r   r   r   r   r   r
   r   r   debugu   ❌ Error de validación: u   Parámetros inválidos)
r   r   r   r   r   r   r
   r   r   errorError: r   r   )maxintgetminr   	Exceptioncursorexecutefetchoneclosefetchallhasattrr   stripreplaceloggingr,   
ValueError	TypeErroritems
isinstancestrlenwarningr-   )r   conexionr5   r   	page_sizer(   count_querytotal_recordstotal_pagesresponseoriginal_pagequerycontactos_datacontactocampo_fechaformato
origen_raworigen_limpiocampos_asignacioncampovalorkeyvalueregistros_devueltoshas_next_pagehas_prev_pager   iniciofinvees                                  K/var/www/dev.api.imparables.com.co/api_imparables/crm/personas/contactos.pylist_prospectosr`   
   s   HFe1c$((61-./SCQ(?$@AB	(i'!#CDDD1 O{#)'2 AK  8 ! %$$
H D LLNNN E )94q8YFK +DQh)+F A:FD2h 	uy&12* ' /	2H` T<<,+9NPZ1[5@D]5]1cmG,4[,A,J,J7,SH[)T ||N+%n5
 * 0 0 5 - 5 5c3 ?+8+>+>+@( .!99MM$;J<wxXfOgNhhi"jk (+8<<+G+L1'MH^$!P + / U+=ERK&*HUO/*-e*/ 'nn. 2
U++=$&HSMs+$)KKMHSM2O/	2d ".1 {*q ;#6!#;PQ@QOOGvMop}o~  Aq+/*DQh)+FNN59f"56#__.N"%n"5 ;.M 1HM !#7v>GaZF..C d;-}VHAcURVWdVefG ")%!(( !!."!4	
& 4 LLNNN s '	2 /*./~  
23r7)<=/  W
 	
, LLNNN   
 Q)
 	
 LLNNN 
 LLNNN s   B?N& +A'N& N& #CN& N5N& C N& N#N& "N##N& &	Q/6P%Q&Q QQ,Q-Q QQ 'Rc                    t               }|dddS 	 |j                         }d}|j                  || d   | d   | d   | d   | d	   | d
   | d   f       |j                          |j	                          |j	                          dd| dS # t
        $ r+}|j	                          ddt        |       dcY d }~S d }~ww xY w)Nr      Error de conexiónr/   z
            INSERT INTO recordatorios (id_contacto_union, id_agente_creador, asunto, descripcion, fecha_hora, id_agente_asignado, id_etapa, fecha_hora_registro)
            VALUES (%s, %s, %s, %s, %s, %s, %s, now())
        id_contacto_unionid_agente_creadorasuntodescripcion
fecha_horaid_agente_asignadoid_etapar   zRecordatorio insertador   r   r   r.   )r   r5   r6   commitr8   r4   rB   )r   
conexionBDr5   rL   r^   s        r_    insertarRecordatorioFidelizacionrm      s   !J)=>>
""$ 	u$%t,?'@$x.RVWdRegklxgy{  AU  |V  X\  ]g  Xh
 	 	 /
 	
  
 Q)
 	

s   A5B	 		B= B82B=8B=c           !      `   	 t               }|dddS | j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d	      }| j                  d
      }| j                  d      }	| j                  d      }
| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d      }| j                  d       }| j                  d!      }| j                  d"      } | j                  d#      }!| j                  d$      }"|"rd%| d&}#|j                         }$|$j                  |#d'|f       |j	                          d(}%d)}&d)}'d*}(|$j                  |(|||'|%|&f       |j	                          |$j                          |j                          d+d,dS |ss|sq|ro|j                         j                         })t        |)      d+k(  r|)d   }d-}n;t        |)      d.k(  r|)\  }}n't        |)      d.kD  rd/j                  |)d d0       }|)d0   }d1}*|j                         }$|$j                  |*|||||	|
||||||||||||||||||||||| |!f       |$j                  }'d%| d2}+|$j                  |+||f       d3}%d)}&d4}(|$j                  |(|||'|%|&f       |j	                          |'| d5<   |$j                          |j                          d+d6| d7S # t        $ r},dd8t        |,       dcY d },~,S d },~,ww xY w)9Nr   rb   r/   idr   id_embajadornombre_embajadornombres_completosnombres	apellidostipo_documento	documentocorreostelefonopaisdepartamentociudad	localidadbarrio	direccionr   generotipo_sangrerecomendadonombre_recomendadorgrupo_wp	grupo_wp1como_ayudarpasion	interesesautorizacionr    nombreTablar   tiempo_primer_contactonoQuisoParticiparz
            UPDATE za 
            SET estado_etapa = %s, fecha_estado = NOW() 
            WHERE id = %s
            r   40z
            INSERT INTO logs_primer_contacto (id_usuario, id_contacto_origen, id_contacto, id_evento, leido)
            VALUES (%s, %s, %s, %s, %s)
            r   u3   Se pasó a estado descartado y se registró el log.r&      r   a  
            INSERT INTO 
                union_contactos_personas(
                    fecha_registro,
                    nombre_embajador,
                    nombres,
                    apellidos,
                    tipo_documento,
                    documento,
                    correos,
                    telefono,
                    pais,
                    departamento,
                    ciudad,
                    localidad,
                    barrio,
                    direccion,
                    fecha_cumpleanos,
                    genero,
                    tipo_sangre,
                    recomendado,
                    nombre_recomendador,
                    grupo_wp,
                    grupo_wp1,
                    como_ayudar,
                    pasion,
                    intereses,
                    autorizacion,
                    estado_etapa,
                    id_origen_datos,
                    origen_datos,
                    fecha_registro_contacto,
                    tiempo_primer_contacto
                ) 
            VALUES (
                %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
            )
        z] 
            SET estado_etapa = %s, fecha_estado = NOW() 
            WHERE id = %s
        1
            INSERT INTO logs_primer_contacto (id_usuario, id_contacto_origen, id_contacto, id_evento, leido)
            VALUES (%s, %s, %s, %s, %s)
        id_contactozDatos insertados correctamenterj   zError al insertar datos: )r   r2   r5   r6   rk   r8   r;   splitrC   join	lastrowidr4   rB   )-r   rl   
id_personar   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   update_query_descartador5   eventoleidor   insert_log_querynombres_completos_splitquery2update_queryr^   s-                                                r_   insertarContactor     s   eO#%
 -ABB XXd^
"23xx/88$67 HH%89((9%HH[)	"23HH[)	((9%88J'xxxx/(#HH[)	(#HH[)	88$67(#hh}-hh}-"hh'<=88J'HH[)	hh}-(#HH[)	xx/xx/xx."&((+D"E!%*B!C HH%89+ > "'#  &&(FNN2Q
OD FEK  NN+lJU[]b-cd LLN -bcc y->&7&=&=&?&E&E&G#*+q01!4	,-2%<",-1((#:3B#?@3B7	%N ""$v,gy.R[]dfnpt&)VY@PRXZegr9k69Vb*l4KMc	 
 	 && > "	 	|lJ%?@  	',
KQWY^)_` 	 *] 7
 	
  O+DSVH)MNNOs*   P	 K P	 D4P	 		P-P("P-(P-c                    t               }d }|dddS 	 |j                  d      xs# t        j                         j	                  d      }|j                  d      xs d}|j                  dd       }|j                  d	d       }|j                  d
d       }|j                  dd       }	|j                  dd       }
|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       xs d}|j                  dd       xs d}|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  dd       }|j                  d d       }|j                  d!      }|d"}|j                  d#      xs d$}|j                  d%      xs d&}|j                  d'      xs# t        j                         j	                  d      } |j                  d()      }d }!g }"d*}!||	|||
||||||||||||||||||||||| || g}"|!*dd+d|r|j                          |r|j                          S S |j                  |!|"       |j                          d,}#|j                  |#| f       |j                         }$|j                          |j                          d(d-|$d.|r|j                          |r|j                          S S # t        $ r}%t        j                  d/t        |%             t        j                  t        j                                dd0t        |%       t        j                         d1cY d }%~%|r|j                          |r|j                          S S d }%~%ww xY w# |r|j                          |r|j                          w w xY w)2NFr   r/   r   r   rq   zNo embajador asignadors   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   Nor   zNo recomendador   r   r   r   r   r   r    r   r   z
Sin origenr   z00:00:00r   Tr   a  
                UPDATE union_contactos_personas
            SET tipo_documento = %s, documento = %s, nombres = %s, apellidos = %s, correos = %s, 
                telefono = %s, pais = %s, departamento = %s, ciudad = %s, direccion = %s, 
                genero = %s, recomendado = %s, nombre_recomendador = %s, grupo_wp = %s, 
                grupo_wp1 = %s, como_ayudar = %s, pasion = %s, estado_etapa = %s,
                nombre_embajador = %s, localidad = %s, barrio = %s, fecha_cumpleanos = %s,
                tipo_sangre = %s, intereses = %s, autorizacion = %s, origen_datos = %s, tiempo_primer_contacto = %s, fecha_registro_contacto = %s, fecha_registro = %s
            WHERE id = %s
            u-   Tabla no válida especificada en la solicitudz4SELECT * FROM union_contactos_personas WHERE id = %szVoluntario actualizadorj   z!Error al actualizar los datos: %szError al actualizar los datos: )r   r   trace)r   r2   r   nowr   r5   r8   r6   rk   r7   r4   r=   r-   rB   	traceback
format_exc)&id_voluntarior   rl   r5   r   rq   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   rL   paramsquery_selectvoluntario_actualizador^   s&                                         r_   actualizar_contactor     s   !JF -TUUU"23cx||~7N7NOb7c88$67R;R((9d+HH[$/	"2D9HH[$/	((9d+88J-xx%xx5(D)HH[$/	(D)HH[$/	88$6=(D)hh}d3hh}d3;t"hh'<dCWGW88J-HH[$/	hh}d3(D)HH[$/	xx5xx/Lxx/?<!%*B!C!Qz"&((+D"E"uI`I`atIu""d"3	 !)Wi(,	6;9k6<i1AL,@VXoq  BO	P =$1`a4 LLN 3 	uf%M|m%56!'!2,DNde LLN   
93q6Bi**,-8QA))+
 	
 LLN 
 LLN s8   J$M1 A,M1 1	P:A)P#P$P PP 'P=c                    d}d}	 t               }|*ddd|r|j                          |r|j                          S S |j                  d      }d}|j                  || f       |j	                         }|D ]  }|j                  d      r|d   j                  d	      |d<   |j                  d
      r|d
   j                  d	      |d
<   |j                  d      r"|j                  d      r|d    d|d    |d<   d|d<    ddt        |       d|d|r|j                          |r|j                          S S # t        $ rb}t        j                  dt        |              ddt        |       g dcY d}~|r|j                          |r|j                          S S d}~ww xY w# |r|j                          |r|j                          w w xY w)uD   
    Obtiene todos los recordatorios de un contacto específico
    NFr   r/   Tr   a`  
            SELECT 
                r.id,
                r.asunto,
                r.descripcion,
                r.fecha_hora,
                r.fecha_hora_registro,
                r.id_agente_creador,
                r.id_agente_asignado,
                r.id_etapa,
                e.nombres as agente_nombres,
                e.apellidos as agente_apellidos,
                e.correo_corporativo as agente_correo
            FROM recordatorios r
            LEFT JOIN empleados e ON r.id_agente_asignado = e.id
            WHERE r.id_contacto_union = %s
            ORDER BY r.fecha_hora DESC
        rg   r   fecha_hora_registroagente_nombresagente_apellidosr   agente_completozSin asignarzSe encontraron z recordatoriosrj   z Error al obtener recordatorios: )r   r8   r5   r6   r9   r2   r   rC   r4   r=   r-   rB   )rc   rE   r5   rL   recordatoriosrecordatorior^   s          r_   "obtener_recordatorios_por_contactor   !  s    HF=!#$1XYn LLNNN o D1& 	u023) * 
	@L--9,-G-P-PQd-e\* 566BCX6Y6b6bcv6w23  01l6F6FGY6Z5ABR5S4TTUVbcuVvUw2x./2?./
	@ (]);(<NK!
 LLNNN   
8QAB9#a&B
 	
 LLNNN 
 LLNNN s5   D: CD: :	F%2F 5F%6F(  F%%F( ('Gr   c                 ^   	 t               }|Addddt               v rj                          dt               v r|r|j                          S S S | sAddddt               v rj                          dt               v r|r|j                          S S S |j                  d      }d	}|j	                  || f       |j                         }d
d|ddt               v r|j                          dt               v r|r|j                          S S S # t        $ rW}ddt        |       dcY d }~dt               v rj                          dt               v rr|j                          S S S d }~ww xY w# dt               v rj                          dt               v rr|j                          w w w xY w)Nr   rb   r/   r5   rl   zFalta el ID del contactoTr   zw
            SELECT *
            FROM personas_contactos
            WHERE id_union_contactos_personas = %s  
        r   z"Respuestas obtenidas correctamenterj   r.   )r   localsr8   r5   r6   r9   r4   rB   )r   rl   r5   rL   
respuestasr^   s         r_   get_respuestas_primer_contactor   i  s   &#%
/@ vxLLN68#
 )3#; 54 vxLLN68#
 )3#/ ""d"3
 	u{n-__&
 ;
 vxLLN68#
 )3#  
 Q)
 	

 vxLLN68#
 )3#
 vxLLN68#
 )3#s;   D D <D 	E+E&$E+%E. &E++E. .>F,c                 H   	 t               }|y |j                         }d}|j                  || f       |j                         }|j	                          |j	                          |r|d   S d S # t
        $ r+}t        j                  dt        |              Y d }~y d }~ww xY w)Nz-SELECT id FROM eventos WHERE descripcion = %sr   z Error al obtener ID del evento: )	r   r5   r6   r7   r8   r4   r=   r-   rB   )descripcion_eventorl   r5   rL   	resultador^   s         r_   obtener_id_eventor     s    #%
""$?u134OO%	(y|2d2 8QABs#   A- AA- +A- -	B!6!BB!c                 4    dddddd}|j                  |       S )Nr   r         )r   r   r   r   r   )r2   )estadomapeo_estadoss     r_   obtener_id_evento_por_estador     s+    M V$$    c                 @   	 t               }|y|j                         }d}|j                  || ||||f       |j                          |j	                          |j	                          y# t
        $ r+}t        j                  dt        |              Y d }~yd }~ww xY w)NFr   Tz"Error al insertar log del evento: )	r   r5   r6   rk   r8   r4   r=   r-   rB   )	
id_usuarioid_contacto_origenr   	id_eventor   rl   r5   rL   r^   s	            r_   insertar_log_eventor     s    #%
""$ 	uz+={IW\]^ :3q6(CDs   A) AA) )	B2!BBnuevo_estador   c           	      F   d }d }	 t               }|*ddd|r|j                          |r|j                          S S |j                  d      }d}|j                  || f       |j	                         }|s*ddd|r|j                          |r|j                          S S |d   }|d	   }d
dddd
dddd}	|	j                  |      }
|
s0t        j                  d| d       d}|j                  ||| f       nHd}|j                  ||| f       |j                  }d|
 d}|j                  |||f       |j                  }|j                          d}|rmt        |      }|rHt        ||| |      }|rt        j                  d| d|  d|        n1t        j                  d|         nt        j                  d|        dd| |rdndz   | |||
||d|r|j                          |r|j                          S S # t        $ rs}|r|j                          t        j                  dt!        |              ddt!        |       dcY d }~|r|j                          |r|j                          S S d }~ww xY w# |r|j                          |r|j                          w w xY w)NFr   r/   Tr   z
            SELECT id_origen_datos, origen_datos 
            FROM union_contactos_personas 
            WHERE id = %s
        u   No se encontró el contactoid_origen_datosr   inscripciones_voluntariosprospectos_manualbase_datos_10kregistros_crm_antiguo)zinscripciones voluntarioszprospectos manualzbase datos 10kzregistros crm antiguor   r   r   r   zTabla no reconocida: 'r   zCUPDATE union_contactos_personas SET estado_etapa = %s WHERE id = %szUPDATE z$ SET estado_etapa = %s WHERE id = %sz#Log del evento registrado: usuario z, contacto z	, evento z8No se pudo registrar el log del evento para el contacto u)   No se encontró el evento para el estado zEstado actualizado a z y log registrador&   )r   r   r   r   tabla_origen_recibidatabla_origen_bd	id_origenlog_registradoz"Error al actualizar estado_etapa: zError al actualizar: )r   r8   r5   r6   r7   r2   r=   rD   rowcountrk   r   r   infor4   rollbackr-   rB   )r   r   r   rE   r5   query_origencontacto_infor   tabla_origen_rawmapeo_tablasr   query_unionfilas_unionfilas_origenr   r   r^   s                    r_    actualizar_estado_etapa_contactor     s   HF[!#$1XYj LLNNN k D1
 	|k^4)$1NON LLNNN O ""34	(8 *E!4.%<)D!4.%<	
 '**+;<OO45E4FaHI_KNN;{(CD `KNN;{(CD //K$_$55YZLNN<,	)BC!??L 	 4\BI!4ZKYb!c!LL#FzlR]^i]jjst}s~!  AOO&^_j^k$lm"KL> Z[ .|n=XfATlno&(%5.",	
* LLNNN   
:3q6(CD.s1vh7
 	
 LLNNN 
 LLNNN s<   G: =G: D5G: :	I6AI1I6I9 1I66I9 9'J c                 >   	 t               }|Oddddt               v rj                          dt               v r"|j                         r|j                          S S S | j	                  d      }| j	                  d      }|r|sOddddt               v rj                          dt               v r"|j                         r|j                          S S S d	}|j                         }|j                  |||f       |j                          |j                  dk(  rRdd
| ddt               v r|j                          dt               v r"|j                         r|j                          S S S dd|||j                  dddt               v r|j                          dt               v r"|j                         r|j                          S S S # t        $ r}}t        j                  d|        ddt        |       dcY d }~dt               v rj                          dt               v r"j                         r|j                          S S S d }~ww xY w# dt               v rj                          dt               v r"j                         r|j                          w w w xY w)NFrb   r/   r5   rl   r   r   z?Faltan datos requeridos: id_voluntario y tiempo_primer_contactoz|
            UPDATE union_contactos_personas 
            SET tiempo_primer_contacto = %s
            WHERE id = %s
        u#   No se encontró un registro con id Tu+   Tiempo de sesión actualizado correctamente)r   r   affected_rowsrj   zError en insertarTiempoSesion: u*   Error al actualizar el tiempo de sesión: )r   r   r8   is_connectedr2   r5   r6   rk   r   r4   r=   r-   rB   )r   rl   r5   r   r   rL   r^   s          r_   insertarTiempoSesionr   ,  s   8#%
$2FGb vxLLN68#
(?(?(A )B#a 1!%*B!C $: \R vxLLN68#
(?(?(A )B#K ""$u5}EF ??e# @P, vxLLN68#
(?(?(A )B#% D!.*@!'
" vxLLN68#
(?(?(A )B#  
7s;<CCF8L
 	

 vxLLN68#
(?(?(A )B#
 vxLLN68#
(?(?(A )B#sC   G *G AG )G 	I(I8I9I II AJc           	         t               }|dddS 	 d}|j                         }|j                  || d   | d   | d   | d   | d	   f       |j                          |j                  }|j                          |j                          d
dd|idS # t        $ rY}dt               v rj                          |r |j                          |j                          ddt        |       dcY d }~S d }~ww xY w)NFrb   r/   aQ  
            INSERT INTO 
                user_contact_assignments (
                    contacted_person_id, 
                    assigned_user_id, 
                    caller_user_id, 
                    coordinator_user_id, 
                    administrator_user_id
                )
            VALUES (%s, %s, %s, %s, %s)
        contacted_person_idr"   r#   r$   r%   Tu#   Asignación insertada correctamentero   rj   r5   r.   )
r   r5   r6   rk   r   r8   r4   r   r   rB   )r   rl   rL   r5   inserted_idr^   s         r_   %insert_user_assigned_contacted_personr   i  s!   !J+
 	

-

 ""$u&'#$!"&'()
 	 	&& <;'
 	
  

vxLLN!  Q)
 	


s   A;B 	C1AC,&C1,C1ro   c                 z   t               }|dddS d}	 |j                  d      }|j                  d| f       |j                         }|s*ddd|r|j	                          |r|j	                          S S |d	   }|d
   }|}g d}|rl|rj|j                         j                  dd      }||vrF|D ]*  }|j                  dd      |j                  dd      k(  r|} n |j                  d| d|f       |j                  d| f       |j                  d| f       |j                  d| f       |j                  d| f       |j                  d| f       |r|j                  d|f       |j                  d| f       |j                          ddd|r|j	                          |r|j	                          S S # t        $ rR}	|r|j                          ddt        |	       dcY d}	~	|r|j	                          |r|j	                          S S d}	~	ww xY w# |r|j	                          |r|j	                          w w xY w)zQ
    Elimina un contacto y todas sus referencias en las tablas relacionadas.
    NFr   r/   Tr   zPSELECT id_origen_datos, origen_datos FROM union_contactos_personas WHERE id = %su7   No se encontró el contacto en union_contactos_personasr   r   )r   r   r   r   r   r   r&   zDELETE FROM z WHERE id = %szEDELETE FROM personas_contactos WHERE id_union_contactos_personas = %sz6DELETE FROM recordatorios WHERE id_contacto_union = %sz7DELETE FROM logs_primer_contacto WHERE id_contacto = %szCDELETE FROM user_contact_assignments WHERE contacted_person_id = %sz7DELETE FROM notas_contacto WHERE id_contacto_union = %sz8DELETE FROM notas_contacto WHERE id_contacto_origen = %sz2DELETE FROM union_contactos_personas WHERE id = %sz9Contacto y todas sus referencias eliminadas correctamentezError al eliminar el contacto: )r   r5   r6   r7   r8   r;   r<   rk   r4   r   rB   )
ro   rE   r5   personar   r   tabla_origentablas_validasnombrer^   s
             r_   delete_contactr     sh    H -TUUF?D1 	ilnkpq//#$1jkj LLNNN k ""34~. $
 O'--/77SAL>1, F#++C4sB8OO'- l^>J_L^_ 	^ac`ef 	ORTQVW 	PSURWX 	\_a^cd 	PSURWXNNUXgWij 	KbUS,gh LLNNN   Y /NsSTvh-WXXLLNNN Y
 LLNNN s6   ;F5 6DF5 5	H>"H H!H HH 'H:)r   )N)r=   sysr   pathappendcnxpdor   r   dictr`   rm   r   r   r   r1   r   r   r   r   r   r   r   r    r   r_   <module>r      s     
  & ' ! i$ iX
DfOT\~DP' 'T(	%._# _S _VY _F9z5
rHs Hr   