/**
  * @param Name $name
  * @param Kind $kind
  * @return ArrayCollection
  */
 public function partiesLikeNameAndKind(Name $name, Kind $kind)
 {
     $qb = $this->em->createQueryBuilder();
     $query = $qb->select('p')->from($this->partyClass, 'p')->join('p.kind', 'k')->where($qb->expr()->eq('k.id', '?1'), $qb->expr()->like('p.lastName', '?2'))->setParameter(1, $kind->id())->setParameter(2, '%' . $name->toString() . '%');
     $parties = $query->getQuery()->getResult();
     return $parties;
 }
    /**
     * Get all groups of a kind
     *
     * @param Kind $kind
     * @param integer|null $orgId
     * @return mixed
     */
    public function groupsOfKind(Kind $kind, $orgId = null)
    {
        if ($orgId) {
            $sql = <<<EOT
                    SELECT
                        p.id AS id,
                        p.lastName,
                        g.description,
                        g.avatar
                    FROM groups g
                    INNER JOIN parties p ON g.id = p.id
                    INNER JOIN p2p_relations rel ON p.id = rel.context
                    WHERE p.kind_id = ? AND rel.reference =?
                    ORDER BY p.id
EOT;
        } else {
            $sql = <<<EOT
                    SELECT
                        p.id AS id,
                        p.firstName,
                        p.lastName,
                        g.description,
                        g.avatar
                    FROM groups g
                    INNER JOIN parties p ON g.id = p.id
                    WHERE p.kind_id = ?
                    ORDER BY p.id
EOT;
        }
        $rsm = new ResultSetMappingBuilder($this->em);
        $rsm->addEntityResult('Bakgat\\Notos\\Domain\\Model\\Identity\\Party', 'p');
        $rsm->addEntityResult('Bakgat\\Notos\\Domain\\Model\\Identity\\Group', 'g');
        $rsm->addFieldResult('p', 'id', 'id');
        $rsm->addFieldResult('p', 'lastName', 'lastName');
        $rsm->addFieldResult('g', 'description', 'description');
        $qb = $this->em->createNativeQuery($sql, $rsm)->setParameter(1, $kind->id());
        if ($orgId) {
            $qb->setParameter(2, $orgId);
        }
        $groups = $qb->getScalarResult();
        return $groups;
    }
 /**
  * {@inheritDoc}
  */
 public function parent()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'parent', array());
     return parent::parent();
 }