62 lines
No EOL
1.9 KiB
Python
62 lines
No EOL
1.9 KiB
Python
from typing import Dict, List, Optional, Any
|
|
from utils.functions.items_to_dict import _row_to_contact_dict
|
|
import logging
|
|
from utils.functions.functions import _safe_strip
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def _get_contacts_client(numero: str, conn) -> list:
|
|
try:
|
|
cursor = conn.cursor()
|
|
|
|
query = """
|
|
SELECT
|
|
CT_Num, CT_No, N_Contact,
|
|
CT_Civilite, CT_Nom, CT_Prenom, CT_Fonction,
|
|
N_Service,
|
|
CT_Telephone, CT_TelPortable, CT_Telecopie, CT_EMail,
|
|
CT_Facebook, CT_LinkedIn, CT_Skype
|
|
FROM F_CONTACTT
|
|
WHERE CT_Num = ?
|
|
ORDER BY N_Contact, CT_Nom, CT_Prenom
|
|
"""
|
|
|
|
cursor.execute(query, [numero])
|
|
rows = cursor.fetchall()
|
|
|
|
query_client = """
|
|
SELECT CT_Contact
|
|
FROM F_COMPTET
|
|
WHERE CT_Num = ?
|
|
"""
|
|
cursor.execute(query_client, [numero])
|
|
client_row = cursor.fetchone()
|
|
|
|
nom_contact_defaut = None
|
|
if client_row:
|
|
nom_contact_defaut = _safe_strip(client_row.CT_Contact)
|
|
|
|
contacts = []
|
|
for row in rows:
|
|
contact = _row_to_contact_dict(row)
|
|
|
|
if nom_contact_defaut:
|
|
nom_complet = f"{contact.get('prenom', '')} {contact['nom']}".strip()
|
|
contact["est_defaut"] = (
|
|
nom_complet == nom_contact_defaut or
|
|
contact['nom'] == nom_contact_defaut
|
|
)
|
|
else:
|
|
contact["est_defaut"] = False
|
|
|
|
contacts.append(contact)
|
|
|
|
return contacts
|
|
|
|
except Exception as e:
|
|
logger.warning(f" Impossible de récupérer contacts pour {numero}: {e}")
|
|
return []
|
|
|
|
__all__ = [
|
|
"_get_contacts_client"
|
|
] |