1
0
cms11/app/Services/BundleCreator/Creators/CollectibleBundleCreator.php

65 lines
1.5 KiB
PHP
Raw Normal View History

2024-04-17 11:41:10 +02:00
<?php
namespace App\Services\BundleCreator\Creators;
use App\Services\BundleCreator\Creators\CollectibleCreators\LegoBundleCreator;
use Illuminate\Filesystem\FilesystemAdapter;
use function Laravel\Prompts\select;
class CollectibleBundleCreator extends BaseBundleCreator
{
public static $bundleCreators = [
LegoBundleCreator::class,
];
public function __construct(protected ?array $data, protected FilesystemAdapter $disk)
{
}
/**
* Return a boolean value indicating if the creator can actually make the
* bundle using known data.
*/
public function canCreateBundle(): bool
{
return !empty($this->data['brand']);
}
/**
* Return an array describing what kind of data the creator needs in
* addition to the one it already has
*/
public function formSpecs(): ?array
{
$specs = [];
if (empty($this->data['brand'])) {
$specs['brand'] = fn () => select('Product brand', $this->listBrands());
}
return $specs;
}
private function listBrands()
{
$brands = [
'lego' => 'LEGO',
'matchbox' => 'matchbox',
'schleich' => 'Schleich',
];
return $brands;
}
/**
* Return a boolean value indicating if this creator in particular can
* create bundles for specified section
*/
public static function handles(string $section, ?array $data = []): bool
{
return $section === 'collections';
}
}