<?php

namespace App\Observers;

use Illuminate\Support\Facades\Cache;
use Yajny\Models\Region;

class RegionObserver
{
    /**
     * Handle the region "created" event.
     *
     * @param Region $region
     * @return void
     */
    public function created(Region $region)
    {
        $this->updateCache();
    }

    /**
     * Handle the region "updated" event.
     *
     * @param Region $region
     * @return void
     */
    public function updated(Region $region)
    {
        $this->updateCache();
    }

    /**
     * Handle the region "deleted" event.
     *
     * @param Region $region
     * @return void
     */
    public function deleted(Region $region)
    {
        $this->updateCache();
    }

    /**
     * Handle the region "restored" event.
     *
     * @param Region $region
     * @return void
     */
    public function restored(Region $region)
    {
        $this->updateCache();
    }

    /**
     * Handle the region "force deleted" event.
     *
     * @param Region $region
     * @return void
     */
    public function forceDeleted(Region $region)
    {
        $this->updateCache();
    }

    private function updateCache()
    {
        Cache::driver('frontend')->forget('regions');
        Cache::driver('frontend')->forever('regions', Region::all()->mapWithKeys(function ($reg) {
            return [$reg->code => $reg];
        }));
    }
}
