
PUT /api/v1/summits/{id}/promo-codes/{promo_code_id} payload member promo code { code: "1234" class_name: "MEMBER_PROMO_CODE", first_name: "test", last_name: "test", email: "test@test.com", owner_id: 1123 type: "ATC" } speaker promo code { code: "1234" class_name: "SPEAKER_PROMO_CODE", speaker_id: 1123, type: 'ACCEPTED' } sponsor promo code { code: "1234" class_name: "SPONSOR_PROMO_CODE", sponsor_id: 1123 } Change-Id: I3961012d43706c46261f65d27817b1b01d577e20
90 lines
3.4 KiB
PHP
90 lines
3.4 KiB
PHP
<?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\MemberSummitRegistrationPromoCode;
|
|
use models\summit\SpeakerSummitRegistrationPromoCode;
|
|
use models\summit\SponsorSummitRegistrationPromoCode;
|
|
use models\summit\Summit;
|
|
use models\summit\SummitRegistrationPromoCode;
|
|
/**
|
|
* Class SummitPromoCodeFactory
|
|
* @package App\Models\Foundation\Summit\Factories
|
|
*/
|
|
final class SummitPromoCodeFactory
|
|
{
|
|
/**
|
|
* @param Summit $summit
|
|
* @param array $data
|
|
* @param array $params
|
|
* @return SummitRegistrationPromoCode|null
|
|
*/
|
|
public static function build(Summit $summit, array $data, array $params = []){
|
|
$promo_code = null;
|
|
switch ($data['class_name']){
|
|
case MemberSummitRegistrationPromoCode::ClassName:{
|
|
$promo_code = new MemberSummitRegistrationPromoCode();
|
|
}
|
|
break;
|
|
case SpeakerSummitRegistrationPromoCode::ClassName:{
|
|
$promo_code = new SpeakerSummitRegistrationPromoCode();
|
|
}
|
|
break;
|
|
case SponsorSummitRegistrationPromoCode::ClassName:{
|
|
$promo_code = new SponsorSummitRegistrationPromoCode();
|
|
}
|
|
break;
|
|
}
|
|
|
|
if(is_null($promo_code)) return null;
|
|
return self::populate($promo_code, $summit, $data, $params);
|
|
}
|
|
|
|
/**
|
|
* @param SummitRegistrationPromoCode $promo_code
|
|
* @param Summit $summit
|
|
* @param array $data
|
|
* @param array $params
|
|
* @return SummitRegistrationPromoCode
|
|
*/
|
|
public static function populate(SummitRegistrationPromoCode $promo_code, Summit $summit, array $data, array $params = []){
|
|
switch ($data['class_name']){
|
|
case MemberSummitRegistrationPromoCode::ClassName:{
|
|
if(isset($params['owner']))
|
|
$promo_code->setOwner($params['owner']);
|
|
if(isset($data['type']))
|
|
$promo_code->setType($data['type']);
|
|
if(isset($data['first_name']))
|
|
$promo_code->setFirstName(trim($data['first_name']));
|
|
if(isset($data['last_name']))
|
|
$promo_code->setLastName(trim($data['last_name']));
|
|
if(isset($data['email']))
|
|
$promo_code->setEmail(trim($data['email']));
|
|
}
|
|
break;
|
|
case SpeakerSummitRegistrationPromoCode::ClassName:{
|
|
if(isset($data['type']))
|
|
$promo_code->setType($data['type']);
|
|
$promo_code->setSpeaker($params['speaker']);
|
|
}
|
|
break;
|
|
case SponsorSummitRegistrationPromoCode::ClassName:{
|
|
$promo_code->setSponsor($params['sponsor']);
|
|
}
|
|
break;
|
|
}
|
|
|
|
$promo_code->setCode(trim($data['code']));
|
|
$summit->addPromoCode($promo_code);
|
|
return $promo_code;
|
|
}
|
|
} |