public function findByCriteriaEmailAndPhone($where, $email = null, $phone = null)
{
// Create basic query
$qb = $this->createQueryBuilder('contact')->leftJoin('contact.accountContacts', 'accountContacts')->leftJoin('accountContacts.account', 'account')->addSelect('accountContacts')->addSelect('account');
if (isset($where['id'])) {
$qb->andWhere('contact.id = :id');
$qb->setParameter('id', $where['id']);
}
if (isset($where['firstName'])) {
$qb->andWhere('contact.firstName = :firstName');
$qb->setParameter('firstName', $where['firstName']);
}
if (isset($where['lastName'])) {
$qb->andWhere('contact.lastName= :lastName');
$qb->setParameter('lastName', $where['lastName']);
}
if (!is_null($email)) {
$qb->join('contact.emails', 'emails', 'WITH', 'emails.email = :email');
$qb->setParameter('email', $email);
}
if (!is_null($phone)) {
$qb->join('contact.phones', 'phones', 'WITH', 'phones.phone = :phone');
$qb->setParameter('phone', $phone);
}
try {
$query = $qb->getQuery();
$result = $query->getSingleResult();
} catch (NoResultException $nre) {
return;
}
return $result;
}