public function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query = new QueryObject(new Consultant()); $query->addAlias(QueryAlias::create('Company')); $query->addAndCondition(QueryCriteria::equal("Active", true)); $location = @explode(',', @$search_params['location_term']); $name = @$search_params['name_term']; $service = @$search_params['service_term']; $region = @$search_params['region_term']; if (!empty($name)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service) || !empty($region)) { $query->addAlias(QueryAlias::create('ServicesOffered')); if (!empty($service)) { $query->addAndCondition(QueryCriteria::like("ConsultantServiceOfferedType.Type", $service)); } if (!empty($region)) { $region_id = Region::get()->filter('Name', $region)->first()->ID; $query->addAndCondition(QueryCriteria::id("Consultant_ServicesOffered.RegionID", $region_id)); } } if (is_array($location) && !empty($location[0])) { $query->addAlias(QueryAlias::create('Offices')); $query->addAndCondition(QueryCriteria::like("Office.City", $location[0])); } $countries = array_flip(Geoip::getCountryDropDown()); if (is_array($location) && count($location) == 2) { $country = trim($location[1]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country])); } } else { if (is_array($location) && count($location) == 3) { $state = trim($location[1]); $country = trim($location[2]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("Office.Country", $countries[$country])); } if (!empty($state)) { $query->addAndCondition(QueryCriteria::like("Office.State", $state)); } } } list($list, $size) = $this->consultants_repository->getAll($query, 0, 1000); foreach ($list as $public_cloud) { $output .= $public_cloud->renderWith('ConsultantsDirectoryPage_CloudBox', array('ConsultantLink' => $this->Link())); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }
public function getJobsByKeywordTypeAndSortedBy($keywords, $type_id, $sort_by) { $query = new QueryObject(new Job()); $now = new DateTime(); $six_months_ago = new DateTime(); $post_date = $six_months_ago->sub(new DateInterval('P6M')); $query->addAndCondition(QueryCriteria::equal('IsActive', 1)); $query->addAndCondition(QueryCriteria::greaterOrEqual('PostedDate', $post_date->format('Y-m-d H:i:s'))); $query->addAndCondition(QueryCriteria::greaterOrEqual('ExpirationDate', $now->format('Y-m-d H:i:s'))); if (!empty($keywords)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr([QueryCriteria::like('Title', trim($keywords)), QueryCriteria::like('Description', trim($keywords))])); } if (intval($type_id) > 0) { $query->addAndCondition(QueryCriteria::equal('TypeID', $type_id)); } if (!empty($sort_by)) { switch (strtolower($sort_by)) { case 'coa': $query = $query->addOrder(QueryOrder::desc('IsCOANeeded')); break; case 'foundation': $query = $query->addOrder(QueryOrder::desc('IsFoundationJob')); break; case 'company': $query = $query->addOrder(QueryOrder::asc('CompanyName')); break; case 'posted': $query = $query->addOrder(QueryOrder::desc('PostedDate')); $query = $query->addOrder(QueryOrder::desc('ID')); break; case 'location': $query = $query->addOrder(QueryOrder::asc('LocationType')); break; } } list($jobs, $size) = $this->getAll($query, 0, PHP_INT_MAX); return new ArrayList($jobs); }
function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query1 = new QueryObject(new Distribution()); $query2 = new QueryObject(new Appliance()); $query1->addAlias(QueryAlias::create('Company')); $query2->addAlias(QueryAlias::create('Company')); $name = @$search_params['name_term']; $service = @$search_params['service_term']; if (!empty($name)) { $query1->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); $query2->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service)) { $service = explode('-', $service); $query1->addAlias(QueryAlias::create('OpenStackImplementationApiCoverage')->addAlias(QueryAlias::create('OpenStackReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query1->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); $query2->addAlias(QueryAlias::create('OpenStackImplementationApiCoverage')->addAlias(QueryAlias::create('OpenStackReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query2->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); } $query1->addAndCondition(QueryCriteria::equal("Active", true)); $query2->addAndCondition(QueryCriteria::equal("Active", true)); list($list1, $size1) = $this->distribution_repository->getAll($query1, 0, 1000); list($list2, $size2) = $this->appliance_repository->getAll($query2, 0, 1000); $implementations = array_merge($list1, $list2); foreach ($implementations as $implementation) { $type = $implementation->getMarketPlace()->getName() == IDistribution::MarketPlaceType ? 'distribution' : 'appliance'; $output .= $implementation->renderWith('DistributionsDirectoryPage_ImplementationBox', array('DistroLink' => $this->Link("distribution"), 'ApplianceLink' => $this->Link("appliance"))); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }
public function search() { $output = ''; if (!$this->isJson()) { return $this->httpError(500, 'Content Type not allowed'); } try { $search_params = json_decode($this->request->getBody(), true); $query = new QueryObject($this->getCloudTypeClass()); $query->addAlias(QueryAlias::create('Company')); $query->addAndCondition(QueryCriteria::equal("Active", true)); $location = @explode(',', @$search_params['location_term']); $name = @$search_params['name_term']; $service = @$search_params['service_term']; if (!empty($name)) { $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('CompanyService.Name', $name), QueryCriteria::like('CompanyService.Overview', $name), QueryCriteria::like('Company.Name', $name)))); } if (!empty($service)) { $service = explode('-', $service); $query->addAlias(QueryAlias::create('Capabilities')->addAlias(QueryAlias::create('ReleaseSupportedApiVersion')->addAlias(QueryAlias::create('OpenStackComponent')))); $query->addAndCondition(QueryCompoundCriteria::compoundOr(array(QueryCriteria::like('OpenStackComponent.Name', trim($service[0])), QueryCriteria::like('OpenStackComponent.CodeName', trim($service[1]))))); } $query->addAlias(QueryAlias::create('DataCenters', QueryAlias::LEFT)); if (is_array($location) && !empty($location[0])) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.City", trim($location[0]))); } $countries = array_flip(Geoip::getCountryDropDown()); if (is_array($location) && count($location) == 2) { $country = trim($location[1]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.Country", $countries[$country])); } } else { if (is_array($location) && count($location) == 3) { $state = trim($location[1]); $country = trim($location[2]); if (!empty($country) && array_key_exists($country, $countries)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.Country", $countries[$country])); } if (!empty($state)) { $query->addAndCondition(QueryCriteria::like("DataCenterLocation.State", $state)); } } } list($list, $size) = $this->cloud_repository->getAll($query, 0, 1000); foreach ($list as $public_cloud) { $output .= $public_cloud->renderWith('CloudsDirectoryPage_CloudBox', array('CloudLink' => $this->Link())); } } catch (Exception $ex) { return $this->httpError(500, 'Server Error'); } return empty($output) ? $this->httpError(404, '') : $output; }