<?php
namespace App\Subscriber\GestionComerciale;
use App\Entity\GestionComerciale\Activite;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Response;
use App\Service\GestionComerciale\ActiviteService;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\DependencyInjection\Container;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Security;
class ActiviteSubscriber implements EventSubscriberInterface
{
protected ActiviteService $activiteService;
private EntityManagerInterface $entityManager;
private string $filters = '';
private Security $security;
public function __construct(EntityManagerInterface $entityManager, ActiviteService $activiteService, Security $security)
{
$this->entityManager = $entityManager;
$this->activiteService = $activiteService;
$this->security = $security;
}
public static function getSubscribedEvents()
{
return [KernelEvents::RESPONSE => 'processActivite'];
}
public function processActivite(ResponseEvent $event)
{
if ( ! $event->isMainRequest() or $this->security->getUser() === null) {
return;
}
$repo_activite = $this->entityManager->getRepository(Activite::class);
$tab_route = [
"dtc_liste_preparation_preparer_action" => ["action" => "preparation", "objet" => "Lp", "identifiant" => "id"],
"dtc_liste_preparation_simplifie_scan_produit_action" => ["action" => "scan_emballage", "objet" => "Lp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_expedition_gls_action" => ["action" => "emballage_etiquette", "objet" => "Bp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_expedition_tnt_action" => ["action" => "emballage_etiquette", "objet" => "Bp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_expedition_colissimo_action" => ["action" => "emballage_etiquette", "objet" => "Bp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_expedition_chronopost_action" => ["action" => "emballage_etiquette", "objet" => "Bp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_emballer_action" => ["action" => "emballage", "objet" => "Bp", "identifiant" => "id"],
"dtc_bon_preparation_simplifie_preparer_action" => ["action" => "preparation", "objet" => "Bp", "identifiant" => "id"],
"dtc_fabrication_simplifie_reception" => ["action" => "reception", "objet" => "Fabrication", "identifiant" => "id"],
"dtc_commande_fournisseur_simplifie_reception" => ["action" => "reception", "objet" => "CommandeFournisseur", "identifiant" => "id"],
"dtc_facture_fournisseur_modifier" => ["action" => "modifier", "objet" => "FactureFournisseur", "identifiant" => "id"],
"dtc_commande_fournisseur_modifier" => ["action" => "modifier", "objet" => "CommandeFournisseur", "identifiant" => "id"],
"dtc_facture_afficher" => ["action" => "modifier", "objet" => "Facture", "identifiant" => "id"],
"dtc_commande_modifier" => ["action" => "modifier", "objet" => "Commande", "identifiant" => "id"],
"dtc_bon_preparation_modifier" => ["action" => "modifier", "objet" => "Bp", "identifiant" => "id"],
"dtc_devis_modifier" => ["action" => "modifier", "objet" => "Devis", "identifiant" => "id"],
"dtc_avoir_modifier" => ["action" => "modifier", "objet" => "Avoir", "identifiant" => "id"],
"dtc_article_type_modifier" => ["action" => "modifier", "objet" => "TypeArticle", "identifiant" => "id"],
"dtc_article_modifier" => ["action" => "modifier", "objet" => "Article", "identifiant" => "id"],
"dtc_transporteur_modifier" => ["action" => "modifier", "objet" => "Transporteur", "identifiant" => "id"],
"dtc_remise_modifier" => ["action" => "modifier", "objet" => "Remise", "identifiant" => "id"],
"dtc_marque_modifier" => ["action" => "modifier", "objet" => "Marque", "identifiant" => "id"],
"dtc_categorie_modifier" => ["action" => "modifier", "objet" => "CategorieArticle", "identifiant" => "id"],
"dtc_bon_livraison_modifier" => ["action" => "modifier", "objet" => "BonLivraison", "identifiant" => "id"],
"dtc_fabrication_multiple_modifier" => ["action" => "modifier", "objet" => "Ofm", "identifiant" => "id"],
"dtc_fabrication_modifier" => ["action" => "modifier", "objet" => "Fabrication", "identifiant" => "id"],
"dtc_client_modifier" => ["action" => "modifier", "objet" => "Client", "identifiant" => "id"],
"dtc_fournisseur_modifier" => ["action" => "modifier", "objet" => "Fournisseur", "identifiant" => "id"],
"dtc_societe_modifier" => ["action" => "modifier", "objet" => "Societe", "identifiant" => "id"],
"dtc_utilisateur_modifier" => ["action" => "modifier", "objet" => "Utilisateur", "identifiant" => "id"],
"dtc_tranche_poids_modifier" => ["action" => "modifier", "objet" => "TranchePoids", "identifiant" => "id"],
"dtc_pays_modifier" => ["action" => "modifier", "objet" => "Pays", "identifiant" => "id"],
"dtc_region_modifier" => ["action" => "modifier", "objet" => "Region", "identifiant" => "id"],
"dtc_departement_modifier" => ["action" => "modifier", "objet" => "Departement", "identifiant" => "id"],
"dtc_ville_modifier" => ["action" => "modifier", "objet" => "Ville", "identifiant" => "id"],
"dtc_zone_livraison_modifier" => ["action" => "modifier", "objet" => "ZoneLivraison", "identifiant" => "id"],
"dtc_article_attribut_article_modifier" => ["action" => "modifier", "objet" => "AttributArticle", "identifiant" => "id"],
"dtc_unite_mesure_modifier" => ["action" => "modifier", "objet" => "UniteMesure", "identifiant" => "id"],
"dtc_article_famille_compta_modifier" => ["action" => "modifier", "objet" => "FamilleCompta", "identifiant" => "id"],
"dtc_compta_modifier" => ["action" => "modifier", "objet" => "EntreeComptable", "identifiant" => "id"],
"dtc_taxe_modifier" => ["action" => "modifier", "objet" => "Tva", "identifiant" => "id"],
"dtc_regle_taxe_modifier" => ["action" => "modifier", "objet" => "RegleTaxe", "identifiant" => "id"],
"dtc_mode_reglement_modifier" => ["action" => "modifier", "objet" => "ModeReglement", "identifiant" => "id"],
"dtc_statut_paiement_modifier" => ["action" => "modifier", "objet" => "StatutPaiement", "identifiant" => "id"],
"dtc_delai_paiement_modifier" => ["action" => "modifier", "objet" => "DelaiPaiement", "identifiant" => "id"],
"dtc_type_reglement_modifier" => ["action" => "modifier", "objet" => "TypeReglement", "identifiant" => "id"],
"dtc_mode_encaissement_modifier" => ["action" => "modifier", "objet" => "ModeEncaissement", "identifiant" => "id"],
"dtc_type_mouvement_caisse_modifier" => ["action" => "modifier", "objet" => "TypeMouvementCaisse", "identifiant" => "id"],
"dtc_categorie_note_modifier" => ["action" => "modifier", "objet" => "CategorieNote", "identifiant" => "id"],
"dtc_devise_modifier" => ["action" => "modifier", "objet" => "Devise", "identifiant" => "id"],
"dtc_numerotation_document_modifier" => ["action" => "modifier", "objet" => "RegleNumerotation", "identifiant" => "id"],
"dtc_civilite_modifier" => ["action" => "modifier", "objet" => "Civilite", "identifiant" => "id"],
"dtc_contact_service_modifier" => ["action" => "modifier", "objet" => "Service", "identifiant" => "id"],
"dtc_classification_modifier" => ["action" => "modifier", "objet" => "ClassificationClient", "identifiant" => "id"],
"dtc_parametrage_modifier" => ["action" => "modifier", "objet" => "Parametrage", "identifiant" => "id"],
"dtc_type_utilisateur_modifier" => ["action" => "modifier", "objet" => "TypeUtilisateur", "identifiant" => "id"],
"dtc_etiquette_modifier" => ["action" => "modifier", "objet" => "Etiquette", "identifiant" => "id"],
"dtc_inventaire_modifier" => ["action" => "modifier", "objet" => "Inventaire", "identifiant" => "id"],
//"dtc_article_automatique_modifier"=>array("action"=>"modifier","objet"=>"ArticleAutomatique","identifiant"=>"id"),
];
$user = $this->security->getUser();
$request = $event->getRequest();
$_route = $request->attributes->get('_route');
$params = $request->attributes->get('_route_params');
if (array_key_exists($_route, $tab_route) && is_object($user)) {
$objet = "";
$action = "";
$id = "";
$action = $tab_route[$_route]["action"];
$objet = $tab_route[$_route]["objet"];
$id = $params[$tab_route[$_route]["identifiant"]];
$ecriture = true;
$totalUtilisateursPage = $repo_activite->getTotalUtilisateursPage($user, $objet, $action, $id);
if ($totalUtilisateursPage["total"] > 0) {
$ecriture = false;
}
$idActivite = "";
$activite = new Activite();
$activite->setUtilisateur($user);
$activite->setObjet($objet);
$activite->setAction($action);
$activite->setIdObjet($id);
$activite->setEcriture($ecriture);
$this->entityManager->persist($activite);
$this->entityManager->flush();
$this->entityManager->refresh($activite);
$response = $this->activiteService->injecterIdActivite($event->getResponse(), $activite);
$event->setResponse($response);
}
}
}