Pessoal,
Eu inclui no método editar funcionário a opção de incluir ou excluir unidades de negócios, mas aconteceram 2 problemas:
1- a opção remove(Object) não funciona - quando uso remove(Index) funciona e exclui do banco 2- Essa opção de remove é a única que não sai do método, fica em looping pedindo a info do scan
vejam o código abaixo - todas as outras opções funcionaram.
private void atualizar(Scanner scanner) {
boolean sistemaAtualizar = true;
System.out.println("Qual o Id do Funcionário que você quer alterar?");
int id = scanner.nextInt();
Funcionario funcionario = funcionarioRepository.findById(id).get();
System.out.println("Qual informação você quer alterar do Funcionário?");
System.out.println("1 - nome");
System.out.println("2 - cpf");
System.out.println("3 - salario");
System.out.println("4 - cargo");
System.out.println("5 - adicionar unidade de trabalho");
System.out.println("6 - remover unidade de trabalho");
int action = scanner.nextInt();
while (sistemaAtualizar) {
if (action == 1) {
System.out.println("Qual o nome do funcionário");
String name = scanner.next();
funcionario.setName(name);
funcionarioRepository.save(funcionario);
}
if (action == 2) {
System.out.println("Qual o CPF do funcionário");
String cpf = scanner.next();
funcionario.setCpf(cpf);
funcionarioRepository.save(funcionario);
}
if (action == 3) {
System.out.println("Qual o salário do funcionário");
double salario = scanner.nextDouble();
funcionario.setSalario(salario);
funcionarioRepository.save(funcionario);
}
if (action == 4) {
System.out.println("Qual o Id do cargo do funcionário");
Integer cargoId = scanner.nextInt();
Optional<Cargo> cargo = cargoRepository.findById(cargoId);
funcionario.setCargo(cargo.get());
funcionarioRepository.save(funcionario);
}
if (action == 5) {
List<Unidade> unidades = funcionario.getUnidades();
System.out.println("Qual o ID da unidade você quer acrescentar?");
Integer unidadeIdAdd = scanner.nextInt();
Unidade unidadeAdd = unidadeRepository.findById(unidadeIdAdd).get();
unidades.add(unidadeAdd);
funcionario.setUnidades(unidades);
funcionarioRepository.save(funcionario);
}
if (action == 6) {
List<Unidade> unidades = funcionario.getUnidades();
System.out.println("Qual o ID da unidade você quer remover?");
Integer unidadeIdRemove = scanner.nextInt();
Unidade unidadeRemove = unidadeRepository.findById(unidadeIdRemove).get();
unidades.remove(unidadeRemove);
funcionario.setUnidades(unidades);
funcionarioRepository.save(funcionario);
}
else {
sistemaAtualizar = false;
}
}
}