. */ namespace SP\Modules\Web\Forms; use SP\Core\Exceptions\SPException; use SP\Core\Exceptions\ValidationException; use SP\DataModel\UserGroupData; use SP\Domain\Core\Acl\AclActionsInterface; /** * Class UserGroupForm * * @package SP\Modules\Web\Forms */ final class UserGroupForm extends FormBase implements FormInterface { protected ?UserGroupData $groupData = null; /** * Validar el formulario * * @param int $action * @param int|null $id * * @return UserGroupForm|FormInterface * @throws ValidationException */ public function validateFor(int $action, ?int $id = null): FormInterface { if ($id !== null) { $this->itemId = $id; } switch ($action) { case AclActionsInterface::GROUP_CREATE: case AclActionsInterface::GROUP_EDIT: $this->analyzeRequestData(); $this->checkCommon(); break; } return $this; } /** * Analizar los datos de la petición HTTP * * @return void */ protected function analyzeRequestData(): void { $this->groupData = new UserGroupData(); $this->groupData->setId($this->itemId); $this->groupData->setName($this->request->analyzeString('name')); $this->groupData->setDescription($this->request->analyzeString('description')); $this->groupData->setUsers($this->request->analyzeArray('users', null, [])); } /** * @throws ValidationException */ protected function checkCommon(): void { if (!$this->groupData->getName()) { throw new ValidationException(__u('A group name is needed')); } } /** * @throws SPException */ public function getItemData(): UserGroupData { if (null === $this->groupData) { throw new SPException(__u('Group data not set')); } return $this->groupData; } }