Sebastian Marcet 86c15507f3 added new endpoint update promo code
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
2018-01-23 10:02:33 -03:00

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