Fix on Summit Speaker Attendance Update

Was not updating/population boolean fields.

Change-Id: Ie61e06a940e0899e5c27aeed9522c3d83bdca596
This commit is contained in:
Sebastian Marcet 2018-01-31 10:23:29 -03:00
parent 7d72a3fff6
commit 75a20d202a
4 changed files with 97 additions and 31 deletions

View File

@ -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;
}
}

View File

@ -0,0 +1,62 @@
<?php namespace App\Models\Foundation\Summit\Factories;
/**
* Copyright 2018 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use models\summit\PresentationSpeaker;
use models\summit\PresentationSpeakerSummitAssistanceConfirmationRequest;
use models\summit\Summit;
/**
* Class PresentationSpeakerSummitAssistanceConfirmationRequestFactory
* @package App\Models\Foundation\Summit\Factories
*/
final class PresentationSpeakerSummitAssistanceConfirmationRequestFactory
{
/**
* @param Summit $summit
* @param PresentationSpeaker $speaker
* @param array $data
* @return PresentationSpeakerSummitAssistanceConfirmationRequest
*/
public static function build(Summit $summit, PresentationSpeaker $speaker, array $data){
$request = new PresentationSpeakerSummitAssistanceConfirmationRequest();
$request->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;
}
}

View File

@ -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;
});
}

View File

@ -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;
}