src/Logging/Activity/CostNoteLog.php line 19

Open in your IDE?
  1. <?php
  2. //----------------------------------------------------------------------
  3. // src/Logging/CostNoteLog.php
  4. //----------------------------------------------------------------------
  5. namespace App\Logging\Activity;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Entity\Platform\Cost\CostNote;
  8. use App\Logging\Tools;
  9. use App\Services\LogTools;
  10. class CostNoteLog
  11. {
  12.     private array $pendingLogArgs = [];
  13.     public function __construct(ManagerRegistry $doctrineLogTools $logToolsTools $tools)
  14.     {
  15.         $this->em $doctrine->getManager();
  16.         $this->logTools $logTools;
  17.         $this->tools $tools;
  18.     }
  19.     public function logCreation(CostNote $costNote)
  20.     {
  21.         $pendingLogArgs = [];
  22.         //----------------------------------------------------------------------
  23.         // Fetch eventual info stored in the object
  24.         $loggingData $this->logTools->handleLoggingData($costNote);
  25.         $info $loggingData['info'];
  26.         $specialAuthor $loggingData['special_author'];
  27.         $ignore $loggingData['ignore'];
  28.         if ($ignore) return $pendingLogArgs;
  29.         //----------------------------------------------------------------------
  30.         // Init base log args
  31.         // This does not contain action
  32.         $args $this->initArgs($costNote$loggingData);
  33.         //----------------------------------------------------------------------
  34.         $action "cost_note_add";
  35.         $args["action"] = $action;
  36.         $pendingLogArgs[] = $args;
  37.         return $pendingLogArgs;
  38.     }
  39.     public function logChanges(CostNote $costNote$changes)
  40.     {
  41.         $pendingLogArgs = [];
  42.         //----------------------------------------------------------------------
  43.         // Fetch eventual info skeletond in the object
  44.         $loggingData $this->logTools->handleLoggingData($costNote);
  45.         $info $loggingData['info'];
  46.         $specialAuthor $loggingData['special_author'];
  47.         $ignore $loggingData['ignore'];
  48.         if ($ignore) return $pendingLogArgs;
  49.         //----------------------------------------------------------------------
  50.         // Init base log args
  51.         // This does not contain action
  52.         $args $this->initArgs($costNote$loggingData);
  53.         //----------------------------------------------------------------------
  54.         $action "cost_note_edit";
  55.         $basicChanges = array(
  56.             "info",
  57.         );
  58.         // See what changed and log (members first)
  59.         foreach ($changes as $key => $change)
  60.         {
  61.             $name $this->logTools->camelToSnakeCase($key);
  62.             $args["action"]    = $action."_".$name;
  63.             $before $change[0];
  64.             $after $change[1];
  65.             if (in_array($key$basicChanges))
  66.             {
  67.                 $pendingLogArgs[] = $this->tools->handleBasicChanges($args$before$after);
  68.                 continue;
  69.             }
  70.         }
  71.         return $pendingLogArgs;
  72.     }
  73.     public function logRemoval(CostNote $costNote)
  74.     {
  75.         $pendingLogArgs = [];
  76.         //----------------------------------------------------------------------
  77.         // Fetch eventual info skeletond in the object
  78.         $loggingData $this->logTools->handleLoggingData($costNote);
  79.         $info $loggingData['info'];
  80.         $specialAuthor $loggingData['special_author'];
  81.         $ignore $loggingData['ignore'];
  82.         if ($ignore) return $pendingLogArgs;
  83.         //----------------------------------------------------------------------
  84.         // Init base log args
  85.         // This does not contain action
  86.         $args $this->initArgs($costNote$loggingData);
  87.         //----------------------------------------------------------------------
  88.         $args["action"] = "cost_note_delete";
  89.         $pendingLogArgs[] = $args;
  90.         return $pendingLogArgs;
  91.     }
  92.     private function initArgs(CostNote $costNote$loggingData)
  93.     {
  94.         $society $costNote->getSociety();
  95.         $societyGroup $costNote->getSocietyGroup();
  96.         $args = array(
  97.             "object_id"                    =>    $costNote->getId(),
  98.             "object_bundle"                =>    "Platform",
  99.             "object_entity"                =>    "CostNote",
  100.             "object_display"            =>    $costNote->display(),
  101.             "society_group"                =>    $societyGroup,
  102.             "society"                    =>    $society,
  103.             "info"                        =>    $loggingData['info'],
  104.             "special_author"            =>    $loggingData['special_author'],
  105.         );
  106.         return $args;
  107.     }
  108. }