ParticipantService - getParticipant() & hasParticipantFilledSurvey() methods - returns participant of survey & information if participant has filled survey

This commit is contained in:
Meritoo
2017-09-29 13:35:26 +02:00
parent 6c44a62f36
commit dfa64fee43
4 changed files with 163 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
<?php
namespace Meritoo\LimeSurvey\ApiClient\Exception;
/**
* An exception used when participant of survey is missing
*
* @author Krzysztof Niziol <krzysztof.niziol@meritoo.pl>
* @copyright Meritoo.pl
*/
class MissingParticipantOfSurveyException extends \Exception
{
/**
* Class constructor
*
* @param int $surveyId ID of survey
* @param string $email E-mail address of the participant
*/
public function __construct($surveyId, $email)
{
$template = 'Participant with e-mail %s of survey with ID %s is missing. Maybe was not added to the survey?';
$message = sprintf($template, $surveyId, $email);
parent::__construct($message);
}
}

View File

@@ -10,6 +10,7 @@ namespace Meritoo\LimeSurvey\ApiClient\Service;
use Meritoo\Common\Collection\Collection;
use Meritoo\LimeSurvey\ApiClient\Client\Client;
use Meritoo\LimeSurvey\ApiClient\Exception\MissingParticipantOfSurveyException;
use Meritoo\LimeSurvey\ApiClient\Result\Collection\Participants;
use Meritoo\LimeSurvey\ApiClient\Result\Item\Participant;
use Meritoo\LimeSurvey\ApiClient\Type\MethodType;
@@ -149,4 +150,38 @@ class ParticipantService
return $participantCollection->getFirst();
}
/**
* Returns participant with given e-mail of given survey
*
* @param int $surveyId ID of survey
* @param string $email E-mail address of the participant
* @return Participant|null
*/
public function getParticipant($surveyId, $email)
{
return $this
->allParticipants
->getParticipantOfSurvey($surveyId, $email);
}
/**
* Returns information if participant with given e-mail has filled given survey
*
* @param int $surveyId ID of survey
* @param string $email E-mail address of the participant
* @return bool
*
* @throws MissingParticipantOfSurveyException
*/
public function hasParticipantFilledSurvey($surveyId, $email)
{
if ($this->hasParticipant($surveyId, $email)) {
return true === $this
->getParticipant($surveyId, $email)
->isCompleted();
}
throw new MissingParticipantOfSurveyException($surveyId, $email);
}
}