<?php
namespace App\Controller\Render;
use App\Entity\Generic\User;
use App\Entity\Server\Hetzner\DataCenter;
use App\Entity\Server\Hetzner\Image;
use App\Entity\Server\Hetzner\Server;
use App\Entity\Server\Hetzner\ServerType;
use App\Entity\Telegram\AgentPublicBot\Bot;
use App\Repository\Generic\UserRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Security;
class PanelNavbarController extends AbstractController
{
public Security $security;
public User $user;
public array $userNavs;
public array $adminMegaNavs;
public EntityManagerInterface $entityManager;
public $currentRoute;
public function __construct(Security $security, UserRepository $userRepository , EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
/**
* @var User $user
*/
$user = $security->getUser();
$this->user = $user;
$this->userNavs = [
[
'isMega' => false,
'path' => 'app_user_dashboard',
'label' => 'داشبورد کاربری',
'icon' => 'custom-status-up',
'subRoutes' => [
]
],
[
'isMega' => true,
'path' => 'app_panel_user_vpn_service_index',
'label' => 'سرویس VPN',
'icon' => 'custom-lock-outline',
'megaRoutes' => [
[
'label' => 'خرید سرویس',
'path' => 'app_panel_user_vpn_service_new',
'icon' => '',
],
[
'label' => 'لیست سرویس ها',
'path' => 'app_panel_user_vpn_service_index',
'icon' => '',
],
[
'label' => 'ربات تلگرام فروش',
'path' => 'app_user_agent_bot_index',
'icon' => '',
],
[
'label' => 'وبسایت فروش',
'path' => 'app_panel_user_domains_index',
'icon' => '',
],
],
'subRoutes' => [
// Domain
'app_panel_user_domains_index',
'app_panel_user_domains_new',
'app_panel_user_domains_edit',
'app_panel_user_domains_informations',
'app_panel_user_domains_archive',
'app_panel_user_domains_delete',
'app_panel_user_domains_charge',
'app_config_panel_settings',
// Telegram Bot
'app_user_agent_bot_index',
'app_user_agent_bot_edit',
'app_user_agent_bot_price',
'app_user_agent_bot_archive',
'app_user_agent_bot_delete',
]
],
[
'isMega' => false,
'path' => 'app_user_wallet_summary',
'label' => 'حسابداری',
'icon' => 'custom-dollar-square',
'subRoutes' => [
]
],
[
'isMega' => false,
'path' => 'app_user_wallet_charge_new',
'label' => 'شارژ کیف پول',
'icon' => 'custom-dollar-square',
'subRoutes' => [
]
]
];
$this->adminMegaNavs = [
[
'isMega' => false,
'path' => 'app_admin_dashboard',
'icon' => '',
'label' => 'داشبورد مدیریت',
'subRoutes' => [
],
],
[
'isMega' => false,
'path' => 'app_panel_admin_domains_index',
'icon' => '',
'label' => 'دامنه های شخصی',
'subRoutes' => [
// 'app_panel_admin_campaign_index',
// 'app_panel_admin_campaign_new',
]
],
[
'isMega' => false,
'path' => 'app_panel_admin_campaign_index',
'icon' => '',
'label' => 'کمپین تبلیغاتی',
'subRoutes' => [
],
],
[
'isMega' => true,
'path' => '',
'icon' => '',
'label' => 'تحلیل سیستم',
'megaRoutes' => [
[
'label' => 'تحلیل ورودی',
'path' => 'app_admin_analytics_income',
'icon' => '',
],
[
'label' => 'ثبت هزینه',
'path' => 'app_panel_admin_cost_index',
'icon' => '',
],
[
'label' => 'تحلیل هزینه',
'path' => 'app_admin_analytics_cost',
'icon' => '',
],
[
'label' => 'تحلیل مصرف سرور',
'path' => 'app_admin_analytics_server_usage',
'icon' => '',
],
[
'label' => 'تحلیل سالانه',
'path' => 'app_admin_analytics_annual_income',
'icon' => '',
],
],
'subRoutes' => [
'app_admin_analytics_income',
'app_admin_analytics_cost',
'app_admin_analytics_annual_income',
]
],
[
'isMega' => true,
'path' => '',
'icon' => '',
'label' => 'کاربران',
'megaRoutes' => [
[
'label' => 'ثبت نماینده',
'path' => 'app_panel_admin_users_new',
'icon' => '',
],
[
'label' => 'مدیریت کاربر ها',
'path' => 'app_panel_admin_users_index',
'icon' => '',
],
],
'subRoutes' => [
'app_panel_admin_users_index',
'app_panel_admin_users_new',
'app_panel_admin_users_edit',
'app_panel_admin_users_archive',
'app_panel_admin_users_delete',
'app_panel_admin_users_analytics',
'app_panel_admin_users_charge',
'app_admin_telegram',
]
],
];
$this->adminMegaNavs[] = [
'isMega' => false,
'path' => 'app_admin_settings',
'icon' => '',
'label' => 'تنظیمات مدیریت',
'subRoutes' => [
]
];
$this->adminMegaNavs[] = [
'isMega' => true,
'path' => '',
'icon' => '',
'label' => 'VPN',
'megaRoutes' => [
[
'label' => 'سرویس ها',
'path' => 'app_panel_admin_vpn_service_index',
'icon' => '',
],
[
'label' => 'V2ray',
'path' => 'app_panel_admin_vpn_v2ray_servers_index',
'icon' => '',
],
[
'label' => 'OC',
'path' => 'app_panel_admin_vpn_ocserv_servers_index',
'icon' => '',
],
[
'label' => 'Open',
'path' => 'app_panel_admin_vpn_openvpn_servers_index',
'icon' => '',
],
],
'subRoutes' => [
'app_khan_vpn_panel_users',
'app_khan_vpn_panel_wallet_summary',
'app_khan_vpn_panel_analytics'
]
];
$this->adminMegaNavs[] = [
'isMega' => true,
'path' => '',
'icon' => '',
'label' => 'ServerSell',
'megaRoutes' => [
[
'label' => 'ایمیج ها',
'path' => 'app_panel_admin_server_hetzner_image_index',
'icon' => '',
],
[
'label' => 'نوع سرور ها',
'path' => 'app_panel_admin_server_hetzner_server_type_index',
'icon' => '',
],
[
'label' => 'دیتاسنتر ها',
'path' => 'app_panel_admin_server_hetzner_data_center_index',
'icon' => '',
],
[
'label' => 'خرید سرور',
'path' => 'app_panel_user_server_location',
'icon' => '',
],
[
'label' => 'لیست سرور',
'path' => 'app_panel_user_server_hetzner_server_index',
'icon' => '',
],
],
'subRoutes' => [
]
];
}
public function renderDesktopSideBar($routeName): Response
{
return $this->render( 'panel/modules/generic/_sidebar.html.twig', [
'userNavs' => $this->userNavs,
'adminMegaNavs' => $this->adminMegaNavs,
'routeName' => $routeName
]);
}
public function renderMobileSideBar($routeName): Response
{
return $this->render( 'panel/modules/generic/_sidebar_mobile.html.twig', [
'userNavs' => $this->userNavs,
'adminMegaNavs' => $this->adminMegaNavs,
'routeName' => $routeName
]);
}
public function renderTelegramManagementNavbar($routeName, Bot $bot = null)
{
$routes = [
[
'name' => $bot->getDescription(),
'path' => 'app_telegram_agent_public_bot_management_general'
],
[
'name' => 'ویرایش ربات',
'path' => 'app_telegram_agent_public_bot_management_edit'
],
[
'name' => 'قیف فروش',
'path' => 'app_telegram_agent_public_bot_management_marketing'
],
[
'name' => 'تحلیل فروش',
'path' => 'app_telegram_agent_public_bot_management_analytics'
],
[
'name' => 'قیمت گذاری بسته ها برای فروش',
'path' => 'app_telegram_agent_public_bot_management_price'
],
[
'name' => 'کاربران ربات',
'path' => 'app_telegram_agent_public_bot_management_users'
],
[
'name' => 'پیام همگانی',
'path' => 'app_telegram_agent_public_bot_management_notification'
],
[
'name' => 'کمپین های ربات',
'path' => 'app_telegram_agent_public_bot_management_campaigns',
],
[
'name' => 'سرویس های ربات',
'path' => 'app_panel_user_vpn_service_index',
],
];
return $this->render( 'panel/modules/generic/_agent_telegram_management.html.twig', [
'routeName' => $routeName,
'bot' => $bot,
'routes' => $routes
]);
}
public function renderHetznerFormBreadCrumb($route)
{
$datacenter = null;
if ($route->get('datacenter') && $this->entityManager->getRepository(DataCenter::class)->find($route->get('datacenter'))){
$datacenter = $this->entityManager->getRepository(DataCenter::class)->find($route->get('datacenter'));
}
if ($route->get('datacenter') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\DataCenter::class)->find($route->get('datacenter'))){
$datacenter = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\DataCenter::class)->find($route->get('datacenter'));
}
$image = null;
if ($route->get('image') && $this->entityManager->getRepository(Image::class)->find($route->get('image'))){
$image = $this->entityManager->getRepository(Image::class)->find($route->get('image'));
}
if ($route->get('image') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\Image::class)->find($route->get('image'))){
$image = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\Image::class)->find($route->get('image'));
}
$serverType = null;
if ($route->get('serverType') && $this->entityManager->getRepository(ServerType::class)->find($route->get('serverType'))){
$serverType = $this->entityManager->getRepository(ServerType::class)->find($route->get('serverType'));
}
if ($route->get('serverType') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\ServerType::class)->find($route->get('serverType'))){
$serverType = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\ServerType::class)->find($route->get('serverType'));
}
return $this->render('panel/modules/generic/_hetzner_bread_crumb.html.twig', [
'userNavs' => $this->userNavs,
'adminMegaNavs' => $this->adminMegaNavs,
'datacenter' => $datacenter,
'image' => $image,
'serverType' => $serverType,
'routeName' => $route->get('_route')
]);
}
public function renderManageItFormBreadCrumb($route)
{
$datacenter = null;
if ($route->get('datacenter') && $this->entityManager->getRepository(DataCenter::class)->find($route->get('datacenter'))){
$datacenter = $this->entityManager->getRepository(DataCenter::class)->find($route->get('datacenter'));
}
if ($route->get('datacenter') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\DataCenter::class)->find($route->get('datacenter'))){
$datacenter = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\DataCenter::class)->find($route->get('datacenter'));
}
$image = null;
if ($route->get('image') && $this->entityManager->getRepository(Image::class)->find($route->get('image'))){
$image = $this->entityManager->getRepository(Image::class)->find($route->get('image'));
}
if ($route->get('image') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\Image::class)->find($route->get('image'))){
$image = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\Image::class)->find($route->get('image'));
}
$serverType = null;
if ($route->get('serverType') && $this->entityManager->getRepository(ServerType::class)->find($route->get('serverType'))){
$serverType = $this->entityManager->getRepository(ServerType::class)->find($route->get('serverType'));
}
if ($route->get('serverType') && $this->entityManager->getRepository(\App\Entity\Server\ManageIt\ServerType::class)->find($route->get('serverType'))){
$serverType = $this->entityManager->getRepository(\App\Entity\Server\ManageIt\ServerType::class)->find($route->get('serverType'));
}
return $this->render('panel/modules/generic/_manageit_bread_crumb.html.twig', [
'userNavs' => $this->userNavs,
'adminMegaNavs' => $this->adminMegaNavs,
'datacenter' => $datacenter,
'image' => $image,
'serverType' => $serverType,
'routeName' => $route->get('_route')
]);
}
public function renderListServerBreadCrumb($route)
{
return $this->render('panel/modules/generic/_list_server_bread_crumb.html.twig', [
'userNavs' => $this->userNavs,
'adminMegaNavs' => $this->adminMegaNavs,
'routeName' => $route->get('_route')
]);
}
public function renderHetznerManageBreadCrumb($route , Server $server)
{
return $this->render('panel/modules/generic/_hetzner_manage_bread_crumb.html.twig', [
'server' => $server,
'routeName' => $route->get('_route')
]);
}
}