Files
core/src/CorePlugin.php
T

90 lines
3.5 KiB
PHP
Raw Normal View History

2026-07-01 18:35:39 +03:00
<?php
namespace Modules\Core;
2026-08-31 13:16:13 +03:00
use Lunar\Admin\Filament\Resources\OrderResource\Pages\ManageOrder;
2026-07-01 18:35:39 +03:00
use Filament\Contracts\Plugin;
use Filament\Panel;
use Illuminate\Database\Eloquent\Relations\HasMany;
2026-07-01 18:35:39 +03:00
use Illuminate\Support\Facades\Mail;
use Lunar\Admin\Filament\Resources\ProductOptionResource;
use Lunar\Admin\Filament\Resources\ProductOptionResource\RelationManagers\ValuesRelationManager;
use Lunar\Admin\Filament\Resources\OrderResource;
use Lunar\Admin\Filament\Resources\ProductResource;
2026-07-01 18:35:39 +03:00
use Lunar\Admin\Filament\Resources\StaffResource;
use Lunar\Admin\Models\Staff as LunarStaff;
use Lunar\Admin\Support\Facades\LunarPanel;
use Lunar\Models\Product;
use Lunar\Shipping\Filament\Resources\ShippingMethodResource;
use Lunar\Shipping\Filament\Resources\ShippingMethodResource\Pages\ListShippingMethod;
2026-07-06 03:10:34 +03:00
use Lunar\Shipping\ShippingPlugin;
2026-07-01 18:35:39 +03:00
use Modules\Core\Auth\Extensions\StaffResourceExtension;
use Modules\Core\Auth\Filament\Pages\Login;
use Modules\Core\Auth\Mail\InviteMail;
use Modules\Core\Cart\Filament\Resources\CartResource;
use Modules\Core\Catalog\Filament\Extensions\ProductOptionResourceExtension;
use Modules\Core\Catalog\Filament\Extensions\ValuesRelationManagerExtension;
use Modules\Core\Localization\Filament\Resources\LanguageLineResource;
use Modules\Core\Payment\Filament\Resources\PaymentMethodResource;
use Modules\Core\Review\Filament\Extensions\ProductResourceExtension;
use Modules\Core\Review\Models\ProductReview;
use Modules\Core\Shipping\Extensions\OrderViewExtension;
use Modules\Core\Shipping\Extensions\ShippingMethodListExtension;
use Modules\Core\Shipping\Extensions\ShippingMethodResourceExtension;
use Modules\Core\Shipping\Filament\Pages\ManagePickupManifests;
2026-07-01 18:35:39 +03:00
class CorePlugin implements Plugin
{
public function getId(): string
{
return 'core';
}
public function register(Panel $panel): void
{
$panel->path('boboko')
->brandName('Boboko')
->brandLogo(asset('static/logos/core/boboko-logo.svg'))
->darkModeBrandLogo(asset('static/logos/core/boboko-logo-white.svg'))
2026-07-06 03:10:34 +03:00
->login(Login::class)
->resources([
LanguageLineResource::class,
CartResource::class,
PaymentMethodResource::class,
])
->plugin(ShippingPlugin::make())
->pages([ManagePickupManifests::class]);
2026-07-01 18:35:39 +03:00
LunarPanel::extensions([
StaffResource::class => StaffResourceExtension::class,
ProductResource::class => ProductResourceExtension::class,
ProductOptionResource::class => ProductOptionResourceExtension::class,
ValuesRelationManager::class => ValuesRelationManagerExtension::class,
ShippingMethodResource::class => ShippingMethodResourceExtension::class,
ListShippingMethod::class => ShippingMethodListExtension::class,
2026-08-31 13:16:13 +03:00
ManageOrder::class => OrderViewExtension::class,
2026-07-01 18:35:39 +03:00
]);
Product::macro('reviews', function (): HasMany {
/** @var Product $this */
return $this->hasMany(ProductReview::class);
});
2026-07-01 18:35:39 +03:00
LunarStaff::addActivitylogExcept([
'otp_code',
'otp_expires_at',
'password',
'remember_token',
'email_verified_at',
2026-08-31 13:16:13 +03:00
'app_authentication_secret',
'app_authentication_recovery_codes',
2026-07-01 18:35:39 +03:00
]);
LunarStaff::created(function (LunarStaff $staff) {
Mail::to($staff->email)->send(new InviteMail($staff->first_name));
});
}
public function boot(Panel $panel): void {}
}