packClass = $className; } /** * Service pack key generator * @return string */ public function generateServicePackKey(): string { // Unique service key in group return func::generatorLetters(10, 'abcdefghijklmnopqrstuvwxyz', function ($key) { return $this->getServiceModel() ->where('group_key', '=', $this->getGroupKey()) ->where('service_key', '=', $key) ->exists(); }); } /** * Get packable services list * @return Service[] */ public function getPackableServices() { $list = []; foreach ($this->services as $serviceKey => $serviceData) { $service = $this->getService($serviceKey); if ($service && $service->isPackable()) { $service->setSettings($serviceData); $list[$serviceKey] = $service; } } return $list; } }