public function setUp() { $this->service = new AdminSearchService(); $factory = new SearchResultBuilderFactory($this->getServiceContainer()->get('doctrine')); $factory->setRouter($this->getRouter()); $this->service->setSearchBuilderFactory($factory); }
public function search(array $searchCriteria = array(), SearchAdminPagerService $p) { $builder = $this->factory->getBuilderByCategory($searchCriteria); $result = $builder->search($searchCriteria, $p); return $result; }
/** * @var Symfony\Bundle\FrameworkBundle\Routing\Router */ private $router; public function __construct(Registry $doctrine) { $this->doctrine = $doctrine; } public function setRouter(Router $router) { $this->router = $router; } /** * * @param unknown_type $category * @return SearchResultBuilder */ public function getBuilderByCategory($category) { $cls = static::$builderMapping[$category['category']]; $builder = new $cls($this->doctrine); $builder->setRouter($this->router); return $builder; } public static function _initMapping() { static::$builderMapping = array(Constants::SEARCH_CATEGORY_INSTITUTION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\InstitutionSearchResultBuilder', Constants::SEARCH_CATEGORY_CENTER => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\MedicalCenterSearchResultBuilder', Constants::SEARCH_CATEGORY_PROCEDURE_TYPE => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\TreatmentsSearchResultBuilder', Constants::SEARCH_CATEGORY_DOCTOR => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\DoctorSearchResultBuilder', Constants::SEARCH_CATEGORY_SPECIALIZATION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\SpecializationSearchResultBuilder', Constants::SEARCH_CATEGORY_SUB_SPECIALIZATION => 'HealthCareAbroad\\SearchBundle\\Services\\Admin\\SubSpecializationSearchResultBuilder'); } } SearchResultBuilderFactory::_initMapping();