protected function execute(InputInterface $input, OutputInterface $output)
 {
     $isVerbose = $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE;
     $projectCode = $input->getOption('project-code');
     $memberResource = new MemberResource($this->sourceClient);
     $page = 0;
     $perPage = 10;
     $maxPages = 1;
     $criteria = [];
     $data = [];
     while ($page < $maxPages) {
         $members = $memberResource->getList(++$page, $perPage, $this->getMemberCriteria(), [], [], ['project_code' => $projectCode, 'PII' => 1]);
         $maxPages = $members['pages'];
         // if no items, return
         if (!count($members['items']) || !$members['total']) {
             break;
         }
         foreach ($members['items'] as $key => $member) {
             if ($isVerbose) {
                 $no = ($page - 1) * $perPage + $key + 1;
                 $output->writeln("{$no} - Reading member #{$member['id']}");
             }
             if ($this->checkAccept($member)) {
                 // activate member
                 $memberResource->setApplicantsStatus([$member['id']], 'accept', 'Accepted via API');
                 var_dump($member);
                 if ($isVerbose) {
                     $output->writeln("Accepting member #{$member['id']}");
                 }
             }
         }
     }
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $isVerbose = $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE;
     $projectCode = $input->getOption('project-code');
     $enrollmentStatusCode = $input->getOption('enrollment-status-code');
     $memberResource = new MemberResource($this->sourceClient);
     $page = 0;
     $perPage = 10;
     $maxPages = 1;
     $criteria = [];
     if ($enrollmentStatusCode) {
         $criteria['enrollment_status_code'] = $enrollmentStatusCode;
     }
     $data = [];
     while ($page < $maxPages) {
         $members = $memberResource->getList(++$page, $perPage, $criteria, [], [], ['project_code' => $projectCode]);
         $maxPages = $members['pages'];
         // if no items, return
         if (!count($members['items']) || !$members['total']) {
             break;
         }
         foreach ($members['items'] as $key => $member) {
             if ($isVerbose) {
                 $no = ($page - 1) * $perPage + $key + 1;
                 //                    $output->writeln("{$no} - Reading member #{$member['id']}");
             }
             $data[] = ['code' => isset($member['code']) ? $member['code'] : '#' . $member['id'], 'email' => isset($member['email_within_project']) ? $member['email_within_project'] : '-', 'phone' => isset($member['phone_within_project']) ? $member['phone_within_project'] : '-', 'enrollment_status_code' => isset($member['enrollment_status_code']) ? $member['enrollment_status_code'] : '-'];
         }
     }
     $table = new Table($output);
     $table->setHeaders(['code', 'email', 'phone', 'enrollment_status_code'])->setRows($data);
     $table->render();
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $projectResource = new ProjectResource($this->sourceClient);
     $memberResource = new MemberResource($this->sourceClient);
     $surveyResource = new SurveyResource($this->sourceClient);
     $result = $projectResource->getList();
     foreach ($result['items'] as $idx => $project) {
         $projectCode = $project['code'];
         $result = $memberResource->getList(1, 1000, ['project_id' => $project['id'], 'permission_type_code' => 'owner']);
         $owners = implode(', ', array_map(function ($member) {
             return isset($member['code']) ? $member['code'] : '#' . $member['id'];
         }, $result['items']));
         $result = $surveyResource->getList(1, 1000, ['project_id' => $project['id']]);
         $surveys = implode("\n", array_map(function ($survey) {
             return '"' . $survey['name'] . '"';
         }, $result['items']));
         $data[] = ['code' => $projectCode, 'owners' => $owners, 'surveys' => $surveys];
     }
     $table = new Table($output);
     $table->setHeaders(['code', 'owners', 'surveys'])->setRows($data);
     $table->render();
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $isVerbose = $output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE;
     $sourceProject = $input->getOption('source-project-code');
     $targetProject = $input->getOption('target-project-code');
     $fromMemberResource = new MemberResource($this->sourceClient);
     $toMemberResource = new MemberResource($this->client);
     $projectResource = new ProjectResource($this->client);
     $userResource = new UserResource($this->client);
     $project = $projectResource->getOneBy(['code' => $targetProject]);
     if (!$project) {
         $output->writeln("<error>Target project {$targetProject} not found</error>");
         die;
     }
     $page = 0;
     $perPage = 10;
     //        $members = $fromMemberResource->getList($page, $perPage, [], [], [], ['project_code' => $sourceProject]);
     $maxPages = 1;
     while ($page < $maxPages) {
         $members = $fromMemberResource->getList(++$page, $perPage, [], [], [], ['project_code' => $sourceProject]);
         $maxPages = $members['pages'];
         // if no items, return
         if (!count($members['items']) || !$members['total']) {
             break;
         }
         foreach ($members['items'] as $key => $member) {
             if ($isVerbose) {
                 $no = ($page - 1) * $perPage + $key + 1;
                 $output->writeln("{$no} - Reading member #{$member['id']}");
             }
             /*
              * try to find if member is already there
              * if yes - ignore. if not - import.
              * if current member doesn't have any of the $uniqueFields set
              * then ignore as we won't be able to find it later
              */
             $uniqueFields = ['code', 'email_within_project', 'phone_within_project'];
             $findByField = false;
             $findByValue = false;
             foreach ($uniqueFields as $field) {
                 if (isset($member[$field])) {
                     $findByField = $field;
                     $findByValue = $member[$field];
                     break;
                 }
             }
             if ($findByField && $findByValue) {
                 $findMember = $toMemberResource->getOneBy([$findByField => $findByValue, 'project_id' => $project['id']]);
                 if ($findMember) {
                     $output->writeln("<error>Member {$findByField}:{$findByValue} already exists for project {$project['code']}</error>");
                     continue;
                 }
             } else {
                 // ignore no-codes for now
                 $output->writeln("<error>Member #{$member['id']} doesn't have any of the required fields: " . implode(',', $uniqueFields) . "</error>");
                 continue;
             }
             if (array_search($member['permission_type_code'], ['owner']) !== false) {
                 // save admin only if user found
                 // @todo - create user first
                 $user = $userResource->getOneBy(['username' => $member['code']]);
                 if (!$user) {
                     $output->writeln("<error>Couldn't find user record for admin member {$member['code']} </error>");
                     continue;
                 }
                 $member['user_id'] = $user['id'];
             }
             $this->processMemberFields($member, $project);
             try {
                 $res = $toMemberResource->save($member);
                 if ($isVerbose) {
                     $output->writeln("New member  #{$res['id']} saved");
                 }
             } catch (\Exception $e) {
                 $output->writeln("<error>Problem saving {$findByField}:{$findByValue}:{$e->getMessage()} </error>");
                 var_dump($member);
             }
         }
     }
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use Survos\Client\SurvosClient;
use Survos\Client\Resource\MemberResource;
use Survos\Client\SurvosCriteria;
$config = json_decode(file_get_contents(__DIR__ . '/config.json'), true);
$client = new SurvosClient($config['endpoint']);
if (!$client->authorize($config['username'], $config['password'])) {
    throw new \Exception('Wrong credentials!');
}
$resource = new MemberResource($client);
$filter = ['created_at' => '2015-09-16 18:40:23'];
//OR 2015-09-16
$comparison = ['created_at' => SurvosCriteria::GREATER_THAN];
$data = $resource->getList(1, 100, $filter, $comparison);
$items = $data['items'];
예제 #6
0
<?php

require __DIR__ . '/../vendor/autoload.php';
use Survos\Client\SurvosClient;
use Survos\Client\Resource\MemberResource;
$config = json_decode(file_get_contents(__DIR__ . '/config.json'), true);
$client = new SurvosClient($config['endpoint']);
if (!$client->authorize($config['username'], $config['password'])) {
    throw new \Exception('Wrong credentials!');
}
$resource = new MemberResource($client);
$data = $resource->getList(1, 100, ['enrollment_status_code' => 'applicant']);
$applicants = $data['items'];
foreach ($applicants as $applicant) {
    $id = $applicant['id'];
    if (isEligible($applicant)) {
        $resource->setApplicantsStatus($id, 'accept', null, 'qualified by age');
    } else {
        $resource->setApplicantsStatus($id, 'reject', null, 'Sorry, you don\'t qualify');
    }
}
function isEligible($applicant)
{
    return isset($applicant['submitted']) && $applicant['submitted']['age'] < 21;
}