From 3f65bff6cdab9ce98e78032681349cb453779add Mon Sep 17 00:00:00 2001 From: smarcet Date: Thu, 1 Jul 2021 12:24:45 -0300 Subject: [PATCH] Added default access level * added summit seeds ( CHAT, IN_PERSON, VIRTUAL) * fixed is default functionallity Change-Id: Ic0a8b3fb7254a1b8c45dbdea402e2d09f0bedd32 Signed-off-by: smarcet --- app/Models/Foundation/Summit/Summit.php | 38 +++++++++++++++++++ .../Imp/SummitAccessLevelTypeService.php | 8 +++- .../Model/Imp/SummitBadgeTypeService.php | 6 +++ app/Services/Model/Imp/SummitService.php | 4 ++ 4 files changed, 54 insertions(+), 2 deletions(-) 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;