<?php

declare(strict_types=1);

namespace App\Service\OnChange\Core;

use App\Entity\Core\File;
use App\Service\OnChange\OnChangeContext;
use App\Service\OnChange\OnChangeDefault;
use Liip\ImagineBundle\Imagine\Cache\CacheManager;

/**
 * Classe OnOrganizationChange qui comporte toutes les opérations automatiques se produisant lors de l'évolution d'une organisation.
 */
class OnFileChange extends OnChangeDefault
{
    public function __construct(
        protected readonly CacheManager $cacheManager,
    ) {
    }

    public function beforeChange(mixed $file, OnChangeContext $context): void
    {
        if ($context->previousData() && $context->previousData()->getConfig() !== $file->getConfig()) {
            $this->onConfigChange($file);
        }
    }

    /**
     * La configuration d'un fichier a changé (i.e. le cropping).
     * On invalide le cache Liip.
     */
    public function onConfigChange(File $file): void
    {
        $this->cacheManager->remove($file->getSlug());
    }
}
