Implement deleting aliases on account details page
This commit is contained in:
parent
57b712300f
commit
2075aca98b
10 changed files with 158 additions and 46 deletions
42
src/Frontend/Accounts/AccountDeleteAliasesData.php
Normal file
42
src/Frontend/Accounts/AccountDeleteAliasesData.php
Normal 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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue