<?php declare(strict_types=1);

namespace App\Dto\User;

use App\Exceptions\Dto\User\ManyRoleDtoException;

final class ManyRoleDto
{
    private array $roles = [];

    public function __construct(array $roles = []) {
        foreach ($roles as $role) {
            if (!is_numeric($role) || is_float($role)) {
                throw new ManyRoleDtoException('Not an integer: ' . $role . '.');
            }
            $this->add((int) $role);
        }
    }

    public function add(int $id): void
    {
        if ($id < 1) {
            throw new ManyRoleDtoException('Only Integer > 0.');
        }
        $this->roles[] = $id;
    }

    public function toArray(): array
    {
        return $this->roles;
    }
}