FileService.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace App\Services\File;
  3. use App\Models\Enums\ActionObjectType;
  4. use App\Models\Enums\ObjectAction;
  5. use App\Models\File;
  6. use App\Repositories\ActionRepository;
  7. use App\Repositories\CustomFieldRepository;
  8. use App\Services\History\ModelChangeDetector;
  9. class FileService
  10. {
  11. private CustomFieldRepository $customFieldRepository;
  12. public function __construct(CustomFieldRepository $customFieldRepository)
  13. {
  14. $this->customFieldRepository = $customFieldRepository;
  15. }
  16. public function update(string $id, array $updatedData): void
  17. {
  18. $file = File::query()->findOrFail($id);
  19. if ($updatedData['naming_rule_id']) {
  20. $updatedData['naming_rules'] = $this->customFieldRepository->keysByGroup($updatedData['naming_rule_id'])->value;
  21. }
  22. $file->fill($updatedData);
  23. $changes = ModelChangeDetector::detector(ActionObjectType::CONTAINER_FILE, $file);
  24. ActionRepository::create($id, ActionObjectType::CONTAINER_FILE, ObjectAction::EDITED_FILE, null, null, [], $changes);
  25. $file->save();
  26. }
  27. }