Implement deleting aliases on account details page

This commit is contained in:
Lexi / Zoe 2021-09-22 22:30:13 +02:00
parent 57b712300f
commit 2075aca98b
Signed by: binaryDiv
GPG key ID: F8D4956E224DA232
10 changed files with 158 additions and 46 deletions

View file

@ -0,0 +1,42 @@
<?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;
}
}