getHelper('question');
$output->writeln('Cadastro de Novo Usuário');
$output->writeln('-------------------------');
// Name
$nameQuestion = new Question('Nome completo: ');
$name = $helper->ask($input, $output, $nameQuestion);
if (empty($name)) {
$output->writeln('O nome é obrigatório.');
return Command::FAILURE;
}
// Email
$emailQuestion = new Question('E-mail: ');
$email = $helper->ask($input, $output, $emailQuestion);
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$output->writeln('E-mail inválido ou vazio.');
return Command::FAILURE;
}
if (User::where('users_email', $email)->exists()) {
$output->writeln("Já existe um usuário com o e-mail {$email}.");
return Command::FAILURE;
}
// Password
$passwordQuestion = new Question('Senha: ');
$passwordQuestion->setHidden(true);
$passwordQuestion->setHiddenFallback(false);
$password = $helper->ask($input, $output, $passwordQuestion);
if (strlen($password) < 6) {
$output->writeln('A senha deve ter pelo menos 6 caracteres.');
return Command::FAILURE;
}
// Bus ID
$busIdQuestion = new Question('ID Bus (opcional): ');
$busId = $helper->ask($input, $output, $busIdQuestion);
try {
$user = new User();
$user->users_name = $name;
$user->users_email = $email;
$user->users_password = password_hash($password, PASSWORD_DEFAULT);
$user->users_role = 'user';
$user->users_bus_id = $busId;
$user->users_status = 'active';
$user->save();
$output->writeln("\nUsuário '{$name}' cadastrado com sucesso!");
$output->writeln("ID: {$user->users_id}");
$output->writeln("E-mail: {$user->users_email}");
return Command::SUCCESS;
} catch (\Exception $e) {
$output->writeln("Erro ao cadastrar usuário: " . $e->getMessage() . "");
return Command::FAILURE;
}
}
}