diff --git a/app/Models/Foundation/Summit/Summit.php b/app/Models/Foundation/Summit/Summit.php index b3813cc5..5fe92a8f 100644 --- a/app/Models/Foundation/Summit/Summit.php +++ b/app/Models/Foundation/Summit/Summit.php @@ -3403,6 +3403,14 @@ SQL; return $attr === false ? null : $attr; } + + + public function getDefaultBadgeAccessLevelTypes(){ + $criteria = Criteria::create(); + $criteria->where(Criteria::expr()->eq('is_default', true)); + return $this->badge_access_level_types->matching($criteria); + } + /** * @param string $level_name * @return SummitAccessLevelType|null @@ -4636,6 +4644,36 @@ SQL; return $list; } + /** + * this define the default access level types + * that need to be seeded when a new show is created + */ + public function seedDefaultAccessLevelTypes():void{ + + $defaults = [ + [ + 'name' => 'CHAT', + 'description'=> 'Enables Chat Feature.' + ], + [ + 'name' => 'IN_PERSON', + 'description'=> 'Allows in person show access.' + ], + [ + 'name' => 'VIRTUAL', + 'description'=> 'Allows virtual show access.' + ] + ]; + + foreach($defaults as $default) { + $a = new SummitAccessLevelType(); + $a->setName($default['name']); + $a->setDescription($default['description']); + $a->setIsDefault(true); + $this->addBadgeAccessLevelType($a); + } + } + /** * @return string */ diff --git a/app/Services/Model/Imp/SummitAccessLevelTypeService.php b/app/Services/Model/Imp/SummitAccessLevelTypeService.php index 70be32b2..9fa9d106 100644 --- a/app/Services/Model/Imp/SummitAccessLevelTypeService.php +++ b/app/Services/Model/Imp/SummitAccessLevelTypeService.php @@ -67,6 +67,12 @@ implements ISummitAccessLevelTypeService $summit->addBadgeAccessLevelType($access_level); + if($access_level->isDefault()){ + // add to all existent badge types + foreach($summit->getBadgeTypes() as $badgeType){ + $badgeType->addAccessLevel($access_level); + } + } return $access_level; }); @@ -96,9 +102,7 @@ implements ISummitAccessLevelTypeService throw new ValidationException(sprintf("access level with name %s already exists!", $name)); } } - return SummitAccessLevelTypeFactory::populate($access_level, $data); - }); } diff --git a/app/Services/Model/Imp/SummitBadgeTypeService.php b/app/Services/Model/Imp/SummitBadgeTypeService.php index 2a839354..c454286b 100644 --- a/app/Services/Model/Imp/SummitBadgeTypeService.php +++ b/app/Services/Model/Imp/SummitBadgeTypeService.php @@ -50,6 +50,11 @@ final class SummitBadgeTypeService extends AbstractService throw new ValidationException("there is already a default badge type"); } $badge_type = SummitBadgeTypeFactory::build($data); + // add default access levels + foreach($summit->getDefaultBadgeAccessLevelTypes() as $default_access_level){ + $badge_type->addAccessLevel($default_access_level); + } + $summit->addBadgeType($badge_type); return $badge_type; }); @@ -77,6 +82,7 @@ final class SummitBadgeTypeService extends AbstractService throw new ValidationException("badge type name already exists"); } } + if(isset($data['is_default'])) { $is_default = boolval($data['is_default']); if ($is_default && $summit->hasDefaultBadgeType() && !$badge_type->isDefault()) { diff --git a/app/Services/Model/Imp/SummitService.php b/app/Services/Model/Imp/SummitService.php index f1894dde..126737a5 100644 --- a/app/Services/Model/Imp/SummitService.php +++ b/app/Services/Model/Imp/SummitService.php @@ -1597,7 +1597,11 @@ final class SummitService extends AbstractService implements ISummitService foreach ($this->default_event_types_repository->getAll() as $default_event_type) { $summit->addEventType($default_event_type->buildType($summit)); } + $summit->seedDefaultEmailFlowEvents(); + + $summit->seedDefaultAccessLevelTypes(); + $this->summit_repository->add($summit); return $summit;