/**
  * @param string $last_name
  * @param int $offset
  * @param int $limit
  * @return array
  */
 function getAllIClaMembersByLastName($last_name, $offset, $limit)
 {
     $query = new QueryObject();
     $query->addAndCondition(QueryCriteria::equal('CLASigned', true));
     $query->addAndCondition(QueryCriteria::like('Surname', $last_name));
     return $this->getAll($query, $offset, $limit);
 }
 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);
 }
 public function getLanguages()
 {
     $term = Convert::raw2sql($this->request->getVar('term'));
     $query = new QueryObject();
     $query->addAndCondition(QueryCriteria::like('Name', $term));
     list($list, $size) = $this->languages_repository->getAll($query, 0, 20);
     $res = array();
     foreach ($list as $lang) {
         array_push($res, array('label' => $lang->getName(), 'value' => $lang->getName()));
     }
     return $this->ok($res);
 }
 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'];
         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)) {
             $query->addAlias(QueryAlias::create('ConsultantServiceOfferedType'));
             $query->addAndCondition(QueryCriteria::like("ConsultantServiceOfferedType.Type", $service));
         }
         if (is_array($location) && !empty($location[0])) {
             $query->addAlias(QueryAlias::create('Office'));
             $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;
 }
 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;
 }
 /**
  * @return ArrayList
  */
 public function getPrivateClouds()
 {
     $product_name = trim(Convert::raw2sql($this->request->getVar('name')));
     $company_id = intval($this->request->getVar('company_id'));
     $sort = $this->request->getVar('sort');
     $query = new QueryObject(new CompanyService());
     $query_draft = new QueryObject(new CompanyServiceDraft());
     $query_draft->addAndCondition(QueryCriteria::equal('LiveServiceID', 0));
     if (!empty($product_name)) {
         $query->addAndCondition(QueryCriteria::like('Name', $product_name));
         $query_draft->addAndCondition(QueryCriteria::like('Name', $product_name));
     }
     if ($company_id > 0) {
         $query->addAndCondition(QueryCriteria::equal('Company.ID', $company_id));
         $query_draft->addAndCondition(QueryCriteria::equal('Company.ID', $company_id));
     }
     //set sorting
     if (!empty($sort)) {
         $dir = $this->getSortDir('private.clouds');
         $this->sortCompanyService($query, $sort, $dir);
         $this->sortCompanyService($query_draft, $sort, $dir);
     }
     //get public clouds
     list($list1, $size1) = $this->private_clouds_repository->getAll($query, 0, 1000);
     list($list2, $size2) = $this->private_clouds_draft_repository->getAll($query_draft, 0, 1000);
     //return on view model
     return new ArrayList(array_merge($list1, $list2));
 }
    /**
     * @param SS_HTTPRequest $request
     * @param string $template_class
     * @param string $ss_tpl_name
     * @return array
     */
    private function buildList(SS_HTTPRequest $request, $template_class = 'SurveyTemplate', $ss_tpl_name = 'SurveyBuilderListSurveys')
    {
        Requirements::javascript('themes/openstack/javascript/querystring.jquery.js');
        Requirements::javascript('survey_builder/js/survey.sangria.surveys.list.filter.js');
        $query_templates = new QueryObject(new SurveyTemplate());
        $query_templates->addAndCondition(QueryCriteria::equal('ClassName', $template_class));
        list($templates, $count) = $this->survey_template_repository->getAll($query_templates, 0, PHP_INT_MAX);
        $page = intval($request->getVar('page'));
        $survey_template_id = intval($request->getVar('survey_template_id'));
        $question_id = intval($request->getVar('question_id'));
        $question_value = Convert::raw2sql($request->getVar('question_value'));
        $question_value2 = Convert::raw2sql($request->getVar('question_value2'));
        $question_value = !empty($question_value) ? $question_value : $question_value2;
        $order = Convert::raw2sql($request->getVar('order'));
        $order_dir = Convert::raw2sql($request->getVar('dir'));
        if ($page === 0) {
            $page = 1;
        }
        $offset = ($page - 1) * self::SurveysPageSize;
        $sort_fields = ['id' => 'ID', 'created' => 'Created', 'updated' => 'LastEdited'];
        $query_surveys = new QueryObject(new Survey());
        $selected_template = $survey_template_id > 0 ? $this->survey_template_repository->getById($survey_template_id) : $templates[0];
        if ($survey_template_id === 0) {
            Controller::curr()->redirect($request->getURL(true) . '?survey_template_id=' . $selected_template->ID);
        }
        $query_surveys->addAndCondition(QueryCriteria::id('Survey.TemplateID', $selected_template->getIdentifier()))->addAndCondition(QueryCriteria::id('Survey.IsTest', 0));
        if ($question_id > 0 && !empty($question_value)) {
            // filter by question ...
            $query_surveys->addAlias(QueryAlias::create('Steps')->addAlias(QueryAlias::create('Answers')->addAlias(QueryAlias::create('Question'))));
            $query_surveys->addAndCondition(QueryCompoundCriteria::compoundAnd([QueryCriteria::id('SurveyQuestionTemplate.ID', $question_id), QueryCriteria::like('SurveyAnswer.Value', $question_value)]));
        }
        if (empty($order)) {
            $query_surveys->addOrder(QueryOrder::asc('ID'));
        } else {
            if ($order_dir === 'ASC') {
                $query_surveys->addOrder(QueryOrder::asc($sort_fields[$order]));
            } else {
                $query_surveys->addOrder(QueryOrder::desc($sort_fields[$order]));
            }
        }
        list($surveys, $count_surveys) = $this->survey_repository->getAll($query_surveys, $offset, self::SurveysPageSize);
        // build pager
        $pages = '';
        $max_page = intval(ceil($count_surveys / self::SurveysPageSize));
        for ($i = 1; $i < $max_page; $i++) {
            $pages .= sprintf("<li %s ><a href=\"%s?%s\">%s</a></li>", $page === $i ? "class=\"active\"" : "", $this->owner->Link($ss_tpl_name), $this->getPagerLink($i), $i);
        }
        $pager = <<<HTML
<nav>
    <ul class="pagination pagination-sm">
        {$pages}
    </ul>
</nav>
HTML;
        $result = ['Templates' => new ArrayList($templates), 'Surveys' => new ArrayList($surveys), 'Questions' => new ArrayList($selected_template->getAllFilterableQuestions()), 'Pager' => $pager];
        return $result;
    }