| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 
							- <?php
 - 
 - namespace App\Observers;
 - 
 - use App\Events\CurrencyRateChanged;
 - use App\Events\DefaultCurrencyChanged;
 - use App\Models\Setting\Currency;
 - use App\Utilities\Currency\CurrencyAccessor;
 - 
 - class CurrencyObserver
 - {
 -     public function creating(Currency $currency): void
 -     {
 -         $this->setStandardCurrencyAttributes($currency);
 -     }
 - 
 -     /**
 -      * Handle the Currency "updated" event.
 -      */
 -     public function updated(Currency $currency): void
 -     {
 -         if ($currency->wasChanged('enabled') && $currency->isEnabled()) {
 -             event(new DefaultCurrencyChanged($currency));
 -         }
 - 
 -         if ($currency->wasChanged('rate')) {
 -             event(new CurrencyRateChanged($currency, $currency->getOriginal('rate'), $currency->rate));
 -         }
 -     }
 - 
 -     protected function setStandardCurrencyAttributes(Currency $currency): void
 -     {
 -         if (empty($currency->code)) {
 -             return;
 -         }
 - 
 -         $defaultCurrency = CurrencyAccessor::getDefaultCurrency();
 - 
 -         $hasDefaultCurrency = $defaultCurrency !== null;
 - 
 -         $originalRate = $currency->rate;
 - 
 -         $currencyAttributes = Currency::factory()
 -             ->forCurrency($currency->code)
 -             ->make([
 -                 'enabled' => ! $hasDefaultCurrency,
 -             ])
 -             ->getAttributes();
 - 
 -         $currencyAttributes['rate'] = $originalRate;
 - 
 -         $currency->fill($currencyAttributes);
 -     }
 - }
 
 
  |