BCard - Documentation technique

BCardContactSyncService
in package

Synchronise les contacts du carnet d'adresses avec les données d'une carte de visite B-Card.

Lorsqu'une carte de visite est créée ou mise à jour, ce service recherche dans tout le carnet d'adresses (tous utilisateurs confondus) un contact partageant la même adresse e-mail et y reporte les informations de la carte, afin que les fiches enregistrées par des tiers restent à jour. Il marque le contact comme provenant d'une B-Card et horodate la synchronisation dans sa note.

Table of Contents

Properties

$contactRepository  : ContactRepository
$entityManager  : EntityManagerInterface
$logger  : LoggerInterface

Methods

__construct()  : mixed
canSyncWithExistingContact()  : bool
Vérifie si une BCard peut être synchronisée avec un contact existant
syncContactWithBCard()  : Contact|null
Synchronise un contact existant avec les données d'une BCard Si le contact existe déjà, met à jour ses informations avec celles de la BCard Si le contact n'existe pas, retourne null
updateContactFromBCard()  : void
Met à jour un contact existant avec les données d'une BCard

Properties

Methods

__construct()

public __construct(EntityManagerInterface $entityManager, ContactRepository $contactRepository, LoggerInterface $logger) : mixed
Parameters
$entityManager : EntityManagerInterface

Flush des modifications apportées au contact synchronisé.

$contactRepository : ContactRepository

Recherche du contact existant par adresse e-mail.

$logger : LoggerInterface

Journalisation du déroulement de la synchronisation.

canSyncWithExistingContact()

Vérifie si une BCard peut être synchronisée avec un contact existant

public canSyncWithExistingContact(BusinessCardAize $businessCard, User $bcardOwner) : bool

Retourne false si la carte n'a pas d'e-mail. Sinon, recherche un contact portant cette adresse et n'accepte la synchronisation que si ce contact existe et appartient à un autre utilisateur que le propriétaire de la carte. Attention : ce critère est plus restrictif que celui réellement appliqué par BCardContactSyncService::syncContactWithBCard(), qui synchronise aussi les contacts du propriétaire.

Méthode de lecture seule, sans effet de bord.

Parameters
$businessCard : BusinessCardAize

Carte de visite candidate.

$bcardOwner : User

Propriétaire de la carte.

Return values
bool

true si un contact d'un autre utilisateur correspond à l'e-mail de la carte.

syncContactWithBCard()

Synchronise un contact existant avec les données d'une BCard Si le contact existe déjà, met à jour ses informations avec celles de la BCard Si le contact n'existe pas, retourne null

public syncContactWithBCard(BusinessCardAize $businessCard, User $bcardOwner) : Contact|null

Déroulement : si la carte n'a pas d'e-mail, un avertissement est journalisé et null est retourné. Sinon, le premier contact portant cette adresse est recherché sans filtrer sur son propriétaire — la synchronisation est donc volontairement globale. L'appartenance du contact au propriétaire de la carte n'est plus bloquante : elle est seulement journalisée et la mise à jour se poursuit. Le contact est ensuite alimenté par BCardContactSyncService::updateContactFromBCard() puis flushé.

Effets de bord : requête de lecture, écriture en base avec flush(), journalisation.

Parameters
$businessCard : BusinessCardAize

Carte de visite source des données.

$bcardOwner : User

Propriétaire de la carte, utilisé uniquement pour la journalisation.

Return values
Contact|null

Contact mis à jour, ou null si la carte n'a pas d'e-mail ou si aucun contact ne correspond à cette adresse.

updateContactFromBCard()

Met à jour un contact existant avec les données d'une BCard

private updateContactFromBCard(Contact $contact, BusinessCardAize $businessCard) : void

Chaque champ (prénom, nom, entreprise, intitulé de poste, e-mail, téléphone) n'est recopié que s'il est renseigné sur la carte : les valeurs vides ou nulles n'écrasent jamais celles du contact. Le contact est marqué isBCard = true, et une mention « Synchronisé avec BCard le JJ/MM/AAAA HH:MM » est ajoutée à sa note, concaténée avec l'existant par un séparateur | — la note grossit donc à chaque synchronisation.

Cette méthode ne flushe pas : la persistance est laissée à l'appelant (BCardContactSyncService::syncContactWithBCard()).

Parameters
$contact : Contact

Contact à mettre à jour (entité managée).

$businessCard : BusinessCardAize

Carte de visite fournissant les valeurs.


        
On this page

Search results