public function getPredicate($degreesOfKinship = self::SIBLINGS) { $siblingCondition = new Where(); $personaId = $this->personaId; $fatherId = $this->fatherId; $motherId = $this->motherId; if ($this->isFlagSet($degreesOfKinship, self::BROTHER)) { $where = (new Where())->equalTo('father_id', $fatherId)->equalTo('mother_id', $motherId)->equalTo('gender', self::GENDER_MALE)->notEqualTo('id', $personaId); $siblingCondition->orPredicate($where); } if ($this->isFlagSet($degreesOfKinship, self::SISTER)) { $where = (new Where())->equalTo('father_id', $fatherId)->equalTo('mother_id', $motherId)->equalTo('gender', self::GENDER_FEMALE)->notEqualTo('id', $personaId); $siblingCondition->orPredicate($where); } if ($this->isFlagSet($degreesOfKinship, self::HALF_BROTHER_PATERNAL)) { $where = (new Where())->equalTo('father_id', $fatherId)->equalTo('gender', self::GENDER_MALE)->notEqualTo('id', $personaId); $where->andPredicate((new Where())->notEqualTo('mother_id', $motherId)->orPredicate((new Where())->isNull('mother_id'))); $siblingCondition->orPredicate($where); } if ($this->isFlagSet($degreesOfKinship, self::HALF_BROTHER_MATERNAL)) { $where = (new Where())->equalTo('mother_id', $motherId)->equalTo('gender', self::GENDER_MALE)->notEqualTo('id', $personaId); $where->andPredicate((new Where())->notEqualTo('father_id', $fatherId)->orPredicate((new Where())->isNull('father_id'))); $siblingCondition->orPredicate($where); } if ($this->isFlagSet($degreesOfKinship, self::HALF_SISTER_PATERNAL)) { $where = (new Where())->equalTo('father_id', $fatherId)->equalTo('gender', self::GENDER_FEMALE)->notEqualTo('id', $personaId); $where->andPredicate((new Where())->notEqualTo('mother_id', $motherId)->orPredicate((new Where())->isNull('mother_id'))); $siblingCondition->orPredicate($where); } if ($this->isFlagSet($degreesOfKinship, self::HALF_SISTER_MATERNAL)) { $where = (new Where())->equalTo('mother_id', $motherId)->equalTo('gender', self::GENDER_FEMALE)->notEqualTo('id', $personaId); $where->andPredicate((new Where())->notEqualTo('father_id', $fatherId)->orPredicate((new Where())->isNull('father_id'))); $siblingCondition->orPredicate($where); } return $siblingCondition; }
/** * Fetch all or a subset of resources * * @param array $params * @return ApiProblem|mixed */ public function fetchAll($params = array()) { $where = new Where(); if (isset($params['nome']) && $params['nome'] != '') { $likeSpec = new Where(); $likeSpec->like('nome', '%' . $params['nome'] . '%'); $where->addPredicate($likeSpec); $likeSpec = new Where(); $likeSpec->like('sobrenome', '%' . $params['nome'] . '%'); $where->orPredicate($likeSpec); } $sort = null; if (in_array($params['sort'], array_keys((new ClienteEntity())->getArrayCopy()))) { $sort = $params['sort']; } $dbTableGatewayAdapter = new DbTableGateway($this->tableGateway, $where, $sort); return new ClienteCollection($dbTableGatewayAdapter); }