TicketType Serializer update
Missing default badge type Change-Id: I1b8f965bbb4309421b0d311968618a5b1565d491 Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
parent
0409f6fd0f
commit
01054ca759
@ -33,7 +33,12 @@ class SummitAdministratorPermissionGroup extends SilverstripeBaseModel
|
|||||||
*/
|
*/
|
||||||
private $title;
|
private $title;
|
||||||
|
|
||||||
const ValidGroups = [IGroup::SummitAdministrators, IGroup::TrackChairsAdmins];
|
const ValidGroups = [
|
||||||
|
IGroup::SummitAdministrators,
|
||||||
|
IGroup::TrackChairsAdmins,
|
||||||
|
IGroup::TrackChairs,
|
||||||
|
IGroup::BadgePrinters,
|
||||||
|
];
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -79,11 +84,10 @@ class SummitAdministratorPermissionGroup extends SilverstripeBaseModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function canAddMember(Member $member):bool{
|
public function canAddMember(Member $member):bool{
|
||||||
return
|
foreach (self::ValidGroups as $slug){
|
||||||
$member->isOnGroup(IGroup::SummitAdministrators, true) ||
|
if($member->isOnGroup($slug, true)) return true;
|
||||||
$member->isOnGroup(IGroup::TrackChairs, true) ||
|
}
|
||||||
$member->isOnGroup(IGroup::TrackChairsAdmins, true) ||
|
return false;
|
||||||
$member->isOnGroup(IGroup::BadgePrinters, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -446,8 +446,9 @@ class SummitTicketType extends SilverstripeBaseModel
|
|||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getBadgeTypeId(){
|
public function getBadgeTypeId(){
|
||||||
|
$res = $this->getBadgeType();
|
||||||
try {
|
try {
|
||||||
return is_null($this->badge_type) ? 0: $this->badge_type->getId();
|
return is_null($res) ? 0: $res->getId();
|
||||||
}
|
}
|
||||||
catch(\Exception $ex){
|
catch(\Exception $ex){
|
||||||
return 0;
|
return 0;
|
||||||
@ -459,20 +460,19 @@ class SummitTicketType extends SilverstripeBaseModel
|
|||||||
*/
|
*/
|
||||||
public function getBadgeType(): ?SummitBadgeType
|
public function getBadgeType(): ?SummitBadgeType
|
||||||
{
|
{
|
||||||
return $this->badge_type;
|
$res = $this->badge_type;
|
||||||
|
if(is_null($res)){
|
||||||
|
$res = $this->summit->getDefaultBadgeType();
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function hasBadgeType(){
|
public function hasBadgeType():bool{
|
||||||
return $this->getBadgeTypeId() > 0;
|
return $this->getBadgeTypeId() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function clearBadgeType(){
|
|
||||||
$this->badge_type = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param SummitBadgeType $badge_type
|
* @param SummitBadgeType $badge_type
|
||||||
*/
|
*/
|
||||||
|
@ -19,7 +19,6 @@ use Illuminate\Support\Facades\Event;
|
|||||||
use libs\utils\ITransactionService;
|
use libs\utils\ITransactionService;
|
||||||
use models\exceptions\EntityNotFoundException;
|
use models\exceptions\EntityNotFoundException;
|
||||||
use models\exceptions\ValidationException;
|
use models\exceptions\ValidationException;
|
||||||
use models\summit\ISummitTicketTypeRepository;
|
|
||||||
use models\summit\Summit;
|
use models\summit\Summit;
|
||||||
use models\summit\SummitTicketType;
|
use models\summit\SummitTicketType;
|
||||||
use services\apis\IEventbriteAPI;
|
use services\apis\IEventbriteAPI;
|
||||||
@ -32,11 +31,6 @@ final class SummitTicketTypeService
|
|||||||
implements ISummitTicketTypeService
|
implements ISummitTicketTypeService
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* @var ISummitTicketTypeRepository
|
|
||||||
*/
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var IEventbriteAPI
|
* @var IEventbriteAPI
|
||||||
*/
|
*/
|
||||||
@ -44,30 +38,26 @@ final class SummitTicketTypeService
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SummitTicketTypeService constructor.
|
* SummitTicketTypeService constructor.
|
||||||
* @param ISummitTicketTypeRepository $repository
|
|
||||||
* @param IEventbriteAPI $eventbrite_api
|
* @param IEventbriteAPI $eventbrite_api
|
||||||
* @param ITransactionService $tx_service
|
* @param ITransactionService $tx_service
|
||||||
*/
|
*/
|
||||||
public function __construct
|
public function __construct
|
||||||
(
|
(
|
||||||
ISummitTicketTypeRepository $repository,
|
|
||||||
IEventbriteAPI $eventbrite_api,
|
IEventbriteAPI $eventbrite_api,
|
||||||
ITransactionService $tx_service
|
ITransactionService $tx_service
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
parent::__construct($tx_service);
|
parent::__construct($tx_service);
|
||||||
$this->repository = $repository;
|
|
||||||
$this->eventbrite_api = $eventbrite_api;
|
$this->eventbrite_api = $eventbrite_api;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Summit $summit
|
* @param Summit $summit
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return array
|
* @return array
|
||||||
* @throws EntityNotFoundException
|
* @throws EntityNotFoundException
|
||||||
*/
|
*/
|
||||||
static private function getPromoCodeParams(Summit $summit, array $data):array{
|
static private function getTicketTypeParams(Summit $summit, array $data):array{
|
||||||
if(isset($data['badge_type_id'])){
|
if(isset($data['badge_type_id'])){
|
||||||
$badge_type = $summit->getBadgeTypeById(intval($data['badge_type_id']));
|
$badge_type = $summit->getBadgeTypeById(intval($data['badge_type_id']));
|
||||||
if(is_null($badge_type))
|
if(is_null($badge_type))
|
||||||
@ -120,7 +110,7 @@ final class SummitTicketTypeService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$ticket_type = SummitTicketTypeFactory::build($summit, self::getPromoCodeParams($summit, $data));
|
$ticket_type = SummitTicketTypeFactory::build($summit, self::getTicketTypeParams($summit, $data));
|
||||||
|
|
||||||
if($summit->hasTicketTypes()){
|
if($summit->hasTicketTypes()){
|
||||||
// before add check if we have the same currency
|
// before add check if we have the same currency
|
||||||
@ -215,7 +205,7 @@ final class SummitTicketTypeService
|
|||||||
if(!empty($currency) && !empty($summit_currency) && $summit_currency != $currency)
|
if(!empty($currency) && !empty($summit_currency) && $summit_currency != $currency)
|
||||||
throw new ValidationException(sprintf("ticket type should have same currency as summit (%s)", $summit_currency));
|
throw new ValidationException(sprintf("ticket type should have same currency as summit (%s)", $summit_currency));
|
||||||
|
|
||||||
$ticket_type = SummitTicketTypeFactory::populate($ticket_type, self::getPromoCodeParams($summit, $data));
|
$ticket_type = SummitTicketTypeFactory::populate($ticket_type, self::getTicketTypeParams($summit, $data));
|
||||||
|
|
||||||
Event::fire
|
Event::fire
|
||||||
(
|
(
|
||||||
|
Loading…
Reference in New Issue
Block a user