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);
}
}