Enums
11 months ago
ApiConnection.php
11 months ago
MemberLevel.php
11 months ago
MemberSection.php
11 months ago
Membership.php
11 months ago
MembershipChange.php
11 months ago
Page.php
11 months ago
Settings.php
11 months ago
User.php
11 months ago
MemberSection.php
59 lines
| 1 | <?php declare(strict_types=1); |
| 2 | |
| 3 | namespace FapiMember\Model; |
| 4 | |
| 5 | use FapiMember\Library\SmartEmailing\Types\Arrays; |
| 6 | |
| 7 | final class MemberSection extends MemberLevel |
| 8 | { |
| 9 | /**@var array<MemberLevel>*/ |
| 10 | private array $levels; |
| 11 | |
| 12 | public function __construct($data) |
| 13 | { |
| 14 | parent::__construct($data); |
| 15 | |
| 16 | $this->setLevelsFromData(Arrays::extractOrNull($data, 'levels') ?? []); |
| 17 | } |
| 18 | |
| 19 | /**@return array<MemberLevel>*/ |
| 20 | public function getLevels(): array |
| 21 | { |
| 22 | return $this->levels; |
| 23 | } |
| 24 | |
| 25 | /**@param array<mixed>*/ |
| 26 | private function setLevelsFromData(array $levelsData): void |
| 27 | { |
| 28 | $levels = []; |
| 29 | |
| 30 | foreach ($levelsData as $levelData) { |
| 31 | $levels[] = new MemberLevel($levelData); |
| 32 | } |
| 33 | |
| 34 | $this->levels = $levels; |
| 35 | } |
| 36 | |
| 37 | /**@param array<MemberLevel> $levels*/ |
| 38 | public function setLevels(array $levels): void |
| 39 | { |
| 40 | $this->levels = $levels; |
| 41 | } |
| 42 | |
| 43 | public function toArray(): array |
| 44 | { |
| 45 | $levels = []; |
| 46 | |
| 47 | foreach ($this->levels as $level) { |
| 48 | $levels[] = $level->toArray(); |
| 49 | } |
| 50 | |
| 51 | return [ |
| 52 | 'id' => $this->id, |
| 53 | 'name' => $this->name, |
| 54 | 'levels' => $levels, |
| 55 | ]; |
| 56 | } |
| 57 | |
| 58 | } |
| 59 |