2026-07-01 18:35:39 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Modules\Core\Providers;
|
|
|
|
|
|
2026-07-03 02:15:31 +03:00
|
|
|
use Illuminate\Support\Facades\Event;
|
2026-07-01 18:35:39 +03:00
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
|
use Lunar\Facades\ModelManifest;
|
|
|
|
|
use Lunar\Models\Contracts\Customer as LunarCustomer;
|
2026-09-25 13:59:16 +03:00
|
|
|
use Modules\Core\Auth\Events\UserAuthenticated;
|
2026-07-03 02:15:31 +03:00
|
|
|
use Modules\Core\Auth\Events\UserCreated;
|
2026-09-15 16:01:28 +03:00
|
|
|
use Modules\Core\Customer\Events\CustomerAddressCreated;
|
|
|
|
|
use Modules\Core\Customer\Events\CustomerAddressDeleted;
|
|
|
|
|
use Modules\Core\Customer\Events\CustomerAddressUpdated;
|
|
|
|
|
use Modules\Core\Customer\Events\CustomerProfileUpdated;
|
2026-09-25 14:12:55 +03:00
|
|
|
use Modules\Core\Customer\Events\CustomerRecoveryConsentSet;
|
2026-09-25 13:59:16 +03:00
|
|
|
use Modules\Core\Customer\Listeners\ClaimGuestOrdersOnLogin;
|
2026-07-03 02:15:31 +03:00
|
|
|
use Modules\Core\Customer\Listeners\CreateCustomerForUser;
|
2026-09-15 16:01:28 +03:00
|
|
|
use Modules\Core\Customer\Listeners\LogCustomerAccountActivity;
|
2026-07-01 18:35:39 +03:00
|
|
|
use Modules\Core\Customer\Models\Customer;
|
|
|
|
|
|
|
|
|
|
class CustomerServiceProvider extends ServiceProvider
|
|
|
|
|
{
|
|
|
|
|
public function boot(): void
|
|
|
|
|
{
|
2026-09-22 21:17:01 +03:00
|
|
|
// Deferred to booted() — LunarServiceProvider (lunarphp/core)
|
|
|
|
|
// calls Facades\ModelManifest::register() from its OWN boot(),
|
|
|
|
|
// which re-discovers every Lunar\Models\* class and repopulates
|
|
|
|
|
// the whole manifest from scratch, silently undoing a replace()
|
|
|
|
|
// call made from a boot() that ran earlier in the provider list.
|
|
|
|
|
// booted() fires only once every provider's boot() has completed,
|
|
|
|
|
// guaranteeing this is the one that actually sticks — same fix,
|
|
|
|
|
// same reasoning, as Providers\CatalogServiceProvider's own
|
|
|
|
|
// Product replace() call. This one likely only "worked" before
|
|
|
|
|
// because 3dealer's own AppServiceProvider independently
|
|
|
|
|
// re-registers Customer correctly in its own booted() — a
|
|
|
|
|
// consuming app without that redundant registration would have
|
|
|
|
|
// silently gotten the base Lunar\Models\Customer back.
|
|
|
|
|
$this->app->booted(fn () => ModelManifest::replace(LunarCustomer::class, Customer::class));
|
2026-07-03 02:15:31 +03:00
|
|
|
|
|
|
|
|
Event::listen(UserCreated::class, CreateCustomerForUser::class);
|
2026-09-25 13:59:16 +03:00
|
|
|
Event::listen(UserAuthenticated::class, ClaimGuestOrdersOnLogin::class);
|
2026-09-15 16:01:28 +03:00
|
|
|
|
|
|
|
|
Event::listen(CustomerAddressCreated::class, [LogCustomerAccountActivity::class, 'handleAddressCreated']);
|
|
|
|
|
Event::listen(CustomerAddressUpdated::class, [LogCustomerAccountActivity::class, 'handleAddressUpdated']);
|
|
|
|
|
Event::listen(CustomerAddressDeleted::class, [LogCustomerAccountActivity::class, 'handleAddressDeleted']);
|
|
|
|
|
Event::listen(CustomerProfileUpdated::class, [LogCustomerAccountActivity::class, 'handleProfileUpdated']);
|
2026-09-25 14:12:55 +03:00
|
|
|
Event::listen(CustomerRecoveryConsentSet::class, [LogCustomerAccountActivity::class, 'handleRecoveryConsentSet']);
|
2026-07-01 18:35:39 +03:00
|
|
|
}
|
|
|
|
|
}
|