- <?php
- namespace EasyCorp\Bundle\EasyAdminBundle\Dto;
- use EasyCorp\Bundle\EasyAdminBundle\Collection\ActionCollection;
- use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
- /**
-  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
-  */
- final class ActionConfigDto
- {
-     private $pageName;
-     /** @var ActionDto[] */
-     private $actions = [
-         Crud::PAGE_DETAIL => [],
-         Crud::PAGE_EDIT => [],
-         Crud::PAGE_INDEX => [],
-         Crud::PAGE_NEW => [],
-     ];
-     /** @var string[] */
-     private $disabledActions = [];
-     /** @var string[] */
-     private $actionPermissions = [];
-     public function __construct()
-     {
-     }
-     public function __clone()
-     {
-         foreach ($this->actions as $pageName => $actions) {
-             foreach ($actions as $actionName => $actionDto) {
-                 $this->actions[$pageName][$actionName] = clone $actionDto;
-             }
-         }
-     }
-     public function setPageName(?string $pageName): void
-     {
-         $this->pageName = $pageName;
-     }
-     public function setActionPermission(string $actionName, string $permission): void
-     {
-         $this->actionPermissions[$actionName] = $permission;
-     }
-     public function setActionPermissions(array $permissions): void
-     {
-         $this->actionPermissions = $permissions;
-     }
-     public function prependAction(string $pageName, ActionDto $actionDto): void
-     {
-         $this->actions[$pageName][$actionDto->getName()] = $actionDto;
-     }
-     public function appendAction(string $pageName, ActionDto $actionDto): void
-     {
-         $this->actions[$pageName] = array_merge([$actionDto->getName() => $actionDto], $this->actions[$pageName]);
-     }
-     public function setAction(string $pageName, ActionDto $actionDto): void
-     {
-         $this->actions[$pageName][$actionDto->getName()] = $actionDto;
-     }
-     public function getAction(string $pageName, string $actionName): ?ActionDto
-     {
-         return $this->actions[$pageName][$actionName] ?? null;
-     }
-     public function removeAction(string $pageName, string $actionName): void
-     {
-         unset($this->actions[$pageName][$actionName]);
-     }
-     public function reorderActions(string $pageName, array $orderedActionNames): void
-     {
-         $orderedActions = [];
-         foreach ($orderedActionNames as $actionName) {
-             $orderedActions[$actionName] = $this->actions[$pageName][$actionName];
-         }
-         $this->actions[$pageName] = $orderedActions;
-     }
-     public function disableActions(array $actionNames): void
-     {
-         foreach ($actionNames as $actionName) {
-             if (!\in_array($actionName, $this->disabledActions)) {
-                 $this->disabledActions[] = $actionName;
-             }
-         }
-     }
-     /**
-      * @return array|ActionCollection
-      */
-     public function getActions()
-     {
-         return null === $this->pageName ? $this->actions : ActionCollection::new($this->actions[$this->pageName]);
-     }
-     /**
-      * @param ActionDto[] $newActions
-      */
-     public function setActions(string $pageName, array $newActions): void
-     {
-         $this->actions[$pageName] = $newActions;
-     }
-     public function getDisabledActions(): array
-     {
-         return $this->disabledActions;
-     }
-     public function getActionPermissions(): array
-     {
-         return $this->actionPermissions;
-     }
- }
-