diff --git a/app/Models/Foundation/Summit/Events/Presentations/PresentationSpeakerSummitAssistanceConfirmationRequest.php b/app/Models/Foundation/Summit/Events/Presentations/PresentationSpeakerSummitAssistanceConfirmationRequest.php index da40b436..15194052 100644 --- a/app/Models/Foundation/Summit/Events/Presentations/PresentationSpeakerSummitAssistanceConfirmationRequest.php +++ b/app/Models/Foundation/Summit/Events/Presentations/PresentationSpeakerSummitAssistanceConfirmationRequest.php @@ -199,4 +199,11 @@ class PresentationSpeakerSummitAssistanceConfirmationRequest extends Silverstrip public static function HashConfirmationToken($token){ return md5($token); } + + public function __construct() + { + $this->registered = false; + $this->is_confirmed = false; + $this->checked_in = false; + } } \ No newline at end of file diff --git a/app/Models/Foundation/Summit/Factories/PresentationSpeakerSummitAssistanceConfirmationRequestFactory.php b/app/Models/Foundation/Summit/Factories/PresentationSpeakerSummitAssistanceConfirmationRequestFactory.php new file mode 100644 index 00000000..5228f377 --- /dev/null +++ b/app/Models/Foundation/Summit/Factories/PresentationSpeakerSummitAssistanceConfirmationRequestFactory.php @@ -0,0 +1,62 @@ +setSummit($summit); + $request->setSpeaker($speaker); + $request = self::populate($request, $data); + return $request; + } + + /** + * @param PresentationSpeakerSummitAssistanceConfirmationRequest $summit_assistance + * @param array $data + * @return PresentationSpeakerSummitAssistanceConfirmationRequest + */ + public static function populate + ( + PresentationSpeakerSummitAssistanceConfirmationRequest $summit_assistance, + array $data + ) + { + $on_site_phone = isset($data['on_site_phone']) ? trim($data['on_site_phone']) : null; + $registered = isset($data['registered']) ? boolval($data['registered']) : 0; + $checked_in = isset($data['checked_in']) ? boolval($data['checked_in']) : 0; + $confirmed = isset($data['is_confirmed']) ? boolval($data['is_confirmed']) : 0; + + $summit_assistance->setOnSitePhone($on_site_phone); + $summit_assistance->setRegistered($registered); + $summit_assistance->setIsConfirmed($confirmed); + $summit_assistance->setCheckedIn($checked_in); + + return $summit_assistance; + } +} \ No newline at end of file diff --git a/app/Services/Model/SpeakerService.php b/app/Services/Model/SpeakerService.php index 713a96a7..af9527bd 100644 --- a/app/Services/Model/SpeakerService.php +++ b/app/Services/Model/SpeakerService.php @@ -11,6 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ +use App\Models\Foundation\Summit\Factories\PresentationSpeakerSummitAssistanceConfirmationRequestFactory; use App\Models\Foundation\Summit\Repositories\IPresentationSpeakerSummitAssistanceConfirmationRequestRepository; use Illuminate\Http\UploadedFile; use libs\utils\ITransactionService; @@ -177,7 +178,7 @@ final class SpeakerService implements ISpeakerService } $speaker->addSummitAssistance( - $this->updateSummitAssistance($speaker->buildAssistanceFor($summit), $data) + PresentationSpeakerSummitAssistanceConfirmationRequestFactory::build($summit, $speaker, $data) ); $reg_code = isset($data['registration_code']) ? trim($data['registration_code']) : null; @@ -194,25 +195,6 @@ final class SpeakerService implements ISpeakerService }); } - /** - * @param PresentationSpeakerSummitAssistanceConfirmationRequest $summit_assistance - * @param array $data - * @return PresentationSpeakerSummitAssistanceConfirmationRequest - */ - private function updateSummitAssistance(PresentationSpeakerSummitAssistanceConfirmationRequest $summit_assistance, array $data){ - $on_site_phone = isset($data['on_site_phone']) ? trim($data['on_site_phone']) : null; - $registered = isset($data['registered']) ? 1 : 0; - $checked_in = isset($data['checked_in']) ? 1 : 0; - $confirmed = isset($data['is_confirmed']) ? 1 : 0; - - $summit_assistance->setOnSitePhone($on_site_phone); - $summit_assistance->setRegistered($registered); - $summit_assistance->setIsConfirmed($confirmed); - $summit_assistance->setCheckedIn($checked_in); - - return $summit_assistance; - } - /** * @param PresentationSpeaker $speaker * @param string $email @@ -373,7 +355,7 @@ final class SpeakerService implements ISpeakerService $speaker->addSummitAssistance($summit_assistance); } - $this->updateSummitAssistance($summit_assistance, $data); + PresentationSpeakerSummitAssistanceConfirmationRequestFactory::populate($summit_assistance, $data); $reg_code = isset($data['registration_code']) ? trim($data['registration_code']) : null; if(!empty($reg_code)){ @@ -717,11 +699,15 @@ final class SpeakerService implements ISpeakerService ] )); - $assistance = $speaker->buildAssistanceFor($summit); - $speaker->addSummitAssistance( - $this->updateSummitAssistance($assistance, $data) + $assistance = PresentationSpeakerSummitAssistanceConfirmationRequestFactory::build + ( + $summit, + $speaker, + $data ); + $speaker->addSummitAssistance($assistance); + return $assistance; }); } @@ -755,9 +741,12 @@ final class SpeakerService implements ISpeakerService ); } - $this->updateSummitAssistance($assistance, $data); + return PresentationSpeakerSummitAssistanceConfirmationRequestFactory::populate + ( + $assistance, + $data + ); - return $assistance; }); } diff --git a/tests/OAuth2SpeakersAssistancesApiTest.php b/tests/OAuth2SpeakersAssistancesApiTest.php index 295176c4..9e80af13 100644 --- a/tests/OAuth2SpeakersAssistancesApiTest.php +++ b/tests/OAuth2SpeakersAssistancesApiTest.php @@ -15,7 +15,7 @@ /** * Class OAuth2SpeakersAssistancesApiTest */ -class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest +final class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest { public function testGetAllBySummit($summit_id = 23){ @@ -146,12 +146,16 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest return $assistances; } - public function testDeleteSummitAssistance($summit_id = 23){ + public function testDeleteSummitAssistance($summit_id = 23, $assistance_id = 3561){ + + if($assistance_id <= 0) { + $assistances = $this->testGetAllBySummitAndNonConfirmed($summit_id); + $assistance_id = $assistances->data[0]->id; + } - $assistances = $this->testGetAllBySummitAndNonConfirmed($summit_id); $params = [ 'id' => $summit_id, - 'assistance_id' => $assistances->data[0]->id + 'assistance_id' => $assistance_id ]; $headers = [ @@ -180,7 +184,10 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest ]; $data = [ - 'speaker_id' => 1 + 'speaker_id' => 15, + 'checked_in' => false, + 'registered' => true, + 'is_confirmed' => false, ]; $headers = [ @@ -203,6 +210,7 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest $this->assertResponseStatus(201); $assistance = json_decode($content); $this->assertTrue(!is_null($assistance)); + return $assistance; }