88 lines
3.4 KiB
PHP
88 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core;
|
|
|
|
use Lunar\Admin\Filament\Resources\OrderResource\Pages\ManageOrder;
|
|
use Filament\Contracts\Plugin;
|
|
use Filament\Panel;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
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;
|
|
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;
|
|
use Lunar\Shipping\ShippingPlugin;
|
|
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\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;
|
|
|
|
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'))
|
|
->login(Login::class)
|
|
->resources([
|
|
LanguageLineResource::class,
|
|
CartResource::class,
|
|
])
|
|
->plugin(ShippingPlugin::make())
|
|
->pages([ManagePickupManifests::class]);
|
|
|
|
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,
|
|
ManageOrder::class => OrderViewExtension::class,
|
|
]);
|
|
|
|
Product::macro('reviews', function (): HasMany {
|
|
/** @var Product $this */
|
|
return $this->hasMany(ProductReview::class);
|
|
});
|
|
|
|
LunarStaff::addActivitylogExcept([
|
|
'otp_code',
|
|
'otp_expires_at',
|
|
'password',
|
|
'remember_token',
|
|
'email_verified_at',
|
|
'app_authentication_secret',
|
|
'app_authentication_recovery_codes',
|
|
]);
|
|
|
|
LunarStaff::created(function (LunarStaff $staff) {
|
|
Mail::to($staff->email)->send(new InviteMail($staff->first_name));
|
|
});
|
|
}
|
|
|
|
public function boot(Panel $panel): void {}
|
|
}
|