<?php
namespace App\EventSubscriber;
use App\Entity\PracticalFile;
use App\Event\AppEvents;
use App\Service\PracticalFileGoogleDriveService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
class PracticalFileSubscriber implements EventSubscriberInterface
{
/**
* @var PracticalFileGoogleDriveService
*/
private $pfGoogleDriveService;
public function __construct(PracticalFileGoogleDriveService $pfGoogleDriveService)
{
$this->pfGoogleDriveService = $pfGoogleDriveService;
}
/**
* Mise à jour des raccourcis vers le manuscrit dans le dossier Drive de la maj dossier en cours
*/
public function onManuscritUploaded(GenericEvent $event): void
{
/** @var PracticalFile $practicalFile */
$practicalFile = $event->getSubject();
$majDossier = $practicalFile->getCurrentMajDossier();
if ($majDossier && $majDossier->getGoogleDriveFolderId()) {
$googleDriveService = $this->pfGoogleDriveService->getDriveService();
if ($shortcut = $googleDriveService->findFileByName("wk-{$practicalFile->getNumber()}", $majDossier->getGoogleDriveFolderId())) {
$googleDriveService->trashFile($shortcut->getId());
}
$googleDriveService->createShortcut(
$majDossier->getGoogleDriveFolderId(),
$practicalFile->getGoogleDocId(),
"wk-{$practicalFile->getNumber()}"
);
}
}
public static function getSubscribedEvents()
{
return [
AppEvents::MANUSCRIT_UPLOADED => 'onManuscritUploaded',
];
}
}