File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/ModuleController.php
<?php
namespace App\Http\Controllers;
use App\Module;
use App\ModuleRol;
class ModuleController extends Controller
{
public function cloneModule($moduleId, $path = null)
{
$module = Module::with('modules')->find($moduleId);
$newModule = $this->cloneModulesRecursively($module, $path);
$this->assignModuleToSuperAdmin($newModule);
return response()->json($newModule, 200);
}
private function cloneModulesRecursively($module, $path = null, $parentId = null)
{
$newModule = $module->replicate();
if ($path)
$newModule->route .= ('/' . $path);
if ($parentId)
$newModule->module_id = $parentId;
$newModule->save();
foreach ($module->modules as $childModule) {
$this->cloneModulesRecursively($childModule, $path, $newModule->id);
}
return $newModule;
}
private function assignModuleToSuperAdmin($module)
{
ModuleRol::updateOrCreate([
'module_id' => $module->id,
'rol_id' => $this->__SUPERADMIN_ROL,
'order' => $module->order,
]);
}
}