File: /home/armgroup/libs/app/Providers/ComposerServiceProvider.php
<?php
namespace App\Providers;
use App\Enums\TicketStatus;
use App\Models\Banner;
use App\Models\Category;
use App\Models\Comment;
use App\Models\Contact;
use App\Models\EasyPay;
use App\Models\Menu;
use App\Models\Order;
use App\Models\Product;
use App\Models\Ticket;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
public function boot()
{
View::composer('admin.layouts.navbar', function ($view) {
$params['orders_not_checked'] = Order::where('checked', false)->count();
$params['contacts_not_checked'] = Contact::where('checked', false)->count();
$params['easy_pays_not_checked'] = EasyPay::where('checked', false)->count();
$params['comments_not_checked'] = auth()->user()->can('manage other users content')
? Comment::where('checked', false)->count()
: Comment::whereRelation('commentable', 'user_id', auth()->id())->where('checked', false)->count();
$params['tickets_not_checked'] = Ticket::with('user')
->whereNotIn('status', [TicketStatus::ANSWERED, TicketStatus::ON_HOLD, TicketStatus::CLOSED])
->oldest('status')
->get();
$params['notification_count'] = 0;
if (auth()->user()->can('manage all orders')) {
$params['notification_count'] += $params['orders_not_checked'];
}
if (auth()->user()->can('manage contacts')) {
$params['notification_count'] += $params['contacts_not_checked'];
}
if (auth()->user()->can('manage easy pays')) {
$params['notification_count'] += $params['easy_pays_not_checked'];
}
if (auth()->user()->can('manage comments')) {
$params['notification_count'] += $params['comments_not_checked'];
}
$view->with($params);
});
View::composer('layouts.header', function ($view) {
$params['menus'] = Cache::rememberForever('menus', function () {
return Menu::getMenus();
});
$params['categories'] = Cache::rememberForever('product-categories', function () {
return Category::query()
->with(['activeChildren', 'activeChildren.activeChildren'])
->where('status', true)
->where('type', Product::class)
->whereNull('parent_id')
->get(['id', 'name', 'slug', 'name', 'icon', 'short_description']);
});
$params['logo'] = Banner::getBanner('top-logo');
$view->with($params);
});
View::composer('layouts.footer', function ($view) {
$banners = Banner::getBanners(['footer-logo', 'footer1', 'footer2', 'footer3', 'social-networks', 'description-footer']);
[$params['footer_logo'], $params['footer1'], $params['footer2'], $params['footer3'], $params['social_networks'], $params['description_footer']] = [
$banners->firstWhere('position', 'footer-logo'),
$banners->firstWhere('position', 'footer1'),
$banners->firstWhere('position', 'footer2'),
$banners->firstWhere('position', 'footer3'),
$banners->firstWhere('position', 'social-networks'),
$banners->firstWhere('position', 'description-footer'),
];
$view->with($params);
});
}
}