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;
|
||||
|
||||
const ValidGroups = [IGroup::SummitAdministrators, IGroup::TrackChairsAdmins];
|
||||
const ValidGroups = [
|
||||
IGroup::SummitAdministrators,
|
||||
IGroup::TrackChairsAdmins,
|
||||
IGroup::TrackChairs,
|
||||
IGroup::BadgePrinters,
|
||||
];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -79,11 +84,10 @@ class SummitAdministratorPermissionGroup extends SilverstripeBaseModel
|
|||
}
|
||||
|
||||
public function canAddMember(Member $member):bool{
|
||||
return
|
||||
$member->isOnGroup(IGroup::SummitAdministrators, true) ||
|
||||
$member->isOnGroup(IGroup::TrackChairs, true) ||
|
||||
$member->isOnGroup(IGroup::TrackChairsAdmins, true) ||
|
||||
$member->isOnGroup(IGroup::BadgePrinters, true);
|
||||
foreach (self::ValidGroups as $slug){
|
||||
if($member->isOnGroup($slug, true)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -446,8 +446,9 @@ class SummitTicketType extends SilverstripeBaseModel
|
|||
* @return int
|
||||
*/
|
||||
public function getBadgeTypeId(){
|
||||
$res = $this->getBadgeType();
|
||||
try {
|
||||
return is_null($this->badge_type) ? 0: $this->badge_type->getId();
|
||||
return is_null($res) ? 0: $res->getId();
|
||||
}
|
||||
catch(\Exception $ex){
|
||||
return 0;
|
||||
|
@ -459,20 +460,19 @@ class SummitTicketType extends SilverstripeBaseModel
|
|||
*/
|
||||
public function getBadgeType(): ?SummitBadgeType
|
||||
{
|
||||
return $this->badge_type;
|
||||
$res = $this->badge_type;
|
||||
if(is_null($res)){
|
||||
$res = $this->summit->getDefaultBadgeType();
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBadgeType(){
|
||||
public function hasBadgeType():bool{
|
||||
return $this->getBadgeTypeId() > 0;
|
||||
}
|
||||
|
||||
public function clearBadgeType(){
|
||||
$this->badge_type = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SummitBadgeType $badge_type
|
||||
*/
|
||||
|
|
|
@ -19,7 +19,6 @@ use Illuminate\Support\Facades\Event;
|
|||
use libs\utils\ITransactionService;
|
||||
use models\exceptions\EntityNotFoundException;
|
||||
use models\exceptions\ValidationException;
|
||||
use models\summit\ISummitTicketTypeRepository;
|
||||
use models\summit\Summit;
|
||||
use models\summit\SummitTicketType;
|
||||
use services\apis\IEventbriteAPI;
|
||||
|
@ -32,11 +31,6 @@ final class SummitTicketTypeService
|
|||
implements ISummitTicketTypeService
|
||||
{
|
||||
|
||||
/**
|
||||
* @var ISummitTicketTypeRepository
|
||||
*/
|
||||
private $repository;
|
||||
|
||||
/**
|
||||
* @var IEventbriteAPI
|
||||
*/
|
||||
|
@ -44,30 +38,26 @@ final class SummitTicketTypeService
|
|||
|
||||
/**
|
||||
* SummitTicketTypeService constructor.
|
||||
* @param ISummitTicketTypeRepository $repository
|
||||
* @param IEventbriteAPI $eventbrite_api
|
||||
* @param ITransactionService $tx_service
|
||||
*/
|
||||
public function __construct
|
||||
(
|
||||
ISummitTicketTypeRepository $repository,
|
||||
IEventbriteAPI $eventbrite_api,
|
||||
ITransactionService $tx_service
|
||||
)
|
||||
{
|
||||
parent::__construct($tx_service);
|
||||
$this->repository = $repository;
|
||||
$this->eventbrite_api = $eventbrite_api;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Summit $summit
|
||||
* @param array $data
|
||||
* @return array
|
||||
* @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'])){
|
||||
$badge_type = $summit->getBadgeTypeById(intval($data['badge_type_id']));
|
||||
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()){
|
||||
// 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)
|
||||
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
|
||||
(
|
||||
|
|
Loading…
Reference in New Issue