getContactType() === ContactPointTypeEnum::OTHER) { return true; } $contactPointByType = []; if (!$contactPoint->getOrganization()->isEmpty()) { $contactPointByType = $this->contactPointRepository->getByTypeAndOrganization($contactPoint->getContactType(), $contactPoint->getOrganization()->first()); } elseif (!$contactPoint->getPerson()->isEmpty()) { $contactPointByType = $this->contactPointRepository->getByTypeAndPerson($contactPoint->getContactType(), $contactPoint->getPerson()->first()); } // Si le nombre de point de contact du type est supérieur à 1, OU si le nombre est égale a 1 ET que l'id du point de contact n'est pas celui en cours : invalide. if (count($contactPointByType) > 1 || (count($contactPointByType) === 1 && $contactPointByType[0]->getId() !== $contactPoint->getId())) { $this->context->buildViolation($constraint->payload) ->setParameter('{{ type }}', $contactPoint->getContactType()->value) ->atPath('contactType') ->addViolation(); return false; } return true; } }