HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/comfama.sports-crowd.com/app/ModuleRol.php
<?php

namespace App;

use App\Module;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;

class ModuleRol extends Model
{
    protected $fillable = ['module_id', 'rol_id', 'order'];

    private $__SUPERADMIN_ROL = 1;

    public function getModule($id, $rol)
    {
        if (in_array(Auth::user()->rol->id, [$this->__SUPERADMIN_ROL]))
            return Module::select('id', 'name', 'icon', 'route', 'module_id')
                ->with('modules')
                ->where([['active', true], ['id', $id]])
                ->first();
        else {
            $module = Module::select('id', 'name', 'icon', 'route', 'module_id')
                ->with('modules')
                ->where([['active', true], ['id', $id]])
                ->first();
            $modules = [];
            if (count($module->modules)) {
                foreach ($module->modules as $modul) {
                    $item = ModuleRol::where([['module_id', $modul->id], ['rol_id', $rol]])->first();
                    if ($item) {
                        if (count($modul->modules)) {
                            $response = $this->getModule($modul->id, $rol);
                            $modul->roleModules = $response->modules;
                        }
                        $data = new \stdClass();
                        $data->id = $modul->id;
                        $data->name = $modul->name;
                        $data->icon = $modul->icon;
                        $data->route = $modul->route;
                        $data->modules = $modul->roleModules;
                        $modules[] = $data;
                    }
                }
            }
            $module->roleModules = $modules;

            $data = new \stdClass();
            $data->id = $module->id;
            $data->name = $module->name;
            $data->icon = $module->icon;
            $data->route = $module->route;
            $data->modules = $module->roleModules;

            return $data;
        }
    }

    public function getTreeViewMenu($modul, $forceTreeView = false)
    {
        $treeView = '';
        $icon = $modul->icon;
        $route = config('app.url') . '/' . $modul->route;
        $message = !str_contains(__('messages.' . $modul->name), 'messages.') ? __('messages.' . $modul->name) : $modul->name;

        if (($modul->modules && count($modul->modules)) || $forceTreeView) {
            $treeView .= '<li class="treeview menu-open">
                            <a href="#" style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden; font-size: min(3vw, 12px);" title="' . $message . '">
                                <i class="fa ' . $icon . ' colorIconAside"></i><span>' . $message . '</span>
                                <span class="pull-right-container">
                                    <i class="fa fa-angle-left pull-right"></i>';
            if ($modul->name == "Pedidos") {
                $treeView .= '<span>
                                <small id="cant-orders-notAccepted" class="label pull-right bg-red" style="display:none;" title="' . __("screen_header_tag2") . '"></small>
                            </span>';
            }
            if ($modul->name == "Servicio al cliente") {
                $treeView .= '<span>
                                <small id="cant-messages-notRead" class="label pull-right bg-red" style="display:none;" title="' . __("screen_header_tag3") . '"></small>
                            </span>';
            }
            $treeView .= '</span>
                        </a>
                        <ul class="treeview-menu">';

            foreach ($modul->modules as $item) {
                if ($item->modules && count($item->modules)) {
                    $treeView .= $this->getTreeViewMenu($item, true);
                } else {
                    $icon = $item->icon;
                    $route = config('app.url') . '/' . $item->route;
                    $message = !str_contains(__('messages.' . $item->name), 'messages.') ? __('messages.' . $item->name) : $item->name;
                    $treeView .= '<li>
                                <a href="' . $route . '" class="asyncLink" style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden; font-size: min(3vw, 12px);" title="' . $message . '">
                                    <i class="fa ' . $icon . '"></i>' . $message . '</a>
                            </li>';
                }
            }

            $treeView .= '</ul>
                        </li>';
        } else {
            if ($modul->name == "Pedidos") {
                $treeView .= '<li class="">
                                <a class="" href="' . $route . '" class="asyncLink" style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden; font-size: min(3vw, 12px);" title="' . $message . '">
                                    <i class="fa ' . $icon . ' colorIconAside"></i><span>' . $message . '</span>
                                    <span class="pull-right-container">
                                        <small id="cant-pedidos-sinAceptar" class="label pull-right bg-red" style="display:block;" title=" __("screen_header_tag2") "></small>
                                    </span>
                                </a>
                            </li>';
            } else {
                $treeView .= '<li class="">
                                <a class="" href="' . $route . '" class="asyncLink" style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden; font-size: min(3vw, 12px);" title="' . $message . '">
                                    <i class="fa ' . $icon . ' colorIconAside"></i><span>' . $message . '</span>
                                </a>
                            </li>';
            }
        }

        return $treeView;
    }

    public function module()
    {
        return $this->belongsTo(Module::class);
    }
}