private static void EscolherAcao(Opcao opcaoEscolhida, User usuario, ClientService clienteService, FluxoDeAprovacaoService fluxoService) { Client cliente; do { Console.WriteLine("\nDigite o Id do cliente:"); var idDigitado = Convert.ToInt32(Console.ReadLine()); cliente = clienteService.Get(idDigitado); if (cliente == null) { throw new ArgumentException("Id inválido!"); } } while (cliente == null); switch (opcaoEscolhida.Acao) { case Acoes.ATUALIZAR_CLIENTE: AtualizarCliente(cliente, clienteService); break; case Acoes.MANDAR_PARA_GERENCIA: case Acoes.APROVAR_CLIENTE_NACIONAL_E_INTERNACIONAL: case Acoes.APROVAR_OU_ENVIAR_PARA_RISCO: case Acoes.APROVAR_CLIENTE_INTERNACIONAL: fluxoService.AprovarCliente(cliente, usuario); break; case Acoes.REPROVAR_CLIENTE: fluxoService.ReprovarCliente(cliente, usuario); break; case Acoes.MANDAR_PARA_CORRECAO_DE_PERFIL: fluxoService.EnviarParaCorrecao(cliente, usuario); break; case Acoes.CONSULTAR_CLIENTE: ListarCliente(cliente); break; default: throw new ArgumentException("Opção inválida!"); } Console.Clear(); }
private static void Rotinas(User usuario, List <Opcao> opcoes, ClientService clienteService, FluxoDeAprovacaoService fluxoService) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"--- Seja bem vindo(a) {usuario.Name}! ---"); Console.ResetColor(); Console.Write("Perfils do usuário: "); var perfils = usuario .Roles .Select(p => p.ToString()); Console.WriteLine(String.Join(", ", perfils)); Console.WriteLine("\n"); if (usuario.Roles.Contains(ERoles.GERENCIA) || usuario.Roles.Contains(ERoles.CONTROLE_DE_RISCO) || usuario.Roles.Contains(ERoles.ADMINISTRACAO)) { IList <Client> clientesParaAprovar = clienteService.GetAllToApproveClients(usuario); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("-- Clientes para Aprovar --"); Console.ResetColor(); foreach (var cliente in clientesParaAprovar) { Console.WriteLine($"Id: {cliente.Id,5}\t\tNome: {cliente.Name,20}\t\tStatus: {cliente.CurrentStatus,10}\t\tInternacional: {cliente.IsInternacional,5}"); } } if (usuario.Roles.Contains(ERoles.OPERACAO) || usuario.Roles.Contains(ERoles.ADMINISTRACAO)) { IList <Client> clientesParaOperacao = clienteService.GetAllOperationClients(usuario); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("-- Clientes para Operação --"); Console.ResetColor(); foreach (var cliente in clientesParaOperacao) { Console.WriteLine($"Id: {cliente.Id,5}\t\tNome: {cliente.Name,20}\t\tStatus: {cliente.CurrentStatus,10}\t\tInternacional: {cliente.IsInternacional,5}"); } } Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("-- Clientes Finalizados --"); Console.ResetColor(); IList <Client> clientesFinalizados = clienteService.GetAllFinalizedClients(); foreach (var cliente in clientesFinalizados) { Console.WriteLine($"Id: {cliente.Id,5}\t\tNome: {cliente.Name,20}\t\tStatus: {cliente.CurrentStatus,10}\t\tInternacional: {cliente.IsInternacional,5}"); } Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\n-- Opções disponiveis --"); Console.ForegroundColor = ConsoleColor.Cyan; for (int i = 0; i < opcoes.Count; i++) { Opcao opcao = opcoes[i]; Console.WriteLine($"{i + 1} - {opcao.Descricao}"); } Console.ResetColor(); Console.WriteLine("\nEscolha uma opção:"); int.TryParse(Console.ReadLine(), out int indexEscolhido); if (indexEscolhido <= 0 || indexEscolhido - 1 > opcoes.Count - 1) { throw new ArgumentException("Opção inválida!"); } Opcao opcaoEscolhida = opcoes[indexEscolhido - 1]; if (opcaoEscolhida.Acao == Acoes.SAIR) { Environment.Exit(0); } else if (opcaoEscolhida.Acao == Acoes.CADASTRAR_NOVO_CLIENTE) { CadastrarCliente(usuario, clienteService); } else { EscolherAcao(opcaoEscolhida, usuario, clienteService, fluxoService); } }