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'];
<?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; }