/**
  * Implement to return an array of unique identifiers to filter from the list.
  *
  * @param Collection $list The data list to filter.
  * @return array
  */
 public function doGetUniqueIdentifiersToFilter(Collection $list)
 {
     $ids = [];
     foreach ($list as $item) {
         $collection = $item[$this->collectionProperty];
         $filter = new Group("AND");
         $filter->addFilters($collection->getFilter(), new Equals($this->columnName, $this->equalTo));
         $collection->filter($filter);
         if (!sizeof($collection)) {
             $ids[] = $item->UniqueIdentifier;
         }
     }
     return $ids;
 }
Example #2
0
 public function testRepositoryFilters()
 {
     $group = new Group();
     $group->addFilters(new Equals("CompanyName", "GCD"));
     $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company");
     $list->filter($group);
     sizeof($list);
     $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` = :", MySql::getPreviousStatement());
     $this->assertTrue($group->wasFilteredByRepository());
     $group = new Group();
     $group->addFilters(new Equals("CompanyName", "GCD"));
     $group->addFilters(new Equals("Test", "GCD"));
     $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company");
     $list->filter($group);
     sizeof($list);
     $statement = MySql::getPreviousStatement();
     $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` = :", $statement);
     $this->assertFalse($group->wasFilteredByRepository());
     $group = new Group();
     $group->addFilters(new Contains("CompanyName", "GCD"));
     $list = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company");
     $list->filter($group);
     sizeof($list);
     $this->assertStringStartsWith("SELECT `tblCompany`.* FROM `tblCompany` WHERE ( `tblCompany`.`CompanyName` LIKE :", MySql::getPreviousStatement());
 }
Example #3
0
 public function testFilterSetsModelValues()
 {
     $subGroup = new Group("And");
     $subGroup->addFilters(new Equals("Forename", "Andrew"), new GreaterThan("DateOfBirth", 18));
     $andGroup = new Group("And");
     $andGroup->addFilters(new Equals("CompanyID", 1), new Equals("Surname", "Cuthbert"), $subGroup);
     $orGroup = new Group("Or");
     $orGroup->addFilters(new Equals("CompanyID", 1), new Equals("Surname", "Cuthbert"), $subGroup);
     $model = new Example();
     $andGroup->setFilterValuesOnModel($model);
     $this->assertEquals(1, $model->CompanyID);
     $this->assertEquals("Cuthbert", $model->Surname);
     $this->assertEquals("Andrew", $model->Forename);
     $model = new Example();
     $orGroup->setFilterValuesOnModel($model);
     $this->assertNotEquals(1, $model->CompanyID);
     $this->assertNotEquals("Cuthbert", $model->Surname);
     $this->assertNotEquals("Andrew", $model->Forename);
 }