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){ public static function HashConfirmationToken($token){
return md5($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 * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use App\Models\Foundation\Summit\Factories\PresentationSpeakerSummitAssistanceConfirmationRequestFactory;
use App\Models\Foundation\Summit\Repositories\IPresentationSpeakerSummitAssistanceConfirmationRequestRepository; use App\Models\Foundation\Summit\Repositories\IPresentationSpeakerSummitAssistanceConfirmationRequestRepository;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use libs\utils\ITransactionService; use libs\utils\ITransactionService;
@ -177,7 +178,7 @@ final class SpeakerService implements ISpeakerService
} }
$speaker->addSummitAssistance( $speaker->addSummitAssistance(
$this->updateSummitAssistance($speaker->buildAssistanceFor($summit), $data) PresentationSpeakerSummitAssistanceConfirmationRequestFactory::build($summit, $speaker, $data)
); );
$reg_code = isset($data['registration_code']) ? trim($data['registration_code']) : null; $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 PresentationSpeaker $speaker
* @param string $email * @param string $email
@ -373,7 +355,7 @@ final class SpeakerService implements ISpeakerService
$speaker->addSummitAssistance($summit_assistance); $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; $reg_code = isset($data['registration_code']) ? trim($data['registration_code']) : null;
if(!empty($reg_code)){ if(!empty($reg_code)){
@ -717,11 +699,15 @@ final class SpeakerService implements ISpeakerService
] ]
)); ));
$assistance = $speaker->buildAssistanceFor($summit); $assistance = PresentationSpeakerSummitAssistanceConfirmationRequestFactory::build
$speaker->addSummitAssistance( (
$this->updateSummitAssistance($assistance, $data) $summit,
$speaker,
$data
); );
$speaker->addSummitAssistance($assistance);
return $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
*/ */
class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest final class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest
{ {
public function testGetAllBySummit($summit_id = 23){ public function testGetAllBySummit($summit_id = 23){
@ -146,12 +146,16 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest
return $assistances; 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 = [ $params = [
'id' => $summit_id, 'id' => $summit_id,
'assistance_id' => $assistances->data[0]->id 'assistance_id' => $assistance_id
]; ];
$headers = [ $headers = [
@ -180,7 +184,10 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest
]; ];
$data = [ $data = [
'speaker_id' => 1 'speaker_id' => 15,
'checked_in' => false,
'registered' => true,
'is_confirmed' => false,
]; ];
$headers = [ $headers = [
@ -203,6 +210,7 @@ class OAuth2SpeakersAssistancesApiTest extends ProtectedApiTest
$this->assertResponseStatus(201); $this->assertResponseStatus(201);
$assistance = json_decode($content); $assistance = json_decode($content);
$this->assertTrue(!is_null($assistance)); $this->assertTrue(!is_null($assistance));
return $assistance; return $assistance;
} }