mail-account-admin/src/Frontend/Accounts/AccountDeleteAliasesData.php

43 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace MailAccountAdmin\Frontend\Accounts;
use MailAccountAdmin\Common\FormData;
use MailAccountAdmin\Exceptions\InputValidationError;
class AccountDeleteAliasesData extends FormData
{
/** @var array[int] */
private array $selectedAliasIds;
private function __construct(array $selectedAliasIds)
{
$this->selectedAliasIds = $selectedAliasIds;
}
public static function createFromArray(array $raw): self
{
$rawAliasIds = $raw['selected_aliases'] ?? [];
if (!is_array($rawAliasIds)) {
throw new InputValidationError('selected_aliases is not an array.');
}
if (empty($rawAliasIds)) {
throw new InputValidationError('No aliases were selected.');
}
$selectedAliasIds = [];
foreach ($rawAliasIds as $i => $id) {
$selectedAliasIds[] = self::validateInteger($id, true, "selected_aliases[$i]");
}
return new self($selectedAliasIds);
}
public function getSelectedAliasIds(): array
{
return $this->selectedAliasIds;
}
}