# What is a fascia currency and how do I use it?

A fascia currency can be set to render a different currency to the one specified in the store configuration.

### Setting the fascia currency

The easiest way to check for and apply the fascia currency is through `store` middleware.

The example snippet below details how to check for the presence of a `currency` cookie passed with the request:

```php
class SetFasciaCurrency
{
    public function handle(\Illuminate\Http\Request $request, \Closure $next): void 
    {
        \Aero\Store\Http\Middleware\EncryptCookies::$exceptions[] = 'currency';

        if ($code = $request->cookie('currency')) {
            $currency = \Aero\Common\Models\Currency::find($code);

            $request->store()->setFasciaCurrency($currency);
        }

        return $next($request);
    }
}
```

The middleware class can then be pushed to the `store` middleware group within the `register` method of a service provider:

```php
public function register(): void 
{  
    $this->app['router']->pushMiddlewareToGroup('store', SetFasciaCurrency::class);
}
```

<p class="callout info">Remember to call `parent::register()` if inside a module service provider.</p>

If the fascia currency needs to be set when running a console command:

```php
if ($this->app->runningInConsole() && ($currency = env('CURRENCY_CODE'))) {
    $this->app->booted(function () use ($currency) {
        \Aero\Store\Facades\Store::setFasciaCurrency(\Aero\Common\Models\Currency::find($currency));
    });
}
```

---

### Additional Considerations

- The exchange-rate of the fascia currency is based on the store's default configuration currency.
- If your store theme uses the Aero component system, the fascia currency will automatically be rendered for listings and products. However, if your theme utilises the `range-slider` component, you should ensure `currency('[value]')` and `currency().fascia_exchange_rate` are passed through as the `formatter` and `multiplier` attributes, respectively.
- Any event which is queued and is an instance of `Aero\Events\ManagedEvent` will automatically handle re-applying the fascia currency when running from the queue worker.   
      
    To force rendering the payment currency in mail notifications, use the `.base` modifier.   
      
    For example: `{{ order.total_price.base }}`.