示例#1
0
        /// <summary>
        /// Read and record the CPF of the position i client and returns true, or returns false if CPF already exists.
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <param name="clientIndex"></param>
        /// <returns></returns>
        private static bool ReadAndRecordCPF(string[,] clientsArray, int clientIndex)
        {
            string message = "Digite o CPF do Cliente:";

            while (true)
            {
                string cpf = MenuLib.ReadStringValue(message);
                if (cpf == "")
                {
                    return(false);
                }
                if (!Verifications.CPFValidation(cpf))
                {
                    MenuLib.PrintMessage("\nCPF inválido.\n\n" +
                                         "Digite um CPF válido ou pressione qualquer tecla para retornar ao Menu.");
                }
                else if (!Verifications.CPFAlreadyExists(clientsArray, cpf))
                {
                    MenuLib.PrintMessage("\nCPF já cadastrado no nosso banco de dados.\n\n" +
                                         "Pressione qualquer tecla para retornar ao Menu.");
                    Console.ReadKey();
                    return(false);
                }
                else
                {
                    clientsArray[clientIndex, 0] = cpf;
                    return(true);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Prints account number and balance.
        /// </summary>
        /// <param name="accountsArray"></param>
        /// <param name="accountIndex"></param>
        /// <param name="message"></param>
        public static void ConsultAccounts(decimal[,] accountsArray, decimal cpf)
        {
            MenuLib.PrintSubmenu("CONSULTANDO AS CONTAS");
            Console.WriteLine("Para o CPF informado ({0}), temos as seguintes contas:", ClientsLib.CPFFormat(CPFDecimalToString(cpf)));
            decimal totalBalance = 0;

            for (int i = 0; i < accountsArray.GetLength(0); i++)
            {
                if (accountsArray[i, 0] == cpf)
                {
                    PrintAccount(accountsArray, i);
                    totalBalance += accountsArray[i, 2];
                }
            }
            if (totalBalance != 0)
            {
                Console.WriteLine("\nO balanço total do cliente é: {0:C}\n\n" +
                                  "Digite qualquer tecla para retornar ao menu de contas.", totalBalance);
            }
            else
            {
                Console.WriteLine("O cliente não possui nenhuma conta cadastrada.");
            }
            Console.ReadKey();
        }
示例#3
0
        /// <summary>
        /// Based on CPF input deletes a client.
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <returns></returns>
        public static string[,] RemoveClient(string[,] clientsArray)
        {
            MenuLib.PrintSubmenu("REMOVER CLIENTE");
            int clientPosition = Verifications.ReadCPF(clientsArray, "Qual o CPF do cliente que deseja remover?");

            if (clientPosition != -1)
            {
                Console.Clear();
                PrintClient(clientsArray, clientPosition, "Cliente que será removido:");
                if (MenuLib.ConfirmationMenu("\nTem certeza que deseja deletar o cliente?"))
                {
                    if (clientsArray.GetLength(0) - 1 != clientPosition)
                    {
                        clientsArray = ArrayLib.SwapLines(clientsArray, clientPosition, clientsArray.GetLength(0) - 1);
                    }
                    clientsArray = ArrayLib.RemoveLast(clientsArray);
                    MenuLib.PrintMessage("\nO cliente foi deletado. Pressione ENTER para retornar ao menu principal:");
                    Console.ReadKey();
                    return(clientsArray);
                }
                MenuLib.PrintMessage("\nOperação cancelada.\n\n" +
                                     "Pressione ENTER para retornar ao menu principal:");
                Console.ReadKey();
            }
            return(clientsArray);
        }
示例#4
0
        /// <summary>
        /// Edits the name or the birth date of a client by searching for it with the CPF.
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <returns></returns>
        public static string[,] EditClient(string[,] clientsArray)
        {
            MenuLib.PrintSubmenu("EDITAR CLIENTE");
            int clientPosition = Verifications.ReadCPF(clientsArray, "Qual o CPF do cliente que deseja acessar?");

            if (clientPosition != -1)
            {
                string[] editMenu = new string[] { "Alterar o nome", "Alterar a data de nascimento", "Retornar ao menu principal" };
                MenuLib.PrintSubmenu("EDITAR CLIENTE");
                PrintClient(clientsArray, clientPosition, "Cliente a ser alterado:");
                MenuLib.PrintOptions(editMenu);
                string editMenuChoice = MenuLib.ReadOption(editMenu);
                switch (editMenuChoice)
                {
                case "Alterar o nome":
                    ReadAndRecordName(clientsArray, clientPosition, "Digite o novo nome para o cliente:");
                    break;

                case "Alterar a data de nascimento":
                    ReadAndRecordBirthDate(clientsArray, clientPosition, "Digite a nova data de nascimento:");
                    break;

                case "Retornar ao menu principal":
                    return(clientsArray);
                }
                Console.Clear();
                PrintClient(clientsArray, clientPosition, "Alteração bem sucedida!");
                MenuLib.PrintMessage("\nPressione ENTER para voltar ao menu principal:");
                Console.ReadKey();
            }
            return(clientsArray);
        }
示例#5
0
 /// <summary>
 /// Reads birth date, only accepts valid format. Keeps asking until valid format.
 /// </summary>
 /// <param name="clientsArray"></param>
 /// <param name="message"></param>
 /// <returns></returns>
 public static string ReadBirthDate(string[,] clientsArray, string message)
 {
     while (true)
     {
         string birthDateString = MenuLib.ReadStringValue(message);
         if (DateTime.TryParseExact(birthDateString, "dd/MM/yyyy", CultureInfo.InvariantCulture,
                                    DateTimeStyles.None, out DateTime birthDate))
         {
             return(birthDateString);
         }
         message = "A data digitada é inválida. Digite uma data no formato \"DD/MM/AAAA\":";
     }
 }
示例#6
0
        /// <summary>
        /// Consults a client and displays information
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <returns></returns>
        public static void ConsultClient(string[,] clientsArray)
        {
            MenuLib.PrintSubmenu("CONSULTAR CLIENTE");
            int clientPosition = Verifications.ReadCPF(clientsArray, "Qual o CPF do cliente que deseja consultar?");

            if (clientPosition != -1)
            {
                Console.Clear();
                PrintClient(clientsArray, clientPosition, "Dados do cliente:");
                MenuLib.PrintMessage("Pressione qualquer tecla para retornar ao menu principal.");
                Console.ReadKey();
            }
        }
示例#7
0
        /// <summary>
        /// Adds a new client.
        /// </summary>
        /// <param name="clientsArray">The string[,] that contains the clients.</param>
        /// <returns>The string[,] with all clients it had plus the added one, or not, if the CPF already existed.</returns>
        public static string[,] AddNewClient(string[,] clientsArray)
        {
            MenuLib.PrintSubmenu("ADICIONANDO NOVO CLIENTE");
            int i = clientsArray.GetLength(0);

            clientsArray = ArrayLib.AddOneLength(clientsArray);
            if (ReadAndRecordCPF(clientsArray, i))
            {
                ReadAndRecordName(clientsArray, i);
                clientsArray = ReadAndRecordBirthDate(clientsArray, i);
                return(clientsArray);
            }
            return(clientsArray);
        }
示例#8
0
 /// <summary>
 /// Adds a new account for the CPF input. Sets it's number to previous + 1 and balance to 50.
 /// </summary>
 /// <param name="accountsArray"></param>
 /// <param name="cpf"></param>
 /// <returns></returns>
 public static decimal[,] AddNewAccount(decimal[,] accountsArray, decimal cpf)
 {
     MenuLib.PrintSubmenu("CRIANDO NOVA CONTA");
     if (MenuLib.ConfirmationMenu("Tem certeza que deseja criar uma nova conta?", "Criar nova conta", "Cancelar"))
     {
         int newAccountPosition = accountsArray.GetLength(0);
         accountsArray = ArrayLib.AddOneLength(accountsArray);
         accountsArray[newAccountPosition, 0] = cpf;
         accountsArray[newAccountPosition, 1] = accountsArray[newAccountPosition - 1, 1] + 1;
         accountsArray[newAccountPosition, 2] = 50;
         PrintAccount(accountsArray, newAccountPosition, "\nA conta foi criada com sucesso! Confira:");
         MenuLib.PrintMessage("\nPressione qualquer tecla para retornar ao menu de contas.");
         Console.ReadKey();
     }
     return(accountsArray);
 }
示例#9
0
        /// <summary>
        /// Removes account from input cpf.
        /// </summary>
        /// <param name="accountsArray"></param>
        /// <param name="cpf"></param>
        /// <returns></returns>
        public static decimal[,] RemoveAccount(decimal[,] accountsArray, decimal cpf)
        {
            MenuLib.PrintSubmenu("REMOVER CONTA");
            int accountPosition = Verifications.ReadAccount(accountsArray, "Qual o número da conta a ser removida?");

            if (accountPosition != -1)
            {
                if (Verifications.IsAccountFromCPF(accountsArray, accountPosition, cpf))
                {
                    Console.Clear();
                    PrintAccount(accountsArray, accountPosition, "Conta que será removida:");
                    if (Verifications.IsAccountZeroed(accountsArray, accountPosition))
                    {
                        if (MenuLib.ConfirmationMenu("Tem certeza que deseja deletar a conta?"))
                        {
                            if (accountsArray.GetLength(0) - 1 != accountPosition)
                            {
                                accountsArray = ArrayLib.SwapLines(accountsArray, accountPosition, accountsArray.GetLength(0) - 1);
                            }
                            accountsArray = ArrayLib.RemoveLast(accountsArray);
                            MenuLib.PrintMessage("\nA conta foi deletada. Pressione ENTER para retornar ao menu de contas:");
                            Console.ReadKey();
                            return(accountsArray);
                        }
                        MenuLib.PrintMessage("\nOperação cancelada pelo usuário.\n\n" +
                                             "Pressione ENTER para retornar ao menu de contas:");
                        Console.ReadKey();
                    }
                    else
                    {
                        MenuLib.PrintMessage("\nA operação não pôde ser concluída pois há saldo na conta.\n" +
                                             "Primeiramente deve ser feito o saque de todo o saldo da conta.\n\n" +
                                             "Pressione ENTER para retornar ao menu de contas:");
                        Console.ReadKey();
                    }
                }
                else
                {
                    MenuLib.PrintMessage("A operação não pôde ser concluída pois a conta não pertence a este CPF.\n" +
                                         "Verifique o número da conta e do CPF digitados e tente novamente.\n\n" +
                                         "Pressione ENTER para retornar ao de contas:");
                    Console.ReadKey();
                }
            }
            return(accountsArray);
        }
示例#10
0
        /// <summary>
        /// read and record the birth date of the position i client
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <param name="clientIndex"></param>
        /// <param name="message"></param>
        private static string[,] ReadAndRecordBirthDate(string[,] clientsArray, int clientIndex, string message)
        {
            string birthDate = Verifications.ReadBirthDate(clientsArray, message);

            if (!Verifications.IsClientUnderage(birthDate))
            {
                clientsArray[clientIndex, 2] = birthDate;
                MenuLib.PrintMessage("Cliente adicionado com sucesso!\n" +
                                     "Pressione qualquer tecla para retornar ao Menu.");
                Console.ReadKey();
                return(clientsArray);
            }
            else
            {
                clientsArray = ArrayLib.RemoveLast(clientsArray);
                MenuLib.PrintMessage("O cliente não pôde ser cadastrado por ser menor de idade.\n" +
                                     "Operação cancelada. Digite qualquer tecla para retornar ao menu principal:");
                Console.ReadKey();
                return(clientsArray);
            }
        }
示例#11
0
 /// <summary>
 /// Reads account input, if found returns position on accountsArray, if not, keeps asking until
 /// valid input or 0 for exit.
 /// </summary>
 /// <param name="accountsArray"></param>
 /// <param name="message"></param>
 /// <returns></returns>
 public static int ReadAccount(decimal[,] accountsArray, string message)
 {
     while (true)
     {
         decimal target          = MenuLib.ReaddecimalValue(message);
         int     accountPosition = ArrayLib.Find_Ordinary(accountsArray, target, 1);
         if (accountPosition != -1)
         {
             return(accountPosition);
         }
         else
         {
             message = ("A conta digitada não foi encontrada.\n" +
                        "Digite uma conta válida ou entre com o valor 0 para voltar ao menu principal:");
             target = MenuLib.ReaddecimalValue(message);
             if (target == 0)
             {
                 return(-1);
             }
         }
     }
 }
示例#12
0
        /// <summary>
        /// Displays a message than reads CPF input.
        /// If it is found in the clienrsArray, returns the position,
        /// if not, keeps asking for another valid input, unless user types "" to leave.
        /// </summary>
        /// <param name="clientsArray"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public static int ReadCPF(string[,] clientsArray, string message)
        {
            string target = MenuLib.ReadStringValue(message);

            while (true)
            {
                int i = ArrayLib.Find_Ordinary(clientsArray, target, 0);
                if (i != -1)
                {
                    return(i);
                }
                else
                {
                    target = MenuLib.ReadStringValue("O CPF digitado não foi encontrado.\n" +
                                                     "Digite um CPF válido ou tecle ENTER para voltar ao menu principal:");
                    if (target == "")
                    {
                        return(-1);
                    }
                }
            }
        }
示例#13
0
 /// <summary>
 /// Prints a message and account number + account balance.
 /// </summary>
 /// <param name="accountsArray"></param>
 /// <param name="accountIndex"></param>
 /// <param name="message"></param>
 public static void PrintAccount(decimal[,] accountsArray, int accountIndex, string message)
 {
     MenuLib.PrintMessage(message);
     Console.WriteLine("\nNúmero da conta: {0}\nSaldo da conta: {1:C}",
                       accountsArray[accountIndex, 1], accountsArray[accountIndex, 2]);
 }
示例#14
0
 /// <summary>
 /// Read and record the name of the position i client.
 /// </summary>
 /// <param name="clientsArray"></param>
 /// <param name="clientIndex"></param>
 /// <param name="message"></param>
 private static void ReadAndRecordName(string[,] clientsArray, int clientIndex, string message)
 {
     clientsArray[clientIndex, 1] = MenuLib.ReadStringValue(message);
 }
示例#15
0
 /// <summary>
 /// Prints a message and then the client data.
 /// </summary>
 /// <param name="clientArray"></param>
 /// <param name="clientIndex"></param>
 /// <param name="message"></param>
 public static void PrintClient(string[,] clientArray, int clientIndex, string message)
 {
     MenuLib.PrintMessage(message);
     Console.WriteLine("\nNome: {0}\nCPF: {1}\nData de Nascimento: {2}",
                       clientArray[clientIndex, 1], CPFFormat(clientArray[clientIndex, 0]), clientArray[clientIndex, 2]);
 }