Example #1
0
 /**
  * @param Search $search
  * @return SearchResult
  */
 public function findBySearch(Search $search)
 {
     $builder = $this->createQueryBuilder('t')->innerJoin('t.paymentMethod', 'pm')->addSelect('pm')->leftJoin('t.details', 'd')->addSelect('d');
     // Filter
     if (!is_null($date = $search->getFilter('date'))) {
         $builder->andWhere('t.date = :date')->setParameter(':date', $date);
     }
     if (!is_null($thirdName = $search->getFilter('thirdName'))) {
         $builder->andWhere('t.thirdName LIKE :thirdName')->setParameter(':thirdName', '%' . $thirdName . '%');
     }
     // Orderby
     foreach ($search->getOrderby() as $key => $reverse) {
         switch ($key) {
             case 'amount':
                 $builder->addOrderBy('t.amount', $reverse === true ? 'ASC' : 'DESC');
                 break;
             case 'date':
                 $builder->addOrderBy('t.date', $reverse === true ? 'ASC' : 'DESC');
                 break;
             case 'paymentMethod':
                 $builder->addOrderBy('pm.name', $reverse === true ? 'ASC' : 'DESC');
                 break;
             case 'thirdName':
                 $builder->addOrderBy('t.thirdName', $reverse === true ? 'ASC' : 'DESC');
                 break;
         }
     }
     $builder->addOrderBy('t.id', 'DESC');
     // Page
     $builder->setMaxResults(20);
     $builder->setFirstResult($search->getPage() * 20);
     return new SearchResult($builder, $search);
 }
Example #2
0
 /**
  * @param Search $search
  * @return SearchResult
  */
 public function findBySearch(Search $search)
 {
     $builder = $this->createQueryBuilder('m')->leftJoin('m.promotions', 'p')->addSelect('p')->leftJoin('p.rank', 'r')->addSelect('r')->leftJoin('m.memberships', 'ms');
     // Filter
     if (!is_null($city = $search->getFilter('city'))) {
         $builder->andWhere('m.city LIKE :city')->setParameter(':city', '%' . $city . '%');
     }
     if (!is_null($firstname = $search->getFilter('firstname'))) {
         $builder->andWhere('m.firstname LIKE :firstname')->setParameter(':firstname', '%' . $firstname . '%');
     }
     if (!is_null($lastname = $search->getFilter('lastname'))) {
         $builder->andWhere('m.lastname LIKE :lastname')->setParameter(':lastname', '%' . $lastname . '%');
     }
     if (!is_null($season = $search->getFilter('season'))) {
         $builder->andWhere('ms.season = :season')->setParameter(':season', $season);
     }
     // Orderby
     foreach ($search->getOrderby() as $key => $reverse) {
         switch ($key) {
             case 'age':
                 $builder->addOrderBy('m.birthday', $reverse === true ? 'ASC' : 'DESC');
                 break;
             case 'city':
                 $builder->addOrderBy('m.city', $reverse === true ? 'DESC' : 'ASC');
                 break;
             case 'firstname':
                 $builder->addOrderBy('m.firstname', $reverse === true ? 'DESC' : 'ASC');
                 break;
             case 'lastname':
                 $builder->addOrderBy('m.lastname', $reverse === true ? 'DESC' : 'ASC');
                 break;
         }
     }
     $builder->addOrderBy('m.id', 'ASC');
     // Page
     $builder->setMaxResults(20);
     $builder->setFirstResult($search->getPage() * 20);
     return new SearchResult($builder, $search);
 }
Example #3
0
 /**
  * @return int
  */
 public function getPage()
 {
     return $this->search->getPage();
 }